나는 경로를 끝내기 위해 A와 B 사이에 조니가 있습니다. 경로는 초기 및 최종 킬로미터로 정의됩니다.겹치는 동일한 경로의 다른 경로
path 0 -> (0, 10)
path 1 -> (10, 25)
path 2 -> (10, 15)
path 3 -> (15, 20)
path 4 -> (20, 30)
path 5 -> (25, 35)
path 6 -> (30, 35)
path 7 -> (35, 40)
path 8 -> (40, 50)
위에서 볼 수 있듯이 겹치는 경로가 있습니다.
path 0 -> NONE
path 1 -> 2,3,4
path 2 -> 1
path 3 -> 1
path 4 -> 1,5
path 5 -> 4,6
path 6 -> 5
path 7 -> NONE
path 8 -> NONE
내가 싶어하면 경로에서 중복 경로없이 모든 가능한 경로하지만 하나는주의해야한다 : 사실, 우리는 중복 경로의 목록을 얻을 수 있습니다. 이 문제를 해결할 수있는 알고리즘이 있습니까? 재귀 또는 스택과 같은 유용한 데이터 구조로 구현하려고 시도했지만 최종 가능한 경로 목록을 얻기가 매우 어려웠고 문제를 역으로 처리하고 폐기 된 경로의 목록을 얻으려고 시도했습니다. :
route 0-2-3-4-6-7-8 -> [1,5] discarded
route 0-2-3-5-7-8 -> [1,4,6] discarded
route 0-1-6-7-8 -> [2,3,4,5] discarded
route 0-1-5-7-8 -> [2,3,4,6] discarded
의사 알고리즘을 작성하거나이 알고리즘에 대한 참조를 제공 할 수 있습니까? 한 경로를 가져 오는 방법을 볼 수 없으며 나머지 경로를 얻기 위해 이전 겹치는 경로로 돌아가는 등 모든 가능한 경로가있을 때까지 계속됩니다. 고맙습니다. – RobinHood
일반적으로 StackOverflow 응답을 넘어서고 있습니다. 찾은 알고리즘의 의사 코드에 어디서 붙어 있습니까? 그 코멘트를 게시하기 전에 적어도 "그래프 트래버 설 알고리즘"을 완료해야합니다. 많은 사람들이 의사 코드를 사용합니다. Dijkstra의 알고리즘으로 시작하여 거기에서 분기하십시오. – Prune
사실, 나는 "그래프 탐색"을 원하지 않습니다. 내가 시도한 것은 중첩 목록을 반복하고 현재 경로에 겹침이 있는지 확인하는 것입니다. 그렇다면 새 경로 (재귀)를 유지하고 다음 단계에서 중복 경로를 삭제하십시오. 그런 다음 새로운 겹치는 경로가있는 경로를 발견하면 경로를 완료하고 경로를 얻을 때까지 다른 경로 (재귀)를 작성합니다. 마지막으로, 모든 경로를 얻어야하지만, 무한 재귀가 있거나 폐기 된 경로 목록이 제대로 업데이트되지 않기 때문에 무언가가 내 접근법에 없습니다. 여기에 일부 코드를 업로드하는 데 도움이 될 수 있습니까? – RobinHood