Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ А есть ли решение?

Автор: I love Prolog =) 27.06.2003 20:43

Здравствуйте!В последнее время я все чаще задумываюсь о проблеме "בלתי סבירות"(прошу прощения,но я просто не знаю как сказать это на русском,поэтому я объясню).
Это проблема скорей всего известна всем.Допустим у нас есть город,в нем обозначем несколько мест(достопримечательности,например).Нужно найти самый короткий путь,начинающийся и заканчивающийся от ворот города, при условии,что нужно пройтись по всем достопремечательностям.
Возможное решение,это нахождение всех возможных путей,которые начинаются и заканчиваются у ворот города и проходят через каждую достопремечательность один раз.Проблема кажется легкой при условии,что число достопремечательностей не очень большое(точнее очень даже маленьекое =) )
Как известно,если у нас  n точек,то есть (n-1)! вариантов возможных путей,проходящих через все точки и возращающийхся в начальную точку.Время требеющееся для нахождения самого короткого пути для шести точек - 8 милисекунд.Казалось бы пустяковое время,а теперь посмотрите на следующие данные -



Число точек,Число путей,Время

6,120,8 мс
11,362880,3.5 с
13,479001600,8 мин
21,2.43*10 в степени 18,77000 лет



Так что скажите уважаемые посетители форума?Возможно ли найти решение этой проблемы?Кстати,есть множество таких проблем,на которые решение не найдены,если конечно не считать те решения,которые приемлемы только для маленьких значений данных.]

Автор: Andrey 27.06.2003 23:32

Была у мя на чемпе подобная задача..дано несколько чисел..там не более шести кажется...и сколькими различными транспозициями их можно сортануть...
ну аналог твоей в принципе..для пяти их было 720.
написав бестолковую рекурсию по времени уложились..

Автор: Morpheus 29.06.2003 9:09

Это случайно не задача комиваяжора?? Если да, то быстры решений нет... Но есть алгоритмы, которые могут там тебе чо-то ускорить... Поищи на algolist.manual.ru. Мож на шо и наткнешся...