powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Алгоритм обхода точек на плоскости за минимальное время
63 сообщений из 63, показаны все 3 страниц
Алгоритм обхода точек на плоскости за минимальное время
    #38337433
Соколинский Борис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Джентльмены (и дамы, конечно), есть небольшая задачка:
Имеется массив точек на плоскости и стартовая точка
...
Рейтинг: 0 / 0
Алгоритм обхода точек на плоскости за минимальное время
    #38337436
Соколинский Борис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пардон, рука дернулась.
Задача:
Составить алгоритм обхода всех точек за минимальное время. Скорость движения можно считать постоянной, так что задача сводится к минимизации пройденного расстояния. Есть два варианта движения - одновременно по двум координатам и поочередно.

Пока в голову приходит простой алгоритм - упорядочить точки в порядке убывания расстояний от предыдущей.
Может, есть что-то эффективнее?
...
Рейтинг: 0 / 0
Алгоритм обхода точек на плоскости за минимальное время
    #38337439
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Соколинский БорисЕсть два варианта движения - одновременно по двум координатам и поочередно.Вот тут чуть подробнее. "одновременно по двум координатам" - с разной скоростью по каждой из координат или с одинаковой?
...
Рейтинг: 0 / 0
Алгоритм обхода точек на плоскости за минимальное время
    #38337442
Соколинский Борис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoft,
В первом приближении считаем одинаковой.
...
Рейтинг: 0 / 0
Алгоритм обхода точек на плоскости за минимальное время
    #38337444
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Соедини все точки. Получишь граф. А потом берешь алгортим Дейкстры и задача решена.
...
Рейтинг: 0 / 0
Алгоритм обхода точек на плоскости за минимальное время
    #38337447
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а не, чего-то я читаю не тем глазом....
Тут не Дейкстра нужен, а http://ru.wikipedia.org/wiki/Задача_коммивояжёра
...
Рейтинг: 0 / 0
Алгоритм обхода точек на плоскости за минимальное время
    #38337455
Соколинский Борис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl,
Нутром чувствовал, что надо в логистику копать.
Тут нет требования возврата в исходную точку, наверное первый алгоритм более подходящий. Я, по сути, его и имел в голове.
...
Рейтинг: 0 / 0
Алгоритм обхода точек на плоскости за минимальное время
    #38337478
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Соколинский Борис,

N сильно велико? если прямым перебором, то получается порядка N! вариантов
...
Рейтинг: 0 / 0
Алгоритм обхода точек на плоскости за минимальное время
    #38337486
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Соколинский Борисmiksoft,
В первом приближении считаем одинаковой.Т.е. так?
...
Рейтинг: 0 / 0
Алгоритм обхода точек на плоскости за минимальное время
    #38337491
Соколинский Борис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftN сильно велико? если прямым перебором, то получается порядка N! вариантов
Не особо, 100-1000.

miksoftТ.е. так?
Да, именно. Одновременно двигаемся по двум направлениям пока не попадем в одну координату, потом до оставшейся.
...
Рейтинг: 0 / 0
Алгоритм обхода точек на плоскости за минимальное время
    #38337495
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Соколинский БорисmiksoftN сильно велико? если прямым перебором, то получается порядка N! вариантов
Не особо, 100-1000.Это много, прямым перебором уже не решается :(

А что нибудь известно о характере расположения точек? Они как-то группируются? Или, например, равномерно разбросаны по квадрату? Или еще что-то?
...
Рейтинг: 0 / 0
Алгоритм обхода точек на плоскости за минимальное время
    #38337501
Соколинский Борис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftЭто много, прямым перебором уже не решается :(
Почему?
Тут на N!, а N*(N-1)/2 итераций, мелочь, в общем...

miksoftА что нибудь известно о характере расположения точек? Они как-то группируются? Или, например, равномерно разбросаны по квадрату? Заранее ничего не известно.
...
Рейтинг: 0 / 0
Алгоритм обхода точек на плоскости за минимальное время
    #38337521
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Соколинский БорисmiksoftЭто много, прямым перебором уже не решается :(
Почему?
Тут на N!, а N*(N-1)/2 итераций, мелочь, в общем...N*(N-1)/2 - это отрезков, которые соединяют точки.
А из них еще нужно путь собрать.
...
Рейтинг: 0 / 0
Алгоритм обхода точек на плоскости за минимальное время
    #38337530
Соколинский Борис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет, это при последовательном построении: выбираем первую, вторую и т.д. N! это все возможные варианты, понятно что тупым перебором не получится.
...
Рейтинг: 0 / 0
Алгоритм обхода точек на плоскости за минимальное время
    #38337540
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Соколинский БорисНет, это при последовательном построении: выбираем первую, вторую и т.д. N! это все возможные варианты, понятно что тупым перебором не получится.Ну почему-же "не получится"? Как раз только тупым перебором и может получиться.
...
Рейтинг: 0 / 0
Алгоритм обхода точек на плоскости за минимальное время
    #38337557
Соколинский Борис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White OwlНу почему-же "не получится"? Как раз только тупым перебором и может получиться.
Вообще все перебирать слишком долго. Можно, наверное, группировать точки на блоки близкорасположеных, потом оптимизировать обход блоков а затем расставлять внутри блока.
...
Рейтинг: 0 / 0
Алгоритм обхода точек на плоскости за минимальное время
    #38337628
ДохтаР
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Соколинский БорисWhite OwlНу почему-же "не получится"? Как раз только тупым перебором и может получиться.
Вообще все перебирать слишком долго. Можно, наверное, группировать точки на блоки близкорасположеных, потом оптимизировать обход блоков а затем расставлять внутри блока.




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


значнием 1.


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

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


----------
мой блог
...
Рейтинг: 0 / 0
Алгоритм обхода точек на плоскости за минимальное время
    #38337636
Фотография Малыхин Сергей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Соколинский БорисНет, это при последовательном построении: выбираем первую, вторую и т.д. N! это все возможные варианты, понятно что тупым перебором не получится.
NP полная задача естественно в лоб не решается =)
нужно приближенное решение
...
Рейтинг: 0 / 0
Алгоритм обхода точек на плоскости за минимальное время
    #38337641
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Соколинский БорисWhite OwlНу почему-же "не получится"? Как раз только тупым перебором и может получиться.
Вообще все перебирать слишком долго. Можно, наверное, группировать точки на блоки близкорасположеных, потом оптимизировать обход блоков а затем расставлять внутри блока.Ну я тебе уже ткнул пальцем. Задача коммивояжера описана в куче литературы. То что у тебя путь не замкнут это все-го лишь частный вариант основной задачи.

В принципе, незамкнутый путь по всем вершинам графа имеет собственное название: Hamiltonian Path. Можешь поискать литературу по этому названию. Хотя оно тебе не много даст. На полном графе всегда можно нарисовать путь через все вершины, так что классические алгоритмы по поиску возможного пути которые быстрее чем O(n!) тебе не подойдут. Потому что тебе придется найти минимальный из всех путей, а этих путей на полном графе n!.
...
Рейтинг: 0 / 0
Алгоритм обхода точек на плоскости за минимальное время
    #38337644
Фотография Малыхин Сергей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
имхо: вроде R-дерево строят для нахождения минимальных расстояний в координатах
...
Рейтинг: 0 / 0
Алгоритм обхода точек на плоскости за минимальное время
    #38337649
Соколинский Борис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White OwlНу я тебе уже ткнул пальцем. [/quot]Я прочитал, методов решений хороших пока не нашел.
Это задача реального времени, на весь алгоритм дается 1-2 секунды, не больше.
Поэтому варианты с O(N!) отбрасываются сразу.
...
Рейтинг: 0 / 0
Алгоритм обхода точек на плоскости за минимальное время
    #38337651
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Малыхин Сергейимхо: вроде R-дерево строят для нахождения минимальных расстояний в координатахНет. R-tree это решение другой задачи. Есть граф, найди кратчайший путь между двумя вершинами. Нет требования обхода всех вершин.
...
Рейтинг: 0 / 0
Алгоритм обхода точек на плоскости за минимальное время
    #38337653
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Соколинский БорисЭто задача реального времени, на весь алгоритм дается 1-2 секунды, не больше.
Поэтому варианты с O(N!) отбрасываются сразу.Ну тогда используй приближенное решение. Одно из самых оптимальных ты уже сам почти угадал в начале этого топика.
1) От старта найти ближайшую точку, сдвинуться,
2) Найти ближайшую не посещенную, сдвинуться
3) Если точки кончились выйти, иначе повторить шаг 2
Получишь O(n^2).
Результат может быть конечно не самым оптимальным, но чтобы это доказать понадобиться перебрать все возможные пути - O(n!). Так что можешь смело посылать всех сомневающихся в оптимальности результата :)
NP проблема это не шутки.
...
Рейтинг: 0 / 0
Алгоритм обхода точек на плоскости за минимальное время
    #38337657
Соколинский Борис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White OwlНу тогда используй приближенное решение. Одно из самых оптимальных ты уже сам почти угадал в начале этого топика.
Мне тоже так казалось, пока не начал думать :)
Мне не нравится в этом алгоритме один нюанс:
Предположим, N-1 точек располагаются на окружности, последняя - на неком удалении от нее, стартовая - в центре. Хороший алгоритм должен быть построен так, чтобы последней из точек окружности была ближайшая к (Xn,Yn). Ближайший сосед, скорее всего, выберет неоптимальный маршрут. Собс-но, из-за этого стал думать в сторону кластеризации.
...
Рейтинг: 0 / 0
Алгоритм обхода точек на плоскости за минимальное время
    #38337667
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, все верно. Но не забывай что кластеризация сама по себе потребует некоторое количество ресурсов.
...
Рейтинг: 0 / 0
Алгоритм обхода точек на плоскости за минимальное время
    #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
Алгоритм обхода точек на плоскости за минимальное время
    #38339318
ДохтаР
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonЯ еще не вкурил эти методы разностей и прочее но думаю что
если априори нам известны координаты кластеров и их границы
то и обход точек мы также можем эффективно соптимизировать.
Ну.. конечно если расчёт центров кластеров не будет сложнее
чем основной метод .


ИМХО пофик на центры, до тех пор пока кластеры не перессекаются.
или не оказывают какого либо взаимного влияния друг на друга.
Когда пересекаются , то могут пересекаться и центры.
Смотря что считать.
можно центры масс, можно центры площадей , можно центры периметров или сил.
У одного кластера будут разные центры.

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

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

все это полная фигня
любая задача из ЖИЗНИ имеет красивое и простое решение
...
Рейтинг: 0 / 0
Алгоритм обхода точек на плоскости за минимальное время
    #38340253
ДохтаР
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosДохтаР,

все это полная фигня
любая задача из ЖИЗНИ имеет красивое и простое решение

согласен.
Простое и красивое решение может иметь задача имеющая точную постановку.
При не точной постановке простое решение задачу в полном обьеме не решает, как правило.
...
Рейтинг: 0 / 0
Алгоритм обхода точек на плоскости за минимальное время
    #38341158
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosлюбая задача из ЖИЗНИ имеет красивое и простое решениеМне, пожалуйста, первообразную произвольной аналитической функции.
...
Рейтинг: 0 / 0
Алгоритм обхода точек на плоскости за минимальное время
    #38341644
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovViPRosлюбая задача из ЖИЗНИ имеет красивое и простое решениеМне, пожалуйста, первообразную произвольной аналитической функции.
произвольная аналитическая функция - туфта в твоих мозгах
...
Рейтинг: 0 / 0
Алгоритм обхода точек на плоскости за минимальное время
    #38341961
Соколинский Борис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosлюбая задача из ЖИЗНИ имеет красивое и простое решение
"Карты деньги два ствола" в переводе ГоблинаМой жизненный опыт говорит, что ничего простого не бывает. Если думаешь, что все просто, - ты м...к" (с)
...
Рейтинг: 0 / 0
Алгоритм обхода точек на плоскости за минимальное время
    #38341970
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Господа. К порядку. Я стучу карандашиком по стакану.
Давайте лучше обсуждать задача Коммивояжёра на карте местности.
...
Рейтинг: 0 / 0
Алгоритм обхода точек на плоскости за минимальное время
    #38369025
mikron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White OwlПолучишь O(n^2).
Результат может быть конечно не самым оптимальным, но чтобы это доказать понадобиться перебрать все возможные пути - O(n!). Так что можешь смело посылать всех сомневающихся в оптимальности результата :)
NP проблема это не шутки.
Это не верно. Доказательство неоптималности не требует поиск оптималного. достаточно найти лутшее.
...
Рейтинг: 0 / 0
Алгоритм обхода точек на плоскости за минимальное время
    #38369057
mikron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Соколинский Борис,

Если мне не изменяет память, метод приближённого решение подобной задачи, который мне понравился/запомнился
основывается на построении Minimum spanning tree а затем на графе применяют методы оптимизации.
Плюс метода: послее построения МСП сразу известна верхняя оценка (удвоена сумма длинн дуг графа) и если неплохой резуьтат. Если задача реалного времени то это боольшой плюс: можно в любой момент прервать оптимизацию и остановится на текущем оптимуме.
...
Рейтинг: 0 / 0
Алгоритм обхода точек на плоскости за минимальное время
    #38369202
В книге "Delphi готовые алгоритмы" Р. Стивенса в главе 12 Сетевые алгоритмы изложены:
Определения
Представления сетей
Управление узлами и связями
Обход сети
Наименьший каркас дерева,
Кратчайший путь
Расстановка меток.
Коррекция меток
Варианты поиска кратчайшего пути.
Применение алгоритмов поиска кратчайшего пути.
Максимальный поток
Сферы применения.
Резюме
Также там приведены готовые алгоритмы. Возможно, что-нибудь и пригодится...
...
Рейтинг: 0 / 0
Алгоритм обхода точек на плоскости за минимальное время
    #38369444
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Соколинский Борис,

http://ru.wikipedia.org/wiki/Эйлеров_цикл ?
...
Рейтинг: 0 / 0
Алгоритм обхода точек на плоскости за минимальное время
    #38369448
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
UsmanСоколинский Борис,

http://ru.wikipedia.org/wiki/Эйлеров_цикл ?а он-то тут причем? нужно же в каждую точку сходить, как минимум, по разу, а не по каждому ребру ровно один раз.
...
Рейтинг: 0 / 0
63 сообщений из 63, показаны все 3 страниц
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Алгоритм обхода точек на плоскости за минимальное время
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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