кратчайшие пути и геодезические - PullRequest
18 голосов
/ 04 августа 2011

учитывая сетку, состоящую полностью из четырехугольников, где каждая вершина имеет валентность n (при n> = 3) и не лежит на одной плоскости, мне нужно найти расстояние каждой вершины в сетке от замкнутого множества семенных вершин. То есть, учитывая одну или несколько вершин сетки (начальный набор), мне нужно построить карту расстояний, в которой будет храниться расстояние каждой вершины сетки от начального набора (который будет иметь расстояние 0 от себя).

потратив некоторое время на поиск возможных решений, я получил следующую картину:

1) это не тривиально, и за последние 20 лет были разработаны различные подходы

2) каждый алгоритм, учитывающий трехмерную область, ограничен треугольной областью

сказал, что вот картинка, которую я получил:

Алгоритм Дейкстры можно использовать как способ найти кратчайший путь между двумя вершинами, следуя краям сетки, но он очень неточен и приведет к ошибочной геодезической. Лантьер (Лос-Анджелес) предложил улучшение, но ошибка все еще довольно высока.

Киммель и Сетиан (KS) предложили метод быстрого марширования -FMM-, чтобы решить уравнение Эйконала, решая проблему расчета распространения волны, начиная с начальных точек, и регистрации времени, когда волна пересекает каждую вершину. К сожалению, этот алгоритм, хотя и достаточно простой для реализации, все же дает довольно неточный результат, и необходимо соблюдать осторожность, чтобы избежать тупых треугольников или относиться к ним совершенно особым образом. Novotni (NV) решил проблему точности (KS) в сценарии с одним начальным числом, но мне неясно, если:

а) он все еще страдает от проблемы тупого угла

b) при использовании в сценарии с множеством начальных точек для каждого отдельного начального числа должен быть реализован один FMM, чтобы найти минимальное расстояние для каждой вершины сетки от каждого начального числа (то есть в сценарии с 10 начальными точками, FMM должен быть запущен 10 раз для каждой вершины сетки)

С другой стороны, Mitchell & al. Представил точный алгоритм -MMP-, который приводит к ошибке 0. (MI) в 87, и AFAIK никогда не был действительно реализован (вероятно, из-за требуемой вычислительной мощности). С точно таким же подходом Суражский и соавт. (SU) предоставил альтернативный точный алгоритм, основанный на MMP, который должен превзойти последний по скорости, все еще приводя к правильному результату. К сожалению, вычислительная мощность, необходимая для расчета, даже если она намного меньше, чем у исходного MMP, все еще достаточно высока, поэтому в настоящее время интерактивная реализация в реальном времени невозможна. (SU) также предложил приближение их точного алгоритма, который они назвали точным. Это должно занять то же вычислительное время FMM, принося только 1/5 ошибки, но:

в) мне неясно, можно ли его использовать в сценарии с несколькими семенами.

Другие точные алгоритмы кратчайшего пути были предложены Ченом и Ханом (CH) и Капуром (KP), но, хотя первый является абсолютно медленным, второй слишком сложен для реализации на практике.

итак ... суть в том, что мне нужно расстояние от набора, а не кратчайший путь между двумя точками.

если я правильно понял,

либо я использую FMM, чтобы получить расстояние каждой вершины из набора за один проход,

-или-

использовать другой алгоритм для вычисления геодезической от каждой вершины сетки до каждой начальной точки и нахождения самой короткой (и если бы я понял это правильно, это означало бы вызов этого алгоритма в каждой начальной точке для каждой вершины сетки, то есть на Сетка вершин в 10 000 и начальный набор из 50 точек, я должен был бы вычислить 500 000 геодезических, чтобы получить 10 000 самых коротких)

Я что-то упустил? Является ли FMM единственным способом справиться с несколькими расстояниями семян за один проход? Кто-то знает, можно ли использовать алгоритм с точной плоской точкой в ​​сценарии с множеством начальных точек?

Thnx

Примечания:

(LA): Lanthier & al. «Аппроксимация взвешенных кратчайших путей на многогранных поверхностях»

(KS): Kimmel, Sethian "Вычисление геодезических путей на многообразиях"

(NV): Новотни "Вычисление геодезических расстояний на треугольных сетках"

(МИ): Митчелл и др. «Дискретная геодезическая задача»

(SU): Суражский, Кирсанов и др. «Быстрые точные и приближенные геодезические на сетках»

(CH): Чен, Хан, "Кратчайшие пути на многограннике"

(КП): Капур "Эффективное вычисление кратчайших путей геодеков"

Ответы [ 4 ]

7 голосов
/ 30 апреля 2012

Существует новая статья, в которой обсуждается, как именно решить вашу проблему: Геодезические в тепле .(Просто заметил это, и оно напомнило мне ваш вопрос.) Идея заключается в том, что уравнение теплопроводности можно рассматривать как описание диффузии частиц из некоторой центральной точки.Хотя он моделирует случайную диффузию, если вы запустите уравнение теплопроводности в течение достаточно короткого времени, тогда любые частицы, которые попадают из А в В, должны следовать по кратчайшему пути, так что математически вы можете получить оценку расстояния.в том, что доля частиц, которые следуют по пути, близкому к самому короткому пути, является крошечной, поэтому вам нужно решить дифференциальное уравнение, которое начинается с большого в некоторой области и быстро заканчивается маленьким в другом месте.Это вряд ли будет хорошо вести себя численно.Хитрость заключается в том, что для больших t, даже если он не измеряет расстояние правильно, он дает градиент функции расстояния, и это можно использовать с другими методами для получения расстояния.

TL; DRсвязанная бумага решает расстояние от каждой точки сетки до любого субдомена, включая конечные наборы начальных точек.

Ох ... и я сам не проверял это.

2 голосов
/ 24 ноября 2014

«а) он все еще страдает от проблемы тупого угла»

Да, оригинальный FMM страдает от проблемы тупого угла, но исследователи решили эту проблему.Эта ссылка является реализацией метода быстрого марширования Габриэля Пейра в Matlab.http://www.mathworks.com/matlabcentral/fileexchange/6110-toolbox-fast-marching

"b) при использовании в сценарии с множеством начальных точек необходимо реализовать один FMM для каждого отдельного начального числа, чтобы найти минимальное расстояние для каждой вершины сетки от каждого начального числа (то естьв сценарии с 10 начальными точками FMM должен был бы запускаться 10 раз для каждой вершины сетки) "

Если вы имеете в виду проблему кратчайшего пути из нескольких источников, метод быстрого перехода не должен запускаться несколько раз.Например, для начальных значений s1 и s2 и пункта назначения v, а кратчайшее расстояние между s1 и v равно d (s1, v), расстояние между s2 и v равно d (s2, v).Чтобы найти кратчайшее расстояние между v и s1, s2, min (d (s1, v), d (s2, v)), достаточно выполнить однократный метод быстрого перехода.Но если вы хотите знать и d (s1, v), и d (s2, v), вам нужно запускать FMM несколько раз.

"С другой стороны, точный алгоритм -MMP-, который приводит кОшибка 0 была представлена ​​Митчеллом и др. (MI) в 87, и AFAIK никогда не был действительно реализован (вероятно, из-за требуемой вычислительной мощности). При том же точном подходе Суражский и др. (SU) предоставили альтернативную точнуюАлгоритм, основанный на MMP, который должен опережать последний по быстродействию, все же приводя к правильному результату. К сожалению, вычислительная мощность, необходимая для расчета, даже если она намного меньше, чем у исходного MMP, все еще достаточно высока, так что интерактивная реализация в реальном временивыполнимо в это время. (SU) также предложил приближение их точного алгоритма, который они назвали плоско-точным. Это должно занять то же самое вычислительное время FMM, принося только 1/5 от ошибки, но: "

комментарии: MMP имеет реализацию в 2005 году, реализация опубликована в [1].Ссылка на код находится в https://code.google.com/p/geodesic/

"c) мне неясно, может ли он использоваться в сценарии с несколькими начальными числами."

он может использоваться в сценарии с несколькими начальными значениямии вышеприведенный код его реализовал.

"Чэнь & Хан (CH) и Капур (KP) предложили другие точные алгоритмы кратчайшего пути, но, хотя первый абсолютно медленный, второй слишком сложен, чтобыбыть реализованным на практике. "

комментарии: первый - медленный, но в [2] автор улучшил алгоритм CH и дал практическую реализацию, которая является точной и более быстрой, чем MMP.Код находится на sites.google.com/site/xinshiqing/knowledge-share

[1] Виталий Суражский, Татьяна Суражская, Данил Кирсанов, Стивен Гортлер, Хьюг Хоппе.Быстрые точные и приближенные геодезические по сеткам.ACM Trans.Графика (SIGGRAPH), 24 (3), 2005.

[2] Улучшение алгоритма Чена и Хана по дискретной геодезической задаче.Шицин Синь и Го-Джин Ван.Транзакции ACM на графике (TOG): 28 (4), стр. 1–8, август 2009 г.

1 голос
/ 24 сентября 2012

Другой вариант: Алгоритм евклидова кратчайшего пути Это недавняя (2012 г.) общая реализация кратчайшего пути.

1 голос
/ 26 марта 2012

Это может быть лучше подходит для теоретического обмена стека информатики. Смотрите этот пост о кратчайших путях.

https://cstheory.stackexchange.com/questions/6822/shortest-paths-disallowing-each-edge

и, возможно,

https://cstheory.stackexchange.com/questions/4034/complexity-of-computing-shortest-paths-in-the-plane-with-polygonal-obstacles

...