Skip to content

Commit 8606131

Browse files
author
holmir97
committed
깃 테스트
0 parents  commit 8606131

File tree

1 file changed

+157
-0
lines changed

1 file changed

+157
-0
lines changed

ShortestPath_Manager.java

Lines changed: 157 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,157 @@
1+
2+
public class ShortestPath_Manager {
3+
4+
// 실행 메소드
5+
public static void run(InputGraph.Graph graph, int vertices, int count){
6+
System.out.println("---------------그래프 #"+ count+"---------------");
7+
// 그래프 확인
8+
graph.printGraph();
9+
10+
// Negative Cycle 검사
11+
// Negative Cycle 가 있다면 Bellman 없다면 dijkstra
12+
if( CheckNegativeCycle.isNeg(graph,0)) {
13+
System.out.println("\nNegative Cycle 존재O -> Bellman-Ford 실행");
14+
BellmanSP bSP = new BellmanSP(graph, vertices);
15+
bSP.bellmanSP(0);
16+
System.out.println("\n");
17+
}
18+
else {
19+
System.out.println("\nNegative Cycle 존재X -> dijkstra 실행");
20+
DijkstraSP dSP = new DijkstraSP(graph,vertices);
21+
dSP.dijkstraSP(0);
22+
System.out.println("\n");
23+
}
24+
25+
}
26+
27+
public static void main(String[] args) {
28+
// Graph 생성
29+
30+
// VERTICES = 10 , not exists NegativeCycle_DijkstraSP
31+
int vertices1 = 10;
32+
InputGraph.Graph graph1 = new InputGraph.Graph(vertices1);
33+
graph1.addEdge(0, 1, 10);
34+
graph1.addEdge(0, 3, 20);
35+
graph1.addEdge(0, 4, 20);
36+
graph1.addEdge(0, 5, 5);
37+
graph1.addEdge(0, 6, 15);
38+
graph1.addEdge(1, 2, 5);
39+
graph1.addEdge(1, 3, 10);
40+
graph1.addEdge(2, 1, 5);
41+
graph1.addEdge(2, 3, 5);
42+
graph1.addEdge(3, 4, 10);
43+
graph1.addEdge(4, 5, 5);
44+
graph1.addEdge(6, 5, 10);
45+
graph1.addEdge(7, 0, 5);
46+
graph1.addEdge(7, 1, 20);
47+
graph1.addEdge(7, 6, 5);
48+
graph1.addEdge(8, 1, 15);
49+
graph1.addEdge(8, 7, 20);
50+
graph1.addEdge(8, 9, 10);
51+
graph1.addEdge(9, 1, 5);
52+
graph1.addEdge(9, 2, 15);
53+
54+
// VERTICES = 11 , exists NegativeCycle_BellmanSP
55+
int vertices2 = 11;
56+
InputGraph.Graph graph2 = new InputGraph.Graph(vertices2);
57+
graph2.addEdge(0, 1, 2);
58+
graph2.addEdge(0, 2, 1);
59+
graph2.addEdge(0, 6, 1);
60+
graph2.addEdge(1, 2, 4);
61+
graph2.addEdge(1, 3, 4);
62+
graph2.addEdge(1, 10, 1);
63+
graph2.addEdge(3, 6, -2);
64+
graph2.addEdge(3, 5, 4);
65+
graph2.addEdge(4, 3, 2);
66+
graph2.addEdge(4, 9, 3);
67+
graph2.addEdge(4, 1, 3);
68+
graph2.addEdge(5, 7, -2);
69+
graph2.addEdge(6, 2, 3);
70+
graph2.addEdge(6, 5, -3);
71+
graph2.addEdge(7, 8, 2);
72+
graph2.addEdge(8, 5, -2);
73+
graph2.addEdge(9, 10, 1);
74+
75+
76+
// VERTICES = 10 , not exists NegativeCycle_DijkstraSP
77+
int vertices3 = 10;
78+
InputGraph.Graph graph3 = new InputGraph.Graph(vertices3);
79+
graph3.addEdge(0, 1, 40);
80+
graph3.addEdge(0, 2, 8);
81+
graph3.addEdge(0, 3, 10);
82+
graph3.addEdge(1, 4, 6);
83+
graph3.addEdge(1, 6, 10);
84+
graph3.addEdge(2, 1, 4);
85+
graph3.addEdge(2, 3, 12);
86+
graph3.addEdge(2, 5, 2);
87+
graph3.addEdge(3, 5, 1);
88+
graph3.addEdge(4, 2, 2);
89+
graph3.addEdge(4, 5, 2);
90+
graph3.addEdge(4, 6, 4);
91+
graph3.addEdge(5, 7, 4);
92+
graph3.addEdge(5, 8, 3);
93+
graph3.addEdge(6, 7, 20);
94+
graph3.addEdge(6, 9, 1);
95+
graph3.addEdge(7, 4, 0);
96+
graph3.addEdge(7, 9, 20);
97+
graph3.addEdge(8, 3, 6);
98+
graph3.addEdge(8, 7, 10);
99+
graph3.addEdge(8, 9, 20);
100+
101+
102+
// VERTICES = 12 , exists NegativeCycle_BellmanSP
103+
int vertices4 = 12;
104+
InputGraph.Graph graph4 = new InputGraph.Graph(vertices4);
105+
graph4.addEdge(0, 1, 1);
106+
graph4.addEdge(0, 5, 3);
107+
graph4.addEdge(1, 2, 2);
108+
graph4.addEdge(2, 4, 1);
109+
graph4.addEdge(3, 1, 3);
110+
graph4.addEdge(3, 2, -3);
111+
graph4.addEdge(4, 3, -3);
112+
graph4.addEdge(5, 8, 2);
113+
graph4.addEdge(6, 4, -1);
114+
graph4.addEdge(7, 9, 3);
115+
graph4.addEdge(8, 10, -1);
116+
graph4.addEdge(9, 11, -2);
117+
graph4.addEdge(10, 4, 2);
118+
graph4.addEdge(10, 5, 4);
119+
graph4.addEdge(10, 6, -1);
120+
graph4.addEdge(10, 7, 1);
121+
graph4.addEdge(11, 4, 2);
122+
graph4.addEdge(11, 7, 1);
123+
124+
// VERTICES = 10 , not exists NegativeCycle_DijkstraSP
125+
int vertices5 = 10;
126+
InputGraph.Graph graph5 = new InputGraph.Graph(vertices5);
127+
graph5.addEdge(0, 1, 5);
128+
graph5.addEdge(0, 2, 2);
129+
graph5.addEdge(1, 3, 3);
130+
graph5.addEdge(1, 4, 7);
131+
graph5.addEdge(2, 1, 2);
132+
graph5.addEdge(2, 6, 9);
133+
graph5.addEdge(3, 2, 3);
134+
graph5.addEdge(3, 4, 2);
135+
graph5.addEdge(3, 6, 6);
136+
graph5.addEdge(4, 5, 8);
137+
graph5.addEdge(4, 6, 5);
138+
graph5.addEdge(4, 7, 7);
139+
graph5.addEdge(5, 8, 4);
140+
graph5.addEdge(6, 7, 2);
141+
graph5.addEdge(7, 5, 3);
142+
graph5.addEdge(7, 9, 1);
143+
graph5.addEdge(9, 3, 3);
144+
145+
146+
147+
148+
// 그래프 검사 후 Algorithm 실행
149+
run(graph1, vertices1,1); //1번 그래프
150+
run(graph2, vertices2,2); //2번 그래프
151+
run(graph3, vertices3,3); //3번 그래프
152+
run(graph4, vertices4,4); //4번 그래프
153+
run(graph5, vertices5,5); //5번 그래프
154+
155+
}
156+
157+
}

0 commit comments

Comments
 (0)