Re: Оптимальный (минимальный) путь.
От: Sinclair Россия https://github.com/evilguest/
Дата: 24.04.02 10:55
Оценка:
Здравствуйте fAX, Вы писали:

fAX>Нужен алгоритм.

fAX>Вход — двухмерный массив точек.
fAX>Выход — порядок обхода этих точек, исходя из следующих критериев:
fAX>
fAX>Самое непонятное тут, как изначально организовать точки. Если какой-нибудь алгоритм (Форда, если не ошибаюсь) из теории графов для нахождения минимальных расстояний между всеми точками, то ему нужно O(n^3), а при входе O(10^5) это очень дорого, но в крайнем случае, подойдёт. Кроме того, как эффективно построить граф из массива точек.


fAX>Какие-то идеи?

Точно говорю — должен быть человеческий алгоритим. Уж больно норма красивая. Так сходу в голову ничего не приходит, но попробую покумекать.
Чтобы обнадежить, могу рассказать байку про стандартную задачку, которую дают в НГУ математикам первого курса: дано множество точек на плоскости, надо построить окружность минимального радиуса, которая покрывает их все.
Классический подход: берем тройку точек, проводим окружность через них (очевидно, что искомая окружность будет проходить как минимум через три точки множества), проверяем, все ли внутри. полный перебор. Время работы ~N^4. Решения проверялисm на множествах в ~100 точек.
Мой друг, помогая человеку получить построил алгоритм, время работы которого ~N^N. Проверяли на множестве в 16000 точек.
Мораль: не все печальные теоремы бывают применимы в частном случае.В конкретной задаче могут найтись удачные ограничения, и решение будет намного эффективнее общего.
fAX>Заранее спасибо,
fAX>fAX.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.