Кратчайшие пути и геодезические
если сетка выполнена полностью из квадов, где каждая вершина имеет валентность n (с n >= 3) и не лежит в одной плоскости, мне нужно найти расстояние каждой вершины в сетке от замкнутого множества семенных вершин. То есть, учитывая одну или несколько вершин сетки (набор семян), мне нужно построить карту расстояния, которая хранит расстояние каждой вершины сетки от семенного набора (которое будет иметь расстояние 0 от себя).
потратив некоторое время на поиск возможных решений, я получил следующее изображение:
1), это не тривиально, и в течение последних 20 лет были разработаны разные подходы.
2) каждый алгоритм, учитывающий 3d-область, ограничивается треугольной областью
сказал, что это картина, которую я получил:
Алгоритм Дейкстры может быть использован как способ найти кратчайший путь между двумя вершинами, следуя краям сетки, но он очень неточный и приведет к ошибочной геодезической. Лантье (LA) предложил улучшение, но ошибка все еще довольно высока.
Киммел и Сетиан (KS) предложили метод быстрого марширования -FMM- для решения уравнения Эйконаля, рассматривая вопрос, вычисляющий распространение волны, начинающейся с начальных точек, и запись времени, когда волна пересекает каждую вершину. К сожалению, этот алгоритм, хотя и достаточно простой для реализации, по-прежнему приносит довольно неточный результат, и нужно проявлять осторожность, чтобы избежать тупых треугольников или относиться к ним совершенно особым образом.
Novotni (NV) рассмотрел проблему точности (KS) в одном сценарии семян, но мне непонятно, если:
a) он все еще страдает от проблемы тупого угла
b) при использовании в сценарии с несколькими начальными точками для каждого отдельного семени необходимо реализовать один FMM, чтобы найти минимальное расстояние для каждой вершины сетки из каждого семени (то есть в сценарии с 10 семенными точками, FMM нужно будет запускать 10 раз на каждую вершину сетки)
С другой стороны, точный алгоритм -MMP-, который приводит к ошибке 0, был представлен Митчеллом и др. (MI) в 87, и AFAIK никогда не был действительно имплантирован (вероятно, из-за требуемой вычислительной мощности). Точно так же, Суражский и др. (SU) предоставил альтернативный точный алгоритм, основанный на MMP, который должен превосходить последний по скорости, все еще приводя к правильному результату. К сожалению, вычислительная мощность, необходимая для расчета, даже если она намного меньше, чем исходная MMP, по-прежнему достаточно высока, так что интерактивная реализация в реальном времени в настоящее время невозможна.
(SU) также предложили приближение их точного алгоритма, то, что они называли плоским точным. Это должно занимать одно и то же время вычисления FMM, принося только 1/5 из ошибки, но:
c) мне непонятно, можно ли его использовать в сценарии с несколькими семенами.
Другие точные алгоритмы кратчайшего пути были предложены Чэнь и Хан (CH) и Капуром (KP), но в то время как первый абсолютно медленный, второй слишком сложный, чтобы его можно было реализовать на практике.
поэтому.. нижняя строка: мне нужно расстояние от набора, а не кратчайший путь между двумя точками.
если я правильно понял,
либо я использую FMM, чтобы получить расстояние каждой вершины от множества за один проход,
-или -
используйте другой алгоритм для калибровки геодезической из каждой вершины сетки в каждую начальную точку и найдите самую короткую (и если бы я понял, что это будет означать вызов этого алгоритма для каждой начальной точки для каждой вершины сетки, то есть на 10 000 вершинной сетки и набор семян по 50 баллов, мне нужно было бы вычислить 500 000 геодезических, чтобы получить 10 000 кратчайших)
Я что-то упустил? FMM - единственный способ справиться с несколькими интервалами семян за один проход? Кто-то знает, может ли плоский точный алгоритм использоваться в сценарии с несколькими исходными точками?
Thnx
Примечания:
(LA): Lanthier и al. "Аппроксимация взвешенных кратчайших путей на многогранных поверхностях"
(KS): Киммел, Сетиан "Вычисление геодезических путей на многообразиях"
(NV): Новотни "Вычисление геодезических расстояний на треугольных сетках"
(MI): Митчелл и др. "Дискретная геодезическая задача"
(SU): Суражский, Кирсанов и др. "Быстрая точная и приближенная геодезическая на сетках"
(CH): Чен, Хан, "Кратчайшие пути на многограннике"
(KP): Капур "Эффективное вычисление кратчайших путей геодезических"
Ответы
Ответ 1
Существует новая статья, в которой подробно обсуждается, как решить вашу проблему: Geodesics in Heat. (Просто заметил это, и это напомнило мне ваш вопрос.) Идея состоит в том, что уравнение теплоты можно рассматривать как описание диффузии частиц из некоторой центральной точки. Хотя он моделирует случайную диффузию, если вы выполняете уравнение теплоты в течение достаточно короткого времени, то любые частицы, которые получают от A до B, должны были следовать по кратчайшему пути, так что математически вы можете получить оценку расстояния.
Захват заключается в том, что доля частиц, которые следуют по пути, близкому к кратчайшему, крошечная, поэтому вам нужно решить дифференциальное уравнение, которое начинается в некоторой области и быстро заканчивается в другом месте. Это маловероятно, чтобы вести себя хорошо. Фокус в том, что при больших t, даже если он не измеряет расстояние правильно, он дает градиент функции расстояния, и это можно использовать с другими методами для получения расстояния.
TL; DR Связанная бумага решает расстояние от каждой точки сетки до любого субдомена, включая конечные множества точек посева.
Ох... и я сам его не тестировал.
Ответ 2
"a) он все еще страдает от проблемы тупого угла"
Да, оригинальный FMM страдает от тупой проблемы угла, но исследователи решили эту проблему.
Эта ссылка - это реализация метода быстрого марширования Gabriel Peyre в 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 Transactions on Graphics (TOG): 28 (4), с. 1-8, август 2009 г.
Ответ 3
Это может быть лучше подходит для обмена теоретической компьютерной наукой. См. Этот пост на кратчайших путях.
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
Ответ 4
Другая опция: Евклидовой алгоритм кратчайшего пути Это недавняя (кратчайшая) реализация кратчайшего пути.