2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки


Правила форума


В этом разделе нельзя создавать новые темы.

Если Вы хотите задать новый вопрос, то не дописывайте его в существующую тему, а создайте новую в корневом разделе "Помогите решить/разобраться (М)".

Если Вы зададите новый вопрос в существующей теме, то в случае нарушения оформления или других правил форума Ваше сообщение и все ответы на него могут быть удалены без предупреждения.

Не ищите на этом форуме халяву, правила запрещают участникам публиковать готовые решения стандартных учебных задач. Автор вопроса обязан привести свои попытки решения и указать конкретные затруднения.

Обязательно просмотрите тему Правила данного раздела, иначе Ваша тема может быть удалена или перемещена в Карантин, а Вы так и не узнаете, почему.



Начать новую тему Ответить на тему
 
 соединить n точек на плоскости
Сообщение27.05.2012, 16:01 


01/04/12
107
И где бы ты ни был
Заданы $n$ точек на плоскости. (то есть известны расстояния между каждыми двумя точками) Задача состоит в том, чтобы построить самую короткую сеть на этих с точками в вершинах.

Часто указывают такой способ (его называют "экономичным деревом"), опишу его как понял (подскажите, если где ошибся). Сначала соединяем две точки с минимальным между ними расстоянием. Потом одну из этих точек соединяем с другой, до какой расстояние минимальное. Если равнозначные возможности, то выбираем любую. И так столько шагов, сколько понадобиться чтобы соединить все $n$ точек.

Действительно ли этот метод работает? Мне он кажется очень простым и легким для алгоритмизации. Чем же он отличается от задачи коммивояжера и прочих трудных?

 Профиль  
                  
 
 Re: соединить n точек на плоскости
Сообщение27.05.2012, 16:04 


28/11/11
2884
По-моему, по этому пути работает алгоритм Крускала.

-- 27.05.2012, 16:51 --

Но это, насколько я знаю, жадный алгоритм. Так что я не знаю, всегда ли этот алгоритм даёт самое короткое соединение.

 Профиль  
                  
 
 Re: соединить n точек на плоскости
Сообщение27.05.2012, 17:27 


26/05/12
108
Минск, Беларусь
Алгоритм Прима-Краскала всегда даёт наименьшее остовное дерево...

-- 27.05.2012, 18:00 --

Краскал найдёт дерево, т. е. будут всяческие "перекрёстки", не факт, что началом пути будет этот город, да и путь обратно он не найдёт...

 Профиль  
                  
 
 Re: соединить n точек на плоскости
Сообщение27.05.2012, 19:11 


01/04/12
107
И где бы ты ни был
Tanechka в сообщении #577226 писал(а):
не факт, что началом пути будет этот город

А алгоритм Дейкстры позволит находить наикратчайший путь, начиная с заданного города (вершины)?

 Профиль  
                  
 
 Re: соединить n точек на плоскости
Сообщение27.05.2012, 21:33 


26/05/12
108
Минск, Беларусь
Это и есть задача этого алгоритма - находить кратчайший путь от данного города до всех.

-- 27.05.2012, 22:05 --

Но не факт, что этот путь будет проложен через все вершины.

 Профиль  
                  
 
 Re: соединить n точек на плоскости
Сообщение27.05.2012, 21:44 


15/04/12
175
что такое "сеть" в твоем понимании?

 Профиль  
                  
 
 Re: соединить n точек на плоскости
Сообщение27.05.2012, 22:48 


01/04/12
107
И где бы ты ни был
Ну, соединительный путь. А в теории графов, я не знаю, термин "сеть" как-то зарезервирован?

 Профиль  
                  
 
 Re: соединить n точек на плоскости
Сообщение27.05.2012, 22:56 
Админ форума
Аватара пользователя


19/03/10
8952
 ! 
dikiy в сообщении #577401 писал(а):
что такое "сеть" в твоем понимании?
dikiy, строгое предупреждение за фамильярность.
Таким образом, за это нарушение у Вас уже есть замечание, предупреждение и строгое предупреждение. Надеюсь, у Вас хватит проницательности, чтобы догадаться, какие меры воздействия последуют в случае очередного рецидива.

 Профиль  
                  
 
 Re: соединить n точек на плоскости
Сообщение27.05.2012, 23:39 


15/04/12
175
A'Y в сообщении #577427 писал(а):
Ну, соединительный путь. А в теории графов, я не знаю, термин "сеть" как-то зарезервирован?


тогда это является минимальным деревом. Оно строится за логарифмическое время от количества узлов (или ребер) (что удобнее) графа. Если не применять оптимизаций, то будет линейное время. Алгоритм Крускала или Прима.

 Профиль  
                  
 
 Re: соединить n точек на плоскости
Сообщение27.05.2012, 23:59 


28/11/11
2884
То есть, минимальное оставное дерево всегда можно найти за полиномиальное время.

 Профиль  
                  
 
 Re: соединить n точек на плоскости
Сообщение28.05.2012, 00:02 


15/04/12
175
если обобщая то да, за полиномиальное. А точнее, то за линейное.

 Профиль  
                  
 
 Re: соединить n точек на плоскости
Сообщение28.05.2012, 00:07 


28/11/11
2884
Существуют ли алгоритм (пусть даже дающий приближённое к минимальному решение) вычисляющий для заданных координат $n$ точек координаты нужных для кратчайшего соединения точек Штейнера?

 Профиль  
                  
 
 Re: соединить n точек на плоскости
Сообщение28.05.2012, 17:46 


26/05/12
108
Минск, Беларусь
longstreet в сообщении #577451 писал(а):
То есть, минимальное оставное дерево всегда можно найти за полиномиальное время.

Да... или за квадрат, или (если
longstreet в сообщении #577454 писал(а):
Существуют ли алгоритм (пусть даже дающий приближённое к минимальному решение) вычисляющий для заданных координат точек координаты нужных для кратчайшего соединения точек Штейнера?

Алгоритм Мелзака... но он экспонециальный...
Если хотите быстро, но никакой гарантии того, что он кратчайший вам не надо - пишите обычный перебор, типа метода ветвей и границ.

 Профиль  
                  
 
 Re: соединить n точек на плоскости
Сообщение28.05.2012, 23:34 


01/04/12
107
И где бы ты ни был
А метод ветвей и границ насколько хорош? Можно ли процентно оценить его отличие от идеального?

 Профиль  
                  
 
 Re: соединить n точек на плоскости
Сообщение29.05.2012, 19:14 


26/05/12
108
Минск, Беларусь
A'Y, всё смешалось в кучу.
Если вы про минимальное остовное дерево, то его можно найти за квадрат, а при использовании куч - за v*log(v).
Если вы про точки Штейнера - то тут я не помощник, сама бы я писала перебор с отсевом (читай метод ветвей и границ)... я никогда не занималась этим вопросом, поэтому знаю его поверхностно.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 15 ] 

Модераторы: Модераторы Математики, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group