powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Алгоритм обхода точек на плоскости за минимальное время
25 сообщений из 63, страница 2 из 3
Алгоритм обхода точек на плоскости за минимальное время
    #38337673
ДохтаР
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White OwlСоколинский БорисЭто задача реального времени, на весь алгоритм дается 1-2 секунды, не больше.
Поэтому варианты с O(N!) отбрасываются сразу.Ну тогда используй приближенное решение. Одно из самых оптимальных ты уже сам почти угадал в начале этого топика.
1) От старта найти ближайшую точку, сдвинуться,
2) Найти ближайшую не посещенную, сдвинуться
3) Если точки кончились выйти, иначе повторить шаг 2
Получишь O(n^2).
Результат может быть конечно не самым оптимальным, но чтобы это доказать понадобиться перебрать все возможные пути - O(n!). Так что можешь смело посылать всех сомневающихся в оптимальности результата :)
NP проблема это не шутки.

Если на кажом шаге выбирать в качествеперовй точки , ту у которой расстоняние
до цели кратчайшее , то можно очень хорошо с оптимизировать .
Но для этого прежде чем идти нужно просматривать на 1 ход вперед, сортировать
и идти по верхнему в сортировке.

ТС , не туда вопрос задал , ему нужно было ити на сайт гейм-девов , там бы в первом ответе такой вариант предложили.
...
Рейтинг: 0 / 0
Алгоритм обхода точек на плоскости за минимальное время
    #38337678
ДохтаР
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДохтаРСоколинский Бориспропущено...

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




Создать матрицу, заполнить нулями, отметить точки
Соколинский Борис и стартовая точка


значнием 1.


Самый короткий маршрут ( по диагонали ) отметить значениями -1 .

Найти самые близлежащие точки со значением 1 от почти линии отмеченной точками -1.


----------
мой блог

А это решение
оптимизируется в поиск перечечения значений в 2-х массивах.
...
Рейтинг: 0 / 0
Алгоритм обхода точек на плоскости за минимальное время
    #38337779
Соколинский Борис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДохтаРА это решение оптимизируется в поиск перечечения значений в 2-х массивах.
Непонятно, как это решение можно приспособить к условиям задачи, а именно - вещественным координатам и произвольным расположением стартовой точки.
Если я правильно понял идею, от стартовой точки нужно строить лучи во всех направлениях и искать такой, где сумма расстояний от всех точек массива до линии будет минимальной?
...
Рейтинг: 0 / 0
Алгоритм обхода точек на плоскости за минимальное время
    #38337837
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Соколинский Борис,

если задача жизненая (т.е. все точки и пути заданы), то всегда есть дополнительная информация и задачу можно решить качественно
если нет, то надо придумать алгоритм, который не вляпяеся лицом в грязь при граничных услвиях (обычно в ближайшей окрестности точки есть хотя бы одна нетиповая точка, которая убивает жадный алгоритм)
...
Рейтинг: 0 / 0
Алгоритм обхода точек на плоскости за минимальное время
    #38337865
Соколинский Борис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OK, я обрисую задачу как она ставится:
Имеется некоторая условно плоская "карта" (к ГИС никакого отношения не имеет). На карте сканируется некоторая область (обычно прямоугольная, но не всегда) на низком разрешении в поисках интересующих объектов. При нахождении объекта запоминаются его координаты. При обнаружении заданного числа объектов (порядка 100-1000) скан останавливается, точка остановки может быть в любом месте.
Далее нужно сфотографировать найденные объекты уже на большом разрешении - т.е. переключить режим съемки и от точки остановки обойти все сохраненные.
Задача должна выполняться в реальном времени, на весь алгоритм отводится не более 2 секунд.

Собственно, интересуют алгоритмы с вычислительной сложностью не более O(N 3 ).
Допустим можно взять метод ближайшего соседа как базовый и за O(N) итераций его улучшать.
...
Рейтинг: 0 / 0
Алгоритм обхода точек на плоскости за минимальное время
    #38337867
BagaBaga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Соколинский Борис ,
тебе уже подсказали - задача NP-полная, и в худшем случае сваливается в полный перебор. Так что можешь посмотреть задачи на нахождение гамильтонова цикла (в первую очередь), или задачку о ходе коня (только твой "конь" будет ходить не по шахматным правилам, а по твоим). Правда, конь ищет любой обход, а не "самый дешёвый". Любая оптимизация сводится к рассмотрению "самых хороших" вариантов "в первую очередь", и в "нерассмотрении" заведомо худших вариантов (если новый частичный путь "дороже-длиннее" уже просмотренного ранее, то его и всех "его потомков" можно сразу отбросить из рассмотрения при обходе дерева решения). Посмотри любую книжку по САОДу, в общем.
...
Рейтинг: 0 / 0
Алгоритм обхода точек на плоскости за минимальное время
    #38337868
BagaBaga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Соколинский Борис,

тогда тебе нужно смотреть задачу о почтальене (она же задача коммивояжера). Причём, эта постановка применима только после "как найдено нужное число интересных объектов". Т.к. поисх (без доп. критериев) в любом случае придёся вести "сквозь", т.е. за линейное время.
...
Рейтинг: 0 / 0
Алгоритм обхода точек на плоскости за минимальное время
    #38337870
Соколинский Борис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я прошу прощения, совсем не в теме, и подобными задачами никогда не занимался. Посоветуйте, пожалуйста, что-то более конкретное, где относительно простым языком задача описана.
...
Рейтинг: 0 / 0
Алгоритм обхода точек на плоскости за минимальное время
    #38337871
Соколинский Борис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BagaBagaтогда тебе нужно смотреть задачу о почтальене (она же задача коммивояжера). Это я уже понял, спасибо White Owl и Вам за наводку. Пока не могу хорошего решения найти (см. переписку выше).
...
Рейтинг: 0 / 0
Алгоритм обхода точек на плоскости за минимальное время
    #38337873
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Соколинский Борис,

то что ты описал ничего общего не имеет с твоей постановкой
это скорее поиск кластеров (раковой опухоли, группировку войск, населенных пунктов и т.д.)
долже быт быстрый скан для выявление очертаний кластеров
выбор подозрительных кластеров
анализ подозрительных для уточнения размеров по заданному критерию
...
Рейтинг: 0 / 0
Алгоритм обхода точек на плоскости за минимальное время
    #38337874
Соколинский Борис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosСоколинский Борис,
то что ты описал ничего общего не имеет с твоей постановкой
это скорее поиск кластеров (раковой опухоли, группировку войск, населенных пунктов и т.д.)
долже быт быстрый скан для выявление очертаний кластеров
выбор подозрительных кластеров
анализ подозрительных для уточнения размеров по заданному критерию
Это все уже реализовано. Нужен именно повторный проход. Менять разрешение на лету очень накладно, сканировать сразу на большом - очень долго.
...
Рейтинг: 0 / 0
Алгоритм обхода точек на плоскости за минимальное время
    #38337875
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Соколинский Борис,

прооходо много там
и каждый проход решает свои задачи
указанный тобой проекция модели в заданном проходе может быть некачественной
задачу надо в комплексе (тарелочку с с голубой коемкой не забудь прилоить :))
...
Рейтинг: 0 / 0
Алгоритм обхода точек на плоскости за минимальное время
    #38337922
Фотография Малыхин Сергей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
первый вариант индексируем все множество точек (к мерное дерево kD-tree )
второй вариант триангуляцией получаем ближайшие точки и из них уже выбираем простым перебором
...
Рейтинг: 0 / 0
Алгоритм обхода точек на плоскости за минимальное время
    #38338254
ДохтаР
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Соколинский БорисViPRosСоколинский Борис,
то что ты описал ничего общего не имеет с твоей постановкой
это скорее поиск кластеров (раковой опухоли, группировку войск, населенных пунктов и т.д.)
долже быт быстрый скан для выявление очертаний кластеров
выбор подозрительных кластеров
анализ подозрительных для уточнения размеров по заданному критерию
Это все уже реализовано. Нужен именно повторный проход. Менять разрешение на лету очень накладно, сканировать сразу на большом - очень долго.


Похоже на вашу задачу ?

Попробуйте эти выкладки применить к созданию алгоритма
...
Рейтинг: 0 / 0
Алгоритм обхода точек на плоскости за минимальное время
    #38338292
Соколинский Борис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Совсем не похоже. Насчет многомерной оптимизации я как-раз в теме...
...
Рейтинг: 0 / 0
Алгоритм обхода точек на плоскости за минимальное время
    #38338461
BagaBaga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Соколинский Борис,
без "стоимости сканирования" ничего более конкретного предложить нельзя. Можно только исходить из "общих соображений" и использовать какой-нибудь жадный алгоритм или эавристику (даст не гарантированно лучшее решение, но за "известное" время).

Очевидно (использую это слово, т.к. разумно обосновать не могу), что самый неоптимальный алгоритм - шарахаться из конца в конец.
Начинаем думать: если стоимость по одной "координате" серьёзно доминирует, то рассматривать при оптимизации нужно её (по аналогии с перемещением сканирующей головки, но я ведь не знаю "тип головки" и накладные расходы - поэтому беру "с потолка").

Тогда: набрав нужную "кучку для анализа" сортировал бы их по этой компоненте. Если объекты "по вертикали" не пересекаются, самым дешёвым будет их последовательное сканирование (предполагая, что "натуральным" для сканеря является последовательный непрерывный обход) с воответствии с отсортированным списком (алгоритм сортировки выбирайте сами - со сложностью от O(N) для цифровой сортировки до O(N^2) в старом-добром пузырьке. И не забывайте, что стоимость быстрой сортировке O(N^2) _в_худшем случае_ - просто любят её почему-то где не поподя).

Итак, пусть - в общем случае - пересекаются. Тогда есть несколько решений: разделить на "непересекающиеся" линии и отсканировать отдельно: не мучаться с разбиением на "очереди" и сканировать в уже определённом порядке; объединить их в "один кусок с общими наибольшими границами" и потом вырезать из сканированного. Но сделать выбор ни один алгоритм не сможет, не зная "стоимости" позиционирования и "отката сканирующей головки назад" (может оказаться, что "вперёд" позиционирование происходит быстрее, чем "назад", и тогда выгоднее делать поменьше "ходов назад").
...
Рейтинг: 0 / 0
Алгоритм обхода точек на плоскости за минимальное время
    #38338532
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Соколинский БорисДжентльмены (и дамы, конечно), есть небольшая задачка:
Имеется массив точек на плоскости и стартовая точка
Задача с точками на плоскости имеет более явно выраженную пространственную когерентность
нежели абстрактный граф. Могу предположить что для любого N порядка 100000 и более человек
визуально решает эту задачу весьма эффективно. Отсюда как-бы вытекает идея оптимизации
исходя из близости точек на плоскости. Для простоты плоскость можно побить на прямоугольники
и решить коммивояжёр для каждого прямоугольника (это позволить понизить экспоненциальную
сложность алгоритма) а потом все прямоугольники просто обойти в декартовом порядке
"змейкой" или "кривой гилберта".
...
Рейтинг: 0 / 0
Алгоритм обхода точек на плоскости за минимальное время
    #38338659
Inkelyad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ключевые слова Euclidean traveling salesman problem
Готовый алгоритм по приближенному вычислению тут . Если я правильно понимаю, просмотрев статью по диагонали, то сложность алгоритма n^(2.2).
...
Рейтинг: 0 / 0
Алгоритм обхода точек на плоскости за минимальное время
    #38338833
ДохтаР
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonСоколинский БорисДжентльмены (и дамы, конечно), есть небольшая задачка:
Имеется массив точек на плоскости и стартовая точка
Задача с точками на плоскости имеет более явно выраженную пространственную когерентность
нежели абстрактный граф. Могу предположить что для любого N порядка 100000 и более человек
визуально решает эту задачу весьма эффективно. Отсюда как-бы вытекает идея оптимизации
исходя из близости точек на плоскости. Для простоты плоскость можно побить на прямоугольники
и решить коммивояжёр для каждого прямоугольника (это позволить понизить экспоненциальную
сложность алгоритма) а потом все прямоугольники просто обойти в декартовом порядке
"змейкой" или "кривой гилберта".



За десятки, а может и сотни тысяч лет эволюции
Человеческий мозг на уровне бессознательного микрокода( подсознательно) умеет это считать :

http://ru.wikipedia.org/wiki/Конечные_разности


Змейки и кривые гилберта - частные случаи .

Соколинский БорисЕсли я правильно понял идею, от стартовой точки нужно строить лучи во всех направлениях и искать такой, где сумма расстояний от всех точек массива до линии будет минимальной?


В общем абстрактном случае это выход на
http://ru.wikipedia.org/wiki/Метод_конечных_разностей


Насколько я понимаю, следующая задача которая будет стоять перед ТС
Соколинский БорисДалее нужно сфотографировать найденные объекты уже на большом разрешении - т.е. переключить режим съемки и от точки остановки обойти все сохраненные.
Задача должна выполняться в реальном времени, на весь алгоритм отводится не более 2 секунд.


Вовремя обнаружить, что углубление в большее разрешение
должно иметь свой предел по
http://ru.wikipedia.org/wiki/Теория_приближений
и
http://ru.wikipedia.org/wiki/Модуль_непрерывности

То есть нужно как то параметризовать время( производительность) <-> качество .
...
Рейтинг: 0 / 0
Алгоритм обхода точек на плоскости за минимальное время
    #38338855
Соколинский Борис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Inkelyad,
спасибо, уже читаю.
...
Рейтинг: 0 / 0
Алгоритм обхода точек на плоскости за минимальное время
    #38338883
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДохтаР, док спасибо за ссылки. Добавлю в мемориз.
...
Рейтинг: 0 / 0
Алгоритм обхода точек на плоскости за минимальное время
    #38338898
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Соколинский БорисInkelyad,
спасибо, уже читаю.
да не читай ничего
нифига там не написано, бла бла все это
...
Рейтинг: 0 / 0
Алгоритм обхода точек на плоскости за минимальное время
    #38338908
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я еще не вкурил эти методы разностей и прочее но думаю что
если априори нам известны координаты кластеров и их границы
то и обход точек мы также можем эффективно соптимизировать.
Ну.. конечно если расчёт центров кластеров не будет сложнее
чем основной метод .
...
Рейтинг: 0 / 0
Алгоритм обхода точек на плоскости за минимальное время
    #38338926
ДохтаР
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonЯ еще не вкурил эти методы разностей и прочее но думаю что
если априори нам известны координаты кластеров и их границы
то и обход точек мы также можем эффективно соптимизировать.
Ну.. конечно если расчёт центров кластеров не будет сложнее
чем основной метод .

Отсюда можно начать достаточно (не) точные
приближенные вычисления в некой системе координат

что бы в пустую не ганять процессор и память , а перейти к оперированию элементарными
геометрическими функциями и коэфициентами.
...
Рейтинг: 0 / 0
Алгоритм обхода точек на плоскости за минимальное время
    #38338947
Inkelyad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Соколинский БорисInkelyad,
спасибо, уже читаю.
Да, вот вообще книжка по теме: Euclidean Shortest Paths: Exact or Approximate Algorithms
Электронная версия довольно быстро гулится. Но в ней ~350 страниц.
...
Рейтинг: 0 / 0
25 сообщений из 63, страница 2 из 3
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Алгоритм обхода точек на плоскости за минимальное время
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]