|
|
|
Алгоритм обхода точек на плоскости за минимальное время
|
|||
|---|---|---|---|
|
#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 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=38337436&tid=1341703]: |
0ms |
get settings: |
7ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
436ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
70ms |
get tp. blocked users: |
2ms |
| others: | 204ms |
| total: | 750ms |

| 0 / 0 |
