2013-02-14 10 views
-1

이진 행렬의 두 점 사이에서 최단 경로를 찾고 싶습니다.이진 행렬의 두 점 사이의 최단 경로

매트릭스의 소스와 대상은 사용자가 지정합니다. 우리는 행렬에서 1 인 위치를 선택할 수 있으며 왼쪽, 오른쪽으로 대각선으로 이동하여 &을 올립니다.

대각선으로 이동하는 것이 루트 2이면 그렇지 않습니다. 따라서 알고리즘을 찾는 방법을 원합니다.

+0

http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm –

+0

먼저 행렬에서 _graph_를 생성하십시오. 힌트 : 모든 가로/세로 인접 셀 사이에는 1의 무게가 있고 가장자리는 대각선으로 인접한 모든 셀 사이의 가장자리에 무게 sqrt (2)가 있습니다. 그런 다음 Dijkstra를 적용하십시오. –

답변

3

당신이 찾고있는 것은 단일 소스 최단 경로 알고리즘입니다. 즉, 그래프에서 소스 노드를 선택하고 모든 노드 또는 하나의 노드에서 가장 짧은 노드를 찾습니다. 여러 알고리즘이 목적을 위해 존재 -

제안 사항을 읽어보고 용도에 맞는 것을 선택하십시오.

+0

Bellman Ford는 Dijkstra 알고리즘보다 최악의 성능을 나타 내기 때문에 일반적으로 포지티브 에지가있는 그래프에는 사용되지 않습니다. Floyd Warshall은 모든 쌍의 최단 경로입니다. 동일한 그래프에서 많은 쿼리를 사용하면 좋습니다. – nhahtdh

+0

나는이 모든 알고리즘을 읽었지 만 매트릭스의 크기가 400 * 400과 같이 크기 때문에이 알고리즘을 적용하기가 어렵습니다. 위의 알고리즘은 대각선 거리를 결정할 수 없기 때문에. –

+0

plz 좀 도와주세요 ... 나는 알고리즘과 C 코드를 필요로하는 바이너리 행렬 (400 * 400)을 파일, 소스 및 대상 축 (사용자 = 60,9 및 d = 400,300)으로 가정합니다. 대각선으로 이동 한 경우 루트 사이의 최단 경로를 찾거나 그렇지 않으면 1 –

관련 문제