티스토리 뷰
자바 최단경로 알고리즘
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Dikstra
{
public static void main(String[] args) throws Exception
{
int n = 10; //배열의 최대길이
int m = 5000; //너무 멀어서 이동하지 못하는 값 (다른수에 비해 충분히 크면 됨)
int i,j,k=0;
int s,e,min;
int [] v = new int[n];
int [] distance = new int[n]; //누적거리 배열
int [] via = new int[n];
//인접-행렬 메트릭스
int [][] data = {
{0,2,m,m,m,3,m,m,2,1},
{2,0,4,1,m,m,m,m,2,2},
{m,4,0,m,3,m,m,m,2,m},
{m,1,m,0,3,m,2,m,4,2},
{m,m,3,3,0,m,m,4,6,4},
{3,m,m,m,m,0,6,m,m,1},
{m,m,m,2,m,6,0,4,7,2},
{m,m,m,m,4,m,4,0,5,5},
{m,4,m,m,2,m,4,2,m,m},
{m,1,m,5,4,m,4,m,5,8}
};
BufferedReader br = new BufferedReader( new InputStreamReader( System.in ));
System.out.print("\n출발점을 입력하시오 : ");
s = Integer.parseInt(br.readLine());
System.out.print("\n도착점을 입력하시오 : ");
e = Integer.parseInt(br.readLine());
for( j = 0; j < n; j++ )
{
v[j] = 0;
distance[j] = m;
}
distance[s-1] = 0;
for( i=0; i < n; i++ )
{
min = m;
for( j=0; j < n; j++ )
{
if( v[j] == 0 && distance[j] < min )
{
k = j;
min = distance[j];
}
}
v[k] = 1;
if(min == m) break;
for(j = 0; j < n; j++)
{
if(distance[j] > distance[k] + data[k][j])
{
distance[j] = distance[k] + data[k][j];
via[j]=k;
}
}
}
System.out.printf("\n %d에서 출발하여, %d로 가는 최단 거리는 %d입니다.\n", s, e, distance[e-1]);
int path[] = new int[n];
int path_cnt=0;
k = e-1;
while(true)
{
path[path_cnt++]=k;
if(k == s-1)break;
k = via[k];
}
System.out.print(" 경로는 : ");
for(i = path_cnt-1; i >= 1; i--)
{
System.out.printf("%d -> ",path[i]+1);
}
System.out.printf("%d입니다",path[i]+1);
}
}
[출처] 다익스트라 알고리즘(최단경로 찾기)|작성자 초리
'프로그램' 카테고리의 다른 글
다익스트라(Dijkstra) 알고리즘 (0) | 2014.02.08 |
---|---|
자바 최단거리 알고리즘 (Dijkstra) (0) | 2014.02.08 |
자바스크립트 replace (12) | 2014.02.07 |
전자정부프레임웍에서 ibatis 쿼리 로그 생성 (0) | 2014.02.05 |
jquery mobile RWD Tables (11) | 2014.02.04 |
- Total
- Today
- Yesterday
- 이클립스
- 겨울왕국
- 부산
- base64
- asp
- MSSQL
- 블로그
- 쿼리
- jQuery Mobile
- ibatis
- 자바스크립트
- 맛집
- 소프트웨어공학
- JSP
- 연말정산
- jstl
- 전자정부프레임웍
- 블로그 마케팅
- 자바
- jqm
- jQuery
- 가사
- 톰캣
- OST
- Tomcat
- Eclipse
- Let it Go
- MySQL
- java
- 프로그램
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |