|
|
|
Алгоритм обхода точек на плоскости за минимальное время
|
|||
|---|---|---|---|
|
#18+
Джентльмены (и дамы, конечно), есть небольшая задачка: Имеется массив точек на плоскости и стартовая точка ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2013, 18:47 |
|
||
|
Алгоритм обхода точек на плоскости за минимальное время
|
|||
|---|---|---|---|
|
#18+
Пардон, рука дернулась. Задача: Составить алгоритм обхода всех точек за минимальное время. Скорость движения можно считать постоянной, так что задача сводится к минимизации пройденного расстояния. Есть два варианта движения - одновременно по двум координатам и поочередно. Пока в голову приходит простой алгоритм - упорядочить точки в порядке убывания расстояний от предыдущей. Может, есть что-то эффективнее? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2013, 18:50 |
|
||
|
Алгоритм обхода точек на плоскости за минимальное время
|
|||
|---|---|---|---|
|
#18+
Соколинский БорисЕсть два варианта движения - одновременно по двум координатам и поочередно.Вот тут чуть подробнее. "одновременно по двум координатам" - с разной скоростью по каждой из координат или с одинаковой? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2013, 18:52 |
|
||
|
Алгоритм обхода точек на плоскости за минимальное время
|
|||
|---|---|---|---|
|
#18+
miksoft, В первом приближении считаем одинаковой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2013, 18:54 |
|
||
|
Алгоритм обхода точек на плоскости за минимальное время
|
|||
|---|---|---|---|
|
#18+
Соедини все точки. Получишь граф. А потом берешь алгортим Дейкстры и задача решена. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2013, 18:54 |
|
||
|
Алгоритм обхода точек на плоскости за минимальное время
|
|||
|---|---|---|---|
|
#18+
а не, чего-то я читаю не тем глазом.... Тут не Дейкстра нужен, а http://ru.wikipedia.org/wiki/Задача_коммивояжёра ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2013, 18:56 |
|
||
|
Алгоритм обхода точек на плоскости за минимальное время
|
|||
|---|---|---|---|
|
#18+
White Owl, Нутром чувствовал, что надо в логистику копать. Тут нет требования возврата в исходную точку, наверное первый алгоритм более подходящий. Я, по сути, его и имел в голове. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2013, 19:02 |
|
||
|
Алгоритм обхода точек на плоскости за минимальное время
|
|||
|---|---|---|---|
|
#18+
Соколинский Борис, N сильно велико? если прямым перебором, то получается порядка N! вариантов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2013, 19:27 |
|
||
|
Алгоритм обхода точек на плоскости за минимальное время
|
|||
|---|---|---|---|
|
#18+
Соколинский Борисmiksoft, В первом приближении считаем одинаковой.Т.е. так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2013, 19:37 |
|
||
|
Алгоритм обхода точек на плоскости за минимальное время
|
|||
|---|---|---|---|
|
#18+
miksoftN сильно велико? если прямым перебором, то получается порядка N! вариантов Не особо, 100-1000. miksoftТ.е. так? Да, именно. Одновременно двигаемся по двум направлениям пока не попадем в одну координату, потом до оставшейся. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2013, 19:42 |
|
||
|
Алгоритм обхода точек на плоскости за минимальное время
|
|||
|---|---|---|---|
|
#18+
Соколинский БорисmiksoftN сильно велико? если прямым перебором, то получается порядка N! вариантов Не особо, 100-1000.Это много, прямым перебором уже не решается :( А что нибудь известно о характере расположения точек? Они как-то группируются? Или, например, равномерно разбросаны по квадрату? Или еще что-то? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2013, 19:46 |
|
||
|
Алгоритм обхода точек на плоскости за минимальное время
|
|||
|---|---|---|---|
|
#18+
miksoftЭто много, прямым перебором уже не решается :( Почему? Тут на N!, а N*(N-1)/2 итераций, мелочь, в общем... miksoftА что нибудь известно о характере расположения точек? Они как-то группируются? Или, например, равномерно разбросаны по квадрату? Заранее ничего не известно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2013, 19:52 |
|
||
|
Алгоритм обхода точек на плоскости за минимальное время
|
|||
|---|---|---|---|
|
#18+
Соколинский БорисmiksoftЭто много, прямым перебором уже не решается :( Почему? Тут на N!, а N*(N-1)/2 итераций, мелочь, в общем...N*(N-1)/2 - это отрезков, которые соединяют точки. А из них еще нужно путь собрать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2013, 20:15 |
|
||
|
Алгоритм обхода точек на плоскости за минимальное время
|
|||
|---|---|---|---|
|
#18+
Нет, это при последовательном построении: выбираем первую, вторую и т.д. N! это все возможные варианты, понятно что тупым перебором не получится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2013, 20:39 |
|
||
|
Алгоритм обхода точек на плоскости за минимальное время
|
|||
|---|---|---|---|
|
#18+
Соколинский БорисНет, это при последовательном построении: выбираем первую, вторую и т.д. N! это все возможные варианты, понятно что тупым перебором не получится.Ну почему-же "не получится"? Как раз только тупым перебором и может получиться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2013, 20:55 |
|
||
|
Алгоритм обхода точек на плоскости за минимальное время
|
|||
|---|---|---|---|
|
#18+
White OwlНу почему-же "не получится"? Как раз только тупым перебором и может получиться. Вообще все перебирать слишком долго. Можно, наверное, группировать точки на блоки близкорасположеных, потом оптимизировать обход блоков а затем расставлять внутри блока. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2013, 21:17 |
|
||
|
Алгоритм обхода точек на плоскости за минимальное время
|
|||
|---|---|---|---|
|
#18+
Соколинский БорисWhite OwlНу почему-же "не получится"? Как раз только тупым перебором и может получиться. Вообще все перебирать слишком долго. Можно, наверное, группировать точки на блоки близкорасположеных, потом оптимизировать обход блоков а затем расставлять внутри блока. Создать матрицу, заполнить нулями, отметить точки Соколинский Борис и стартовая точка значнием 1. Самый короткий маршрут ( по диагонали ) отметить значениями -1 . Найти самые близлежащие точки со значением 1 от почти линии отмеченной точками -1. ---------- мой блог ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2013, 23:11 |
|
||
|
Алгоритм обхода точек на плоскости за минимальное время
|
|||
|---|---|---|---|
|
#18+
Соколинский БорисНет, это при последовательном построении: выбираем первую, вторую и т.д. N! это все возможные варианты, понятно что тупым перебором не получится. NP полная задача естественно в лоб не решается =) нужно приближенное решение ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2013, 23:28 |
|
||
|
Алгоритм обхода точек на плоскости за минимальное время
|
|||
|---|---|---|---|
|
#18+
Соколинский БорисWhite OwlНу почему-же "не получится"? Как раз только тупым перебором и может получиться. Вообще все перебирать слишком долго. Можно, наверное, группировать точки на блоки близкорасположеных, потом оптимизировать обход блоков а затем расставлять внутри блока.Ну я тебе уже ткнул пальцем. Задача коммивояжера описана в куче литературы. То что у тебя путь не замкнут это все-го лишь частный вариант основной задачи. В принципе, незамкнутый путь по всем вершинам графа имеет собственное название: Hamiltonian Path. Можешь поискать литературу по этому названию. Хотя оно тебе не много даст. На полном графе всегда можно нарисовать путь через все вершины, так что классические алгоритмы по поиску возможного пути которые быстрее чем O(n!) тебе не подойдут. Потому что тебе придется найти минимальный из всех путей, а этих путей на полном графе n!. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2013, 23:41 |
|
||
|
Алгоритм обхода точек на плоскости за минимальное время
|
|||
|---|---|---|---|
|
#18+
имхо: вроде R-дерево строят для нахождения минимальных расстояний в координатах ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2013, 23:43 |
|
||
|
Алгоритм обхода точек на плоскости за минимальное время
|
|||
|---|---|---|---|
|
#18+
White OwlНу я тебе уже ткнул пальцем. [/quot]Я прочитал, методов решений хороших пока не нашел. Это задача реального времени, на весь алгоритм дается 1-2 секунды, не больше. Поэтому варианты с O(N!) отбрасываются сразу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2013, 23:51 |
|
||
|
Алгоритм обхода точек на плоскости за минимальное время
|
|||
|---|---|---|---|
|
#18+
Малыхин Сергейимхо: вроде R-дерево строят для нахождения минимальных расстояний в координатахНет. R-tree это решение другой задачи. Есть граф, найди кратчайший путь между двумя вершинами. Нет требования обхода всех вершин. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2013, 23:52 |
|
||
|
Алгоритм обхода точек на плоскости за минимальное время
|
|||
|---|---|---|---|
|
#18+
Соколинский БорисЭто задача реального времени, на весь алгоритм дается 1-2 секунды, не больше. Поэтому варианты с O(N!) отбрасываются сразу.Ну тогда используй приближенное решение. Одно из самых оптимальных ты уже сам почти угадал в начале этого топика. 1) От старта найти ближайшую точку, сдвинуться, 2) Найти ближайшую не посещенную, сдвинуться 3) Если точки кончились выйти, иначе повторить шаг 2 Получишь O(n^2). Результат может быть конечно не самым оптимальным, но чтобы это доказать понадобиться перебрать все возможные пути - O(n!). Так что можешь смело посылать всех сомневающихся в оптимальности результата :) NP проблема это не шутки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2013, 00:02 |
|
||
|
Алгоритм обхода точек на плоскости за минимальное время
|
|||
|---|---|---|---|
|
#18+
White OwlНу тогда используй приближенное решение. Одно из самых оптимальных ты уже сам почти угадал в начале этого топика. Мне тоже так казалось, пока не начал думать :) Мне не нравится в этом алгоритме один нюанс: Предположим, N-1 точек располагаются на окружности, последняя - на неком удалении от нее, стартовая - в центре. Хороший алгоритм должен быть построен так, чтобы последней из точек окружности была ближайшая к (Xn,Yn). Ближайший сосед, скорее всего, выберет неоптимальный маршрут. Собс-но, из-за этого стал думать в сторону кластеризации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2013, 00:08 |
|
||
|
Алгоритм обхода точек на плоскости за минимальное время
|
|||
|---|---|---|---|
|
#18+
Да, все верно. Но не забывай что кластеризация сама по себе потребует некоторое количество ресурсов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2013, 00:31 |
|
||
|
Алгоритм обхода точек на плоскости за минимальное время
|
|||
|---|---|---|---|
|
#18+
White OwlСоколинский БорисЭто задача реального времени, на весь алгоритм дается 1-2 секунды, не больше. Поэтому варианты с O(N!) отбрасываются сразу.Ну тогда используй приближенное решение. Одно из самых оптимальных ты уже сам почти угадал в начале этого топика. 1) От старта найти ближайшую точку, сдвинуться, 2) Найти ближайшую не посещенную, сдвинуться 3) Если точки кончились выйти, иначе повторить шаг 2 Получишь O(n^2). Результат может быть конечно не самым оптимальным, но чтобы это доказать понадобиться перебрать все возможные пути - O(n!). Так что можешь смело посылать всех сомневающихся в оптимальности результата :) NP проблема это не шутки. Если на кажом шаге выбирать в качествеперовй точки , ту у которой расстоняние до цели кратчайшее , то можно очень хорошо с оптимизировать . Но для этого прежде чем идти нужно просматривать на 1 ход вперед, сортировать и идти по верхнему в сортировке. ТС , не туда вопрос задал , ему нужно было ити на сайт гейм-девов , там бы в первом ответе такой вариант предложили. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2013, 00:45 |
|
||
|
Алгоритм обхода точек на плоскости за минимальное время
|
|||
|---|---|---|---|
|
#18+
ДохтаРСоколинский Бориспропущено... Вообще все перебирать слишком долго. Можно, наверное, группировать точки на блоки близкорасположеных, потом оптимизировать обход блоков а затем расставлять внутри блока. Создать матрицу, заполнить нулями, отметить точки Соколинский Борис и стартовая точка значнием 1. Самый короткий маршрут ( по диагонали ) отметить значениями -1 . Найти самые близлежащие точки со значением 1 от почти линии отмеченной точками -1. ---------- мой блог А это решение оптимизируется в поиск перечечения значений в 2-х массивах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2013, 00:52 |
|
||
|
Алгоритм обхода точек на плоскости за минимальное время
|
|||
|---|---|---|---|
|
#18+
ДохтаРА это решение оптимизируется в поиск перечечения значений в 2-х массивах. Непонятно, как это решение можно приспособить к условиям задачи, а именно - вещественным координатам и произвольным расположением стартовой точки. Если я правильно понял идею, от стартовой точки нужно строить лучи во всех направлениях и искать такой, где сумма расстояний от всех точек массива до линии будет минимальной? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2013, 11:21 |
|
||
|
Алгоритм обхода точек на плоскости за минимальное время
|
|||
|---|---|---|---|
|
#18+
Соколинский Борис, если задача жизненая (т.е. все точки и пути заданы), то всегда есть дополнительная информация и задачу можно решить качественно если нет, то надо придумать алгоритм, который не вляпяеся лицом в грязь при граничных услвиях (обычно в ближайшей окрестности точки есть хотя бы одна нетиповая точка, которая убивает жадный алгоритм) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2013, 13:24 |
|
||
|
Алгоритм обхода точек на плоскости за минимальное время
|
|||
|---|---|---|---|
|
#18+
OK, я обрисую задачу как она ставится: Имеется некоторая условно плоская "карта" (к ГИС никакого отношения не имеет). На карте сканируется некоторая область (обычно прямоугольная, но не всегда) на низком разрешении в поисках интересующих объектов. При нахождении объекта запоминаются его координаты. При обнаружении заданного числа объектов (порядка 100-1000) скан останавливается, точка остановки может быть в любом месте. Далее нужно сфотографировать найденные объекты уже на большом разрешении - т.е. переключить режим съемки и от точки остановки обойти все сохраненные. Задача должна выполняться в реальном времени, на весь алгоритм отводится не более 2 секунд. Собственно, интересуют алгоритмы с вычислительной сложностью не более O(N 3 ). Допустим можно взять метод ближайшего соседа как базовый и за O(N) итераций его улучшать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2013, 14:25 |
|
||
|
Алгоритм обхода точек на плоскости за минимальное время
|
|||
|---|---|---|---|
|
#18+
Соколинский Борис , тебе уже подсказали - задача NP-полная, и в худшем случае сваливается в полный перебор. Так что можешь посмотреть задачи на нахождение гамильтонова цикла (в первую очередь), или задачку о ходе коня (только твой "конь" будет ходить не по шахматным правилам, а по твоим). Правда, конь ищет любой обход, а не "самый дешёвый". Любая оптимизация сводится к рассмотрению "самых хороших" вариантов "в первую очередь", и в "нерассмотрении" заведомо худших вариантов (если новый частичный путь "дороже-длиннее" уже просмотренного ранее, то его и всех "его потомков" можно сразу отбросить из рассмотрения при обходе дерева решения). Посмотри любую книжку по САОДу, в общем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2013, 14:31 |
|
||
|
Алгоритм обхода точек на плоскости за минимальное время
|
|||
|---|---|---|---|
|
#18+
Соколинский Борис, тогда тебе нужно смотреть задачу о почтальене (она же задача коммивояжера). Причём, эта постановка применима только после "как найдено нужное число интересных объектов". Т.к. поисх (без доп. критериев) в любом случае придёся вести "сквозь", т.е. за линейное время. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2013, 14:34 |
|
||
|
Алгоритм обхода точек на плоскости за минимальное время
|
|||
|---|---|---|---|
|
#18+
Я прошу прощения, совсем не в теме, и подобными задачами никогда не занимался. Посоветуйте, пожалуйста, что-то более конкретное, где относительно простым языком задача описана. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2013, 14:36 |
|
||
|
Алгоритм обхода точек на плоскости за минимальное время
|
|||
|---|---|---|---|
|
#18+
BagaBagaтогда тебе нужно смотреть задачу о почтальене (она же задача коммивояжера). Это я уже понял, спасибо White Owl и Вам за наводку. Пока не могу хорошего решения найти (см. переписку выше). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2013, 14:39 |
|
||
|
Алгоритм обхода точек на плоскости за минимальное время
|
|||
|---|---|---|---|
|
#18+
Соколинский Борис, то что ты описал ничего общего не имеет с твоей постановкой это скорее поиск кластеров (раковой опухоли, группировку войск, населенных пунктов и т.д.) долже быт быстрый скан для выявление очертаний кластеров выбор подозрительных кластеров анализ подозрительных для уточнения размеров по заданному критерию ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2013, 14:40 |
|
||
|
Алгоритм обхода точек на плоскости за минимальное время
|
|||
|---|---|---|---|
|
#18+
ViPRosСоколинский Борис, то что ты описал ничего общего не имеет с твоей постановкой это скорее поиск кластеров (раковой опухоли, группировку войск, населенных пунктов и т.д.) долже быт быстрый скан для выявление очертаний кластеров выбор подозрительных кластеров анализ подозрительных для уточнения размеров по заданному критерию Это все уже реализовано. Нужен именно повторный проход. Менять разрешение на лету очень накладно, сканировать сразу на большом - очень долго. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2013, 14:44 |
|
||
|
Алгоритм обхода точек на плоскости за минимальное время
|
|||
|---|---|---|---|
|
#18+
Соколинский Борис, прооходо много там и каждый проход решает свои задачи указанный тобой проекция модели в заданном проходе может быть некачественной задачу надо в комплексе (тарелочку с с голубой коемкой не забудь прилоить :)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2013, 14:48 |
|
||
|
Алгоритм обхода точек на плоскости за минимальное время
|
|||
|---|---|---|---|
|
#18+
первый вариант индексируем все множество точек (к мерное дерево kD-tree ) второй вариант триангуляцией получаем ближайшие точки и из них уже выбираем простым перебором ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2013, 17:06 |
|
||
|
Алгоритм обхода точек на плоскости за минимальное время
|
|||
|---|---|---|---|
|
#18+
Соколинский БорисViPRosСоколинский Борис, то что ты описал ничего общего не имеет с твоей постановкой это скорее поиск кластеров (раковой опухоли, группировку войск, населенных пунктов и т.д.) долже быт быстрый скан для выявление очертаний кластеров выбор подозрительных кластеров анализ подозрительных для уточнения размеров по заданному критерию Это все уже реализовано. Нужен именно повторный проход. Менять разрешение на лету очень накладно, сканировать сразу на большом - очень долго. Похоже на вашу задачу ? Попробуйте эти выкладки применить к созданию алгоритма ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2013, 16:38 |
|
||
|
Алгоритм обхода точек на плоскости за минимальное время
|
|||
|---|---|---|---|
|
#18+
Совсем не похоже. Насчет многомерной оптимизации я как-раз в теме... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2013, 18:01 |
|
||
|
Алгоритм обхода точек на плоскости за минимальное время
|
|||
|---|---|---|---|
|
#18+
Соколинский Борис, без "стоимости сканирования" ничего более конкретного предложить нельзя. Можно только исходить из "общих соображений" и использовать какой-нибудь жадный алгоритм или эавристику (даст не гарантированно лучшее решение, но за "известное" время). Очевидно (использую это слово, т.к. разумно обосновать не могу), что самый неоптимальный алгоритм - шарахаться из конца в конец. Начинаем думать: если стоимость по одной "координате" серьёзно доминирует, то рассматривать при оптимизации нужно её (по аналогии с перемещением сканирующей головки, но я ведь не знаю "тип головки" и накладные расходы - поэтому беру "с потолка"). Тогда: набрав нужную "кучку для анализа" сортировал бы их по этой компоненте. Если объекты "по вертикали" не пересекаются, самым дешёвым будет их последовательное сканирование (предполагая, что "натуральным" для сканеря является последовательный непрерывный обход) с воответствии с отсортированным списком (алгоритм сортировки выбирайте сами - со сложностью от O(N) для цифровой сортировки до O(N^2) в старом-добром пузырьке. И не забывайте, что стоимость быстрой сортировке O(N^2) _в_худшем случае_ - просто любят её почему-то где не поподя). Итак, пусть - в общем случае - пересекаются. Тогда есть несколько решений: разделить на "непересекающиеся" линии и отсканировать отдельно: не мучаться с разбиением на "очереди" и сканировать в уже определённом порядке; объединить их в "один кусок с общими наибольшими границами" и потом вырезать из сканированного. Но сделать выбор ни один алгоритм не сможет, не зная "стоимости" позиционирования и "отката сканирующей головки назад" (может оказаться, что "вперёд" позиционирование происходит быстрее, чем "назад", и тогда выгоднее делать поменьше "ходов назад"). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2013, 22:20 |
|
||
|
Алгоритм обхода точек на плоскости за минимальное время
|
|||
|---|---|---|---|
|
#18+
Соколинский БорисДжентльмены (и дамы, конечно), есть небольшая задачка: Имеется массив точек на плоскости и стартовая точка Задача с точками на плоскости имеет более явно выраженную пространственную когерентность нежели абстрактный граф. Могу предположить что для любого N порядка 100000 и более человек визуально решает эту задачу весьма эффективно. Отсюда как-бы вытекает идея оптимизации исходя из близости точек на плоскости. Для простоты плоскость можно побить на прямоугольники и решить коммивояжёр для каждого прямоугольника (это позволить понизить экспоненциальную сложность алгоритма) а потом все прямоугольники просто обойти в декартовом порядке "змейкой" или "кривой гилберта". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2013, 02:03 |
|
||
|
Алгоритм обхода точек на плоскости за минимальное время
|
|||
|---|---|---|---|
|
#18+
Ключевые слова Euclidean traveling salesman problem Готовый алгоритм по приближенному вычислению тут . Если я правильно понимаю, просмотрев статью по диагонали, то сложность алгоритма n^(2.2). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2013, 10:19 |
|
||
|
Алгоритм обхода точек на плоскости за минимальное время
|
|||
|---|---|---|---|
|
#18+
maytonСоколинский БорисДжентльмены (и дамы, конечно), есть небольшая задачка: Имеется массив точек на плоскости и стартовая точка Задача с точками на плоскости имеет более явно выраженную пространственную когерентность нежели абстрактный граф. Могу предположить что для любого N порядка 100000 и более человек визуально решает эту задачу весьма эффективно. Отсюда как-бы вытекает идея оптимизации исходя из близости точек на плоскости. Для простоты плоскость можно побить на прямоугольники и решить коммивояжёр для каждого прямоугольника (это позволить понизить экспоненциальную сложность алгоритма) а потом все прямоугольники просто обойти в декартовом порядке "змейкой" или "кривой гилберта". За десятки, а может и сотни тысяч лет эволюции Человеческий мозг на уровне бессознательного микрокода( подсознательно) умеет это считать : http://ru.wikipedia.org/wiki/Конечные_разности Змейки и кривые гилберта - частные случаи . Соколинский БорисЕсли я правильно понял идею, от стартовой точки нужно строить лучи во всех направлениях и искать такой, где сумма расстояний от всех точек массива до линии будет минимальной? В общем абстрактном случае это выход на http://ru.wikipedia.org/wiki/Метод_конечных_разностей Насколько я понимаю, следующая задача которая будет стоять перед ТС Соколинский БорисДалее нужно сфотографировать найденные объекты уже на большом разрешении - т.е. переключить режим съемки и от точки остановки обойти все сохраненные. Задача должна выполняться в реальном времени, на весь алгоритм отводится не более 2 секунд. Вовремя обнаружить, что углубление в большее разрешение должно иметь свой предел по http://ru.wikipedia.org/wiki/Теория_приближений и http://ru.wikipedia.org/wiki/Модуль_непрерывности То есть нужно как то параметризовать время( производительность) <-> качество . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2013, 12:29 |
|
||
|
Алгоритм обхода точек на плоскости за минимальное время
|
|||
|---|---|---|---|
|
#18+
Inkelyad, спасибо, уже читаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2013, 12:38 |
|
||
|
Алгоритм обхода точек на плоскости за минимальное время
|
|||
|---|---|---|---|
|
#18+
ДохтаР, док спасибо за ссылки. Добавлю в мемориз. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2013, 12:53 |
|
||
|
Алгоритм обхода точек на плоскости за минимальное время
|
|||
|---|---|---|---|
|
#18+
Соколинский БорисInkelyad, спасибо, уже читаю. да не читай ничего нифига там не написано, бла бла все это ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2013, 13:00 |
|
||
|
Алгоритм обхода точек на плоскости за минимальное время
|
|||
|---|---|---|---|
|
#18+
Я еще не вкурил эти методы разностей и прочее но думаю что если априори нам известны координаты кластеров и их границы то и обход точек мы также можем эффективно соптимизировать. Ну.. конечно если расчёт центров кластеров не будет сложнее чем основной метод . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2013, 13:05 |
|
||
|
Алгоритм обхода точек на плоскости за минимальное время
|
|||
|---|---|---|---|
|
#18+
maytonЯ еще не вкурил эти методы разностей и прочее но думаю что если априори нам известны координаты кластеров и их границы то и обход точек мы также можем эффективно соптимизировать. Ну.. конечно если расчёт центров кластеров не будет сложнее чем основной метод . Отсюда можно начать достаточно (не) точные приближенные вычисления в некой системе координат что бы в пустую не ганять процессор и память , а перейти к оперированию элементарными геометрическими функциями и коэфициентами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2013, 13:19 |
|
||
|
Алгоритм обхода точек на плоскости за минимальное время
|
|||
|---|---|---|---|
|
#18+
Соколинский БорисInkelyad, спасибо, уже читаю. Да, вот вообще книжка по теме: Euclidean Shortest Paths: Exact or Approximate Algorithms Электронная версия довольно быстро гулится. Но в ней ~350 страниц. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2013, 13:29 |
|
||
|
Алгоритм обхода точек на плоскости за минимальное время
|
|||
|---|---|---|---|
|
#18+
maytonЯ еще не вкурил эти методы разностей и прочее но думаю что если априори нам известны координаты кластеров и их границы то и обход точек мы также можем эффективно соптимизировать. Ну.. конечно если расчёт центров кластеров не будет сложнее чем основной метод . ИМХО пофик на центры, до тех пор пока кластеры не перессекаются. или не оказывают какого либо взаимного влияния друг на друга. Когда пересекаются , то могут пересекаться и центры. Смотря что считать. можно центры масс, можно центры площадей , можно центры периметров или сил. У одного кластера будут разные центры. Вобщем пока не придется делить кластеры на секторы что бы перевести массы площали периметры и силы в углы( треугольники) . по какому либо критерию , зависящему от прикладной задачи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2013, 16:17 |
|
||
|
Алгоритм обхода точек на плоскости за минимальное время
|
|||
|---|---|---|---|
|
#18+
ДохтаРВобщем пока не придется делить кластеры на секторы что бы перевести массы площали периметры и силы в углы( треугольники) . по какому либо критерию , зависящему от прикладной задачи. А там уже не далеко до того, что бы разгрузить CPU используя ресурсы GPU. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2013, 19:26 |
|
||
|
Алгоритм обхода точек на плоскости за минимальное время
|
|||
|---|---|---|---|
|
#18+
ДохтаР, все это полная фигня любая задача из ЖИЗНИ имеет красивое и простое решение ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2013, 10:57 |
|
||
|
Алгоритм обхода точек на плоскости за минимальное время
|
|||
|---|---|---|---|
|
#18+
ViPRosДохтаР, все это полная фигня любая задача из ЖИЗНИ имеет красивое и простое решение согласен. Простое и красивое решение может иметь задача имеющая точную постановку. При не точной постановке простое решение задачу в полном обьеме не решает, как правило. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2013, 12:17 |
|
||
|
Алгоритм обхода точек на плоскости за минимальное время
|
|||
|---|---|---|---|
|
#18+
ViPRosлюбая задача из ЖИЗНИ имеет красивое и простое решениеМне, пожалуйста, первообразную произвольной аналитической функции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2013, 18:46 |
|
||
|
Алгоритм обхода точек на плоскости за минимальное время
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovViPRosлюбая задача из ЖИЗНИ имеет красивое и простое решениеМне, пожалуйста, первообразную произвольной аналитической функции. произвольная аналитическая функция - туфта в твоих мозгах ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2013, 10:15 |
|
||
|
Алгоритм обхода точек на плоскости за минимальное время
|
|||
|---|---|---|---|
|
#18+
ViPRosлюбая задача из ЖИЗНИ имеет красивое и простое решение "Карты деньги два ствола" в переводе ГоблинаМой жизненный опыт говорит, что ничего простого не бывает. Если думаешь, что все просто, - ты м...к" (с) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2013, 12:50 |
|
||
|
Алгоритм обхода точек на плоскости за минимальное время
|
|||
|---|---|---|---|
|
#18+
Господа. К порядку. Я стучу карандашиком по стакану. Давайте лучше обсуждать задача Коммивояжёра на карте местности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2013, 12:55 |
|
||
|
Алгоритм обхода точек на плоскости за минимальное время
|
|||
|---|---|---|---|
|
#18+
White OwlПолучишь O(n^2). Результат может быть конечно не самым оптимальным, но чтобы это доказать понадобиться перебрать все возможные пути - O(n!). Так что можешь смело посылать всех сомневающихся в оптимальности результата :) NP проблема это не шутки. Это не верно. Доказательство неоптималности не требует поиск оптималного. достаточно найти лутшее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2013, 15:14 |
|
||
|
Алгоритм обхода точек на плоскости за минимальное время
|
|||
|---|---|---|---|
|
#18+
Соколинский Борис, Если мне не изменяет память, метод приближённого решение подобной задачи, который мне понравился/запомнился основывается на построении Minimum spanning tree а затем на графе применяют методы оптимизации. Плюс метода: послее построения МСП сразу известна верхняя оценка (удвоена сумма длинн дуг графа) и если неплохой резуьтат. Если задача реалного времени то это боольшой плюс: можно в любой момент прервать оптимизацию и остановится на текущем оптимуме. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2013, 15:44 |
|
||
|
Алгоритм обхода точек на плоскости за минимальное время
|
|||
|---|---|---|---|
|
#18+
В книге "Delphi готовые алгоритмы" Р. Стивенса в главе 12 Сетевые алгоритмы изложены: Определения Представления сетей Управление узлами и связями Обход сети Наименьший каркас дерева, Кратчайший путь Расстановка меток. Коррекция меток Варианты поиска кратчайшего пути. Применение алгоритмов поиска кратчайшего пути. Максимальный поток Сферы применения. Резюме Также там приведены готовые алгоритмы. Возможно, что-нибудь и пригодится... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2013, 17:03 |
|
||
|
Алгоритм обхода точек на плоскости за минимальное время
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2013, 20:23 |
|
||
|
Алгоритм обхода точек на плоскости за минимальное время
|
|||
|---|---|---|---|
|
#18+
UsmanСоколинский Борис, http://ru.wikipedia.org/wiki/Эйлеров_цикл ?а он-то тут причем? нужно же в каждую точку сходить, как минимум, по разу, а не по каждому ребру ровно один раз. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2013, 20:30 |
|
||
|
|

start [/forum/topic.php?all=1&fid=16&tid=1341703]: |
0ms |
get settings: |
7ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
173ms |
get topic data: |
8ms |
get forum data: |
1ms |
get page messages: |
70ms |
get tp. blocked users: |
1ms |
| others: | 228ms |
| total: | 510ms |

| 0 / 0 |
