Dijkstra 알고리즘에서 어디를 지나갔는지 알고 싶은데요~
글쓴이: tyolee83 / 작성시간: 금, 2006/12/01 - 8:07오후
Dijkstra 알고리즘을 수행하여 최단경로를 구하는 네비게이션 시뮬레이션을 만드는 중입니다.
각 노드마다 체크박스를 두어 최단경로가 형성되는 노드들에
체크박스를 활성화 시키려 하는데요,
Dijkstra 알고리즘만 따라서 구현했더니
최종 결과값만 있고, 중간에 어딜 거칠지 못찾겠네요 ㅠㅠ
아래에 제가 구현한 Dijkstra 알고리즘인데
어느부분에서 지나가는 경로의 노드를 알수 있을지
조언좀 부탁드립니다.
그리고 코드를 이쁘게 붙이는 방법이 뭐 있었던것 같은데, 뭐였죠;;
오랜만에 KLDP에 와서요 ㅠㅠ
그것도 알려주세요 :)
답변에 미리 감사드립니다~
for (int i = 0; i < MatrixSize; i++) { v[i] = 0; //방문상태 초기화 distance[i] = m; //거리에 전부 최대값 대입 } distance[s - 1] = 0; //자기자신의 거리는 0 for (int i = 0; i < MatrixSize; i++) { min = m; for (int j = 0; j < MatrixSize; j++) { if (v[j] == 0 && distance[j] < min) { k = j; min = distance[j]; } } v[k] = 1; if (min == m) { //Not Connected } for (int j = 0; j < MatrixSize; j++) { if (distance[k] + Graph[k, j] < distance[j]) { distance[j] = distance[k] + Graph[k, j]; } } }
Forums:
bbcode 가
[, ] 에서 각괄호(angle braket) 으로 바뀌었습니다.
일반 HTML 과 같죠. login 하기 전에 게시판을 열면 밑에 설명이 있습니다.
code 가 어지러우면 보고 싶지가 않군요.
최소 경로 기억하기.
글쓴님께서 작성한 알고리즘이 맞는지는 확인 안했어요.... 따라서 알고리즘은 알아서 체크하시고요.
조언을 하자면,
Dijkstra 알고리즘은 매 Iteration당 시작점을 제외한 모든 점의 lable이 "변경"가능한 임시 label이기 때문에 최단 경로 그 자체를 저장하는것이 까다롭습니다.
굳이 Dijkstra 알고리즘을 써야 하겠다면, 매 Iteration 마다 시작점에서 lable이 붙여진 모든 점까지의 경로를 기억하게 해야 합니다.
따라서 각 점의 lable을 나타내는 변수 distance[k] 로는 모자라고,
시작점에서 점 k까지의 최단 경로를 저장해 주는 path[k]라는 변수? (사실상 파이썬의 리스트같은) 자료구조가 또 있어야 겠네요.
그래서 점 k에서 인접한 점들을 보다가 점 j의 lable을 변경하는 부분 바로 다음에
(distansk[j]를 갱신해 주는 부분)
path[j] = path[k] 에 (k와 j를 잇은 모서리)를 추가함
형태로 distanse[k]를 갱신해주는 곳 (k번째 꼭지점의 lable을 갱신해주는 곳 맞지요?)
다음에 삽입하시면 됩니다.
실행이 끝나고 path[종착점]을 보시면 되겠지요.
-----------------------
No Pain, No Gain.
No Pain, No Gain.
책을 찾아보시면 될 것 같습니다.
http://kangcom.com/common/bookinfo/bookinfo.asp?sku=200403030004
알고리즘(3/E) : Foundations of Algorithms USING C++ PSEUDOCODE
Neapolitan 교수의 책인데 예전에 2판을 조금 읽었을 때 원하시는 것이 나오더군요.
path 를 이차원배열로 선언하고 재귀적인 행태로 정보를 저장함으로써 나중에 재귀호출로 찾아냅니다.
Dijkstra algorithm 의 time complexity 를 증가시키지 않기 때문에 좋더군요.
학생이시라면 도서관에서 빌리실 수 있겠죠.
Shani, Horowitz, Anderson-Freed 의 'C로 쓴 자료구조론'에서는 경로구하는 것은 아마 연습문제일겁니다.
미쿡은 왜케 책값이
미쿡은 왜케 책값이 비쌀까요.
말이 되요?200불이라니
댓글 달기