그래프 변경 (D *, D * -Lite, LPA * 등)을위한 최첨단 경로 찾기 알고리즘은 어떻게 다릅니 까?


96

최근 몇 년 동안 A *보다 훨씬 빠르게 그래프 변경에 응답하여 최상의 경로를 계산할 수있는 많은 경로 찾기 알고리즘이 개발되었습니다.이 알고리즘은 무엇이고 어떻게 다른가? 그들은 다른 상황에 처해 있습니까, 아니면 일부는 더 이상 사용되지 않습니까?


이것들은 내가 지금까지 찾은 것들입니다.

이 중 어느 것이 내 특정 문제에 적용되는지 잘 모르겠습니다. 필요한 경우 모두 읽어 보겠습니다. 그러나 누군가가 요약을 작성할 수 있으면 많은 시간을 절약 할 수 있습니다.


내 특정 문제 : 시작, 마무리 및 일부 벽이있는 그리드가 있습니다. 현재 A *를 사용하여 처음부터 끝까지 가장 좋은 경로를 찾고 있습니다.

이미지 2

그런 다음 사용자는 하나의 벽이동 하고 전체 경로를 다시 계산해야합니다. "이동 벽은 / 경로를 다시 계산" 단계는 연속으로 여러 번 발생, 그래서 나는 빨리 A *의 전체 반복을 실행하지 않고도 최적의 경로를 계산 할 수 있습니다 알고리즘을 찾고 있어요.

필자는 A *에 대한 변경 사항을 찾고 있지는 않지만 완전히 별도의 알고리즘 일 수 있습니다.


3
D *를 보았습니까? 그것은 증분 알고리즘이며 올바르게 기억한다면 정확히 이와 같은 상황을 처리해야합니다. 한때 로봇이 환경에서 임의의 보행기가있는 길 찾기에 사용되는 로봇을 보았습니다.
Juho

7
@Kaveh : 동적 경로 찾기 알고리즘의 "연구 수준"에서 최첨단 개요를 요구하지 않는 이유는 무엇입니까? 필드-D의 * 미만 5 세이며, LEARCH 미만 3 ..
BlueRaja - 대니 Pflughoeft

7
왜 이것이이 포럼에 적절한 질문이 아닌지 잘 모르겠습니다. 이것은 결코 정착되고 오래된 주제가 아닙니다
Suresh Venkat

5
@ BlueRaja-DannyPflughoeft 나는 이것이 좋은 연구 수준의 질문이라고 생각합니다. 내 의견에 따라 답변을 추가하고 조금 확장하겠습니다.
Juho

4
@ BlueRaja-DannyPflughoeft Reddit에 연결되었습니다.
U2EF1

답변:


77

그래서 나는 신문을 훑어 보았는데 이것이 내가 기뻐했던 것입니다. 주제에 대해 더 잘 아는 사람이 있다면, 내가 틀렸다면 바로 정정하십시오 (또는 자신의 답변을 추가하면 대신 수락하겠습니다!) .

각 논문에 대한 링크는 위의 질문지에서 찾을 수 있습니다.

  • 간단한 재 계산
    • D * (일명 Dynamic A * ) (1994) : 초기 실행시 D *는 A *와 매우 유사하게 실행되어 처음부터 끝까지 가장 빠른 경로를 찾습니다. 그러나 장치가 시작에서 끝으로 이동함에 따라 그래프가 변경되면 D *는 해당 장치의 위치에서 마무리까지의 최적 경로를 매우 빠르게 재 계산할 수 있으며, 단순히 장치의 위치에서 A *를 다시 실행하는 것보다 훨씬 빠릅니다. 그러나 D *는 매우 복잡한 것으로 유명하며 훨씬 간단한 D * -Lite에 의해 완전히 사용되지 않습니다.
    • Focused D * (1995) : D *가 더 빨라지고 더 실시간이되도록 개선되었습니다. D * -Lite와 비교할 수는 없지만 이것이 더 오래되었고 D * -Lite에 대해 더 많이 이야기하면 D * -Lite가 더 나은 것으로 가정합니다.
    • DynamicSWSF-FP (1996) : 모든 노드에서 마감 노드까지의 거리를 저장합니다. 모든 거리를 계산하기위한 초기 설정이 큽니다. 그래프를 변경 한 후 거리가 변경된 노드 만 업데이트 할 수 있습니다. A * 및 D *와 관련이 없습니다. 각 변경 후 여러 노드에서 마감까지의 거리를 찾으려면 유용합니다. 그렇지 않으면 LPA * 또는 D * -Lite가 일반적으로 더 유용합니다.
    • LPA * / Incremental A * (2001) : LPA * (평생 계획 A *) , Incremental A * 라고도합니다 (LPA라는 다른 알고리즘과 관련이 없지만 "LPA"라고 혼동되기도합니다) . DynamicSWSF-FP와 A *의 조합. 첫 번째 실행에서 A *와 정확히 동일합니다. 그러나 그래프를 약간 변경 한 후 동일한 시작 / 종료 쌍에서 후속 검색을 수행하면 이전 실행의 정보를 사용하여 A *에 비해 검사해야하는 노드 수를 대폭 줄일 수 있습니다. 이것은 정확히 내 문제이므로 LPA *가 가장 적합 할 것 같습니다. LPA *는 D *와 다릅니다. 항상 같은 출발에서 같은 마감까지 최고의 경로를 찾습니다. 시작점이 움직일 때 사용되지 않습니다(최초의 최상의 경로를 따라 움직이는 단위와 같은) . 하나...
    • D * -Lite (2002) :이 알고리즘은 LPA *를 사용하여 D *를 모방합니다. 즉, LPA *를 사용하여 초기 최고 경로를 따라 이동하고 그래프가 변경 될 때 단위에 대한 새로운 최고 경로를 찾습니다. D * - 라이트는 D의 *보다 훨씬 간단 간주되며 항상 실행 이후 적어도 D의 * 최대한 빨리, 완전히 * D를 폐기했다. 따라서 D *를 사용할 이유가 없습니다. 대신 D * -Lite를 사용하십시오.
  • 모든 각도 이동
    • Field D * (2007) : 그리드로의 움직임을 제한하지 않는 D * -Lite의 변형. 즉, 최선의 경로는 그리드 포인트 사이의 45도 (또는 90도)뿐만 아니라 어떤 각도로도 유닛이 움직 이도록 할 수 있습니다. NASA는 화성 탐사선의 길을 찾기 위해 사용되었습니다.
    • Theta * (2007) : 필드 D *보다 더 나은 (짧은) 경로를 제공하는 A *의 변형입니다. 그러나 D * -Lite가 아닌 A *를 기반으로하므로 Field D *가하는 빠른 재 계획 기능이 없습니다. 도 참조하십시오 .
    • Incremental Phi * (2009) : 두 세계 중 최고입니다. 점진적인 Theta * 버전 (일명 빠른 계획 가능)
  • 움직이는 목표점
    • GAA * (2008) : GAA * (일반화 된 적응 형 A *) 는 움직이는 대상 점을 처리하는 A *의 변형입니다. "Moving Target Adaptive A *"라는 훨씬 이전 알고리즘의 일반화입니다.
    • GRFA * (2010) : GFRA * (Generalized Fringe-Retrieving A *) 는 FRA *라는 다른 알고리즘의 기술을 사용하여 GAA *를 임의의 그래프 (즉, 2D로 제한되지 않음 )로 일반화 한 것으로 나타납니다 .
    • MTD * -Lite (2010) : MTD * -Lite (이동 대상 D * -Lite) 는 "일반화 된 프린지 검색 A *의 기본 원리를 사용하여 빠르게 계획적인 이동 대상 검색을 수행하는 D * Lite의 확장"입니다.
    • Tree-AA * (2011) : (???) 알 수없는 지형을 검색하는 알고리즘으로 보이지만이 섹션의 다른 모든 알고리즘과 마찬가지로 Adaptive A *를 기반으로하므로 여기에 넣습니다. 이 섹션의 다른 항목과 어떻게 비교되는지 확실하지 않습니다.
  • 빠름 / 하위 최적
    • Anytime D * (2005) : D * -Lite를 Anytime Repairing A * 라는 알고리즘과 결합하여 수행되는 D * -Lite의 "Anytime" 변형입니다 . "Anytime"알고리즘은 모든 시간 제약 조건에서 실행할 수있는 알고리즘입니다. 처음에는 매우 차선책이 매우 빠른 경로를 찾은 다음 주어진 시간이 길수록 해당 경로를 개선합니다.
    • HPA * (2004) : HPA * (계층 경로 찾기 A *) 는 RTS (실시간 전략) 비디오 게임 과 같이 큰 그래프에서 많은 수의 단위를 경로 찾기위한 것 입니다. 그들은 모두 다른 시작 위치와 잠재적으로 다른 종료 위치를 갖습니다. HPA *는 각 유닛에서 A *를 개별적으로 실행하는 것보다 훨씬 빠르게 모든 유닛에 대한 "최적의" 경로 를 신속하게 찾기 위해 그래프를 계층으로 나눕니다 . 또한보십시오
    • PRA * (2005) : 내가 이해 한 바에 따르면 PRA * (Partial Refinement A *) 는 HPA *와 동일한 문제를 다른 방식으로 해결합니다. 둘 다 "유사한 성능 특성"을 가지고 있습니다 .
    • HAA * (2008) : HAA * (Hierarchical Annotated A *) 는 일부 지형에서 일부 단위의 제한된 통과를 허용하는 HPA *의 일반화입니다 (예 : 일부 단위는 통과 할 수 있지만 더 큰 단위는 통과 할 수없는 작은 경로). 또는 비행 장치 만 통과 할 수있는 구멍 등)
  • 다른 / 알 수없는
    • LPA (1997) : LPA (Loop-free path-finding algorithm) 는 다른 알고리즘이 해결하는 문제와 거의 관련 이없는 라우팅 알고리즘 인 것으로 보입니다 . 이 논문은 인터넷의 여러 곳에서 LPA *를 소개하는 논문으로 혼동되고 (잘못) 언급되어 있기 때문에 언급하고 있습니다.
    • LEARCH (2009) : LEARCH는 머신 러닝 알고리즘의 조합으로 로봇에게 최적의 경로를 찾는 방법을 가르치는 데 사용됩니다. 저자는 더 나은 결과를 위해 LEARCH를 Field D *와 결합하는 것이 좋습니다.
    • BDDD * (2009) : ??? 용지에 접근 할 수 없습니다.
    • SetA * (2002) : ??? 이것은 분명히 그래프 의 "이진 결정 다이어그램" (BDD) 모델 을 검색하는 A *의 변형 입니까? 그들은 어떤 경우에는 그것이 "A *보다 몇 배나 더 빠르다"고 주장한다 . 그러나 올바르게 이해하면 그래프의 각 노드에 많은 모서리가있는 경우가 있습니까?

이 모든 것을 감안할 때 LPA * 가 내 문제에 가장 적합한 것으로 보입니다 .


글쎄. 나는 또한 일부 알고리즘을 비교 하는 @lhrios 가이 논문을 찾았습니다 .
mg007

나는 이것이 오래되었다는 것을 알고 있지만 Field D *에 대한 설명에서 작은 결함에 주목할 가치가 있다고 생각합니다. 일반 D *는 "격자"로 제한되지 않으며 불연속 그래프로 제한됩니다. 종이가 만드는 요점은 A *, D * 등을 작동 시키려면 연속 공간을 덩어리로 분할해야하므로 이동 가능한 각도가 제한된다는 것입니다. Field D *는 그러한 제약을 없애고 후계자 상태를 불연속적인 방식이 아닌 연속적인 방식으로 처리 할 수있게합니다 (약간의 속임수 관련). 예를 들어 2D 그리드를 사용하기 때문에 D * / A * 등은 절대로 그리드로 제한되지 않습니다.
LinearZoetrope

필자는 논문 D가 3D 버전에서 작동했다고 언급하지만 필드 D *는 그리드로 제한되어 있다고 언급해야합니다. 이것은 사용하는 보간 때문입니다. 여전히 A *와 D *는 임의의 수의 후속 상태가있는 그래프에서 작동한다는 것을 의미하며, 필드 D *는 D *가 그리드 기반 계획을 사용하는 시나리오를 개선 한 것입니다.
LinearZoetrope

Field D *와 Theta * / Incremental Phi *의 중요한 차이점은 Field D *는 각 사각형에 대해 고유 한 가중치를 가질 수 있지만 Theta *와 Incremental Phi *는 방문 할 수있는 모든 사각형에 대해 동일한 가중치를 갖도록 제한됩니다. 따라서, Incremental Phi *는 필드 D *보다 우수하지 않습니다.
HelloGoodbye

1
@Jsor : 다음은 Field D *의 3D 버전입니다. 3D Field D-JPL Robotics
HelloGoodbye

16

이 범주에서 D *, D * -Lite 또는 증분 알고리즘을 사용할 때는 큰주의가 필요합니다 (그리고이 경고가 문헌에 거의 언급되지 않았다는 점은 주목할 가치가 있습니다). 이러한 유형의 알고리즘은 역 검색을 사용합니다. 즉, 외부로 퍼지는 리플과 같이 목표 노드에서 외부로 비용을 계산합니다. 모서리 비용이 변경되면 (예 : 벽을 추가하거나 제거 할 때) 변경에 영향을받는 탐색 된 (일명 '방문 된') 노드의 하위 집합 만 업데이트하기위한 다양한 효율적인 전략이 있습니다.

목표 위치와 관련하여 이러한 변화의 위치가 알고리즘의 효율성에 막대한 차이를 만든다는 것이 큰 경고입니다. 나는 다양한 논문과 논문에서 모든 증분 알고리즘의 최악의 성능이 모든 정보를 버리고 평범한 오래된 A *와 같이 비 증분적인 것으로 시작하는 것보다 더 나빠질 수 있음을 완전히 보여주었습니다 .

변경된 비용 정보가 확장 검색 전선 ( '방문 된'영역)의 주변에 가까울 경우 경로를 거의 변경하지 않아도되며 증분 업데이트가 빠릅니다. 적절한 예는 센서가 본체에 부착 된 모바일 로봇입니다. 센서는 로봇 근처의 세계 만 볼 수 있으므로이 지역의 변경 사항이 있습니다. 이 영역은 목표가 아니라 검색의 시작점이므로 모든 것이 잘 작동하며 알고리즘은 변경 사항을 수정하기 위해 최적의 경로를 업데이트하는 데 매우 효율적입니다.

변경된 비용 정보가 검색 목표에 가깝거나 시나리오에서 시작뿐만 아니라 목표 변경 위치를 볼 때 이러한 알고리즘은 치명적인 속도 저하를 겪습니다. 이 시나리오에서는 변경된 영역이 거의 모든 미리 계산 된 경로가 변경 사항을 통과하고 다시 평가되어야하는 목표에 매우 근접하므로 거의 모든 저장된 정보를 업데이트해야합니다. 증분 업데이트를 수행하기 위해 추가 정보와 계산을 저장해야하는 오버 헤드로 인해이 규모의 재평가는 새로 시작하는 것보다 느립니다.

예제 시나리오에서는 사용자가 원하는 벽을 이동할 수있는 것처럼 보이므로 D *, D * -Lite, LPA * 등을 사용하면이 문제가 발생합니다. 알고리즘의 시간 성능은 사용자에 따라 달라질 수 있습니다. 입력. 일반적으로 "이것은 나쁜 것"입니다 ...

예를 들어, CMU의 Alonzo Kelly 그룹은 지상 로봇과 공중 로봇을 결합하여 실시간으로 인식 정보를 공유하는 PerceptOR라는 환상적인 프로그램을 가지고있었습니다. 헬리콥터를 사용하여 지상 차량 계획 시스템에 실시간 비용 업데이트를 제공하려고 할 때 헬리콥터가 지상 차량보다 먼저 비행하여 목표에 더 가까운 비용 변화를보고 속도를 늦출 수 있기 때문에이 문제에 부딪 쳤습니다. 그들의 알고리즘을 다운시킵니다. 그들은이 흥미로운 관찰에 대해 토론 했습니까? 결국, 그들이 관리하는 최선의 방법은 헬리콥터를 지상 차량 바로 위로 날아가 세계에서 가장 비싼 센서 마스트로 만드는 것입니다. 물론, 나는 사소합니다. 그러나 아무도 말하고 싶지 않은 큰 문제입니다.

이것에 대해 주로 저에 의해 논의되는 소수의 논문 만이 있습니다. 이 질문에 나열된 원본 논문의 저자 또는 학생이 작성한 논문 중에서 실제로이 문제를 언급 한 논문 만 생각할 수 있습니다. Likhachev와 Ferguson은 필요한 업데이트 규모를 추정하고 증분 업데이트가 새로 시작하는 것보다 오래 걸리는 경우 저장된 정보를 플러시 할 것을 제안합니다. 이것은 꽤 합리적인 해결 방법이지만 다른 것도 있습니다. 내 박사 학위는 광범위한 계산 문제에 대해 비슷한 접근 방식을 일반화 하고이 질문의 범위를 벗어나지 만 참조는 대부분의 알고리즘에 대한 철저한 개요 등이 있기 때문에 유용한 참조를 찾을 수 있습니다. http://db.acfr.usyd.edu.au/download.php/Allen2011_Thesis.pdf?id=2364를 참조 하십시오. 자세한 내용은.


1
이러한 세부 사항을 추가해 주셔서 감사합니다. BFS, A * 및 LPA *를 구현했습니다. A *는 실제로 BFS보다 약간 느립니다 (공간이 제한되는 경향이 있으므로 A *는 BFS보다 약간 적은 수의 노드 만 검색하지만 BFS는 우선 순위 대기열보다 빠른 대기열 만 필요합니다) . LPA *를 사용하면 평균 2 배 이상 빠릅니다.
BlueRaja-대니 Pflughoeft

9

주요 아이디어는 초기 계산 경로가 차단 될 때 이전 계산을 활용할 수있는 증분 알고리즘을 사용하는 것입니다. 이것은 종종 로봇, 탐색 및 계획과 관련하여 조사됩니다.

Koenig & Likkachev, 알 수없는 지형 탐색을위한 빠른 재 계획, 로봇 공학에 관한 IEEE 트랜잭션, Vol. 2005 년 6 월 21 일 No. 3 은 D * Lite를 소개합니다. D * Lite가 항상 D *만큼 빠르다는 의미에서 D *가 구식이라고 말하는 것이 안전합니다. 또한 D *는 복잡하고 이해하기 어렵고 분석 및 확장됩니다. 그림 9는 D * Lite의 의사 코드를 보여 주며 표 1은 BFS, Backward A *, Forward A *, DynamicSWSF-P 및 D *와 비교 한 D * Lite의 실험 결과를 보여줍니다.

목록에있는 최신 알고리즘 (Anytime D *, Field D *, LEARCH)을 모르겠습니다. 최근에는 임의의 워커가있는 환경에서 D * Lite를 사용하여 계획하는 로봇을 보았습니다. 이런 점에서 D * Lite가 결코 구식이라고 생각하지 않습니다. 실제적인 문제는 일반적인 엔지니어링 방식을 시도해도 아무런 해가 없다고 생각합니다. 어떤 접근 방식을 취하고 필요에 맞지 않으면 더 복잡한 것을 시도하십시오.


4

무작위 트리 또는 RRT를 빠르게 탐색하는 것에 대해 뭔가를 추가하고 싶습니다. 기본 아이디어는 인터넷 전체에서 잘 논의되고 있지만 Wikipedia 페이지의 링크와 주제에 대한 Kuffner 및 LaValle의 원본 논문으로 시작하는 것이 안전 할 것입니다.

RRT의 가장 중요한 특징은 초크 없이 매우 큰 치수 의 실제 공간을 처리 할 수 ​​있다는 것 입니다. 다이나믹을 다룰 수는 있지만 최적은 아니지만 확률 적으로 완전합니다 (계산 시간이 무한대로 진행되면 가능한 경우 성공하도록 보장됨). 비 정적 공간에서 작동하도록하는 확장 기능이 있는데, 그중 가장 좋은 것은 아래에 링크 된 Multipartite RRT 작업입니다.


0

거리 oracles 라는 데이터 구조는 이러한 문제를 처리합니다. 그러나 대부분의 연구 결과는 정적 그래프에만 해당됩니다.

그래프가 그리드 (및 평면) 인 경우 일부 동적 데이터 구조가 존재합니다 (해당 응용 프로그램에 대해 상수가 충분히 작은 지 확실하지 않음).

정확한 최단 경로 :

Jittat Fakcharoenphol, Satish Rao : 평면 그래프, 음수 가장자리, 최단 경로 및 거의 선형 시간. J. 컴퓨팅 시스. 공상 과학 72 (5) : 868-889 (2006)

대략적인 최단 경로 :

Philip N. Klein, Sairam Subramanian : 평면 그래프에서 최단 경로를위한 완전 동적 근사법. 알고리즘 미카 22 (3) : 235-249 (1998)

Ittai Abraham, Shiri Chechik, Cyril Gavoille : 금지 된 거리 레이블을 통해 평면 그래프를위한 완전히 역동적 인 근사 거리 오라클. STOC 2012 : 1199-1218


죄송하지만 정적 그래프에서만 작동하는 경우 "그러한 문제를 처리합니까?"는 무슨 뜻입니까? 묻는 문제는 특히 비 정적 그래프에 대해.
BlueRaja-대니 Pflughoeft

강조점을 변경하겠습니다. 대부분의 결과는 정적 그래프에만 해당됩니다. 일부 동적 데이터 구조가 존재합니다. 동적 데이터 구조 목록이 뒤 따릅니다.
Christian Sommer

0

학교에서 나는 개미 식민지 최적화에 덤벼 들었다 . 일부 텍스트에서는 그래프, 라우팅 네트워크 등을 지속적으로 변경하기위한 솔루션으로 선전되었습니다. 이것은 엔지니어링 된 솔루션이 아니라 페로몬을 확산시켜 좋은 경로와 나쁜 경로를 표시하여 개미가 장애물 주위를 탐색하는 방식에서 적응 한 것입니다. 그것이 당신의 문제에 효과가 있는지는 모르겠지만 흥미로운 관점이라고 생각합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.