@@ -27,49 +27,6 @@ private void addEdge (Edge edge) {
2727 this .graph [edge .getFrom ()].add (new Edge (edge .getFrom (), edge .getTo (), edge .getWeight ()));
2828 this .graph [edge .getTo ()].add (new Edge (edge .getTo (), edge .getFrom (), edge .getWeight ()));
2929 }
30-
31- private void initializeGraph () {
32- this .addEdge (new Edge (0 , 19 , 75 )); this .addEdge (new Edge (0 , 15 , 140 ));
33- this .addEdge (new Edge (0 , 16 , 118 )); this .addEdge (new Edge (19 , 12 , 71 ));
34- this .addEdge (new Edge (12 , 15 , 151 ));this .addEdge (new Edge (16 , 9 , 111 ));
35- this .addEdge (new Edge (9 , 10 , 70 )); this .addEdge (new Edge (10 , 3 , 75 ));
36- this .addEdge (new Edge (3 , 2 , 120 )); this .addEdge (new Edge (2 , 14 , 146 ));
37- this .addEdge (new Edge (2 , 13 , 138 )); this .addEdge (new Edge (2 , 6 , 115 ));
38- this .addEdge (new Edge (15 , 14 , 80 )); this .addEdge (new Edge (15 , 5 , 99 ));
39- this .addEdge (new Edge (14 , 13 , 97 )); this .addEdge (new Edge (5 , 1 , 211 ));
40- this .addEdge (new Edge (13 , 1 , 101 )); this .addEdge (new Edge (6 , 1 , 160 ));
41- this .addEdge (new Edge (1 , 17 , 85 )); this .addEdge (new Edge (17 , 7 , 98 ));
42- this .addEdge (new Edge (7 , 4 , 86 )); this .addEdge (new Edge (17 , 18 , 142 ));
43- this .addEdge (new Edge (18 , 8 , 92 )); this .addEdge (new Edge (8 , 11 , 87 ));
44-
45- /*
46- .x. node
47- (y) cost
48- - or | or / bidirectional connection
49-
50- ( 98)- .7. -(86)- .4.
51- |
52- ( 85)- .17. -(142)- .18. -(92)- .8. -(87)- .11.
53- |
54- . 1. -------------------- (160)
55- | \ |
56- (211) \ .6.
57- | \ |
58- . 5. (101)-.13. -(138) (115)
59- | | | /
60- ( 99) ( 97) | /
61- | | | /
62- .12. -(151)- .15. -(80)- .14. | /
63- | | | | /
64- ( 71) (140) (146)- .2. -(120)
65- | | |
66- .19. -( 75)- . 0. .10. -(75)- .3.
67- | |
68- (118) ( 70)
69- | |
70- .16. -(111)- .9.
71- */
72- }
7330 }
7431
7532 private static class Edge {
@@ -117,13 +74,53 @@ private void printSolution () {
11774 }
11875 }
11976
77+ private static void initializeGraph (Graph graph , ArrayList <Integer > data ) {
78+ for (int i = 0 ; i < data .size (); i +=4 ) {
79+ graph .addEdge (new Edge (data .get (i ), data .get (i + 1 ), data .get (i + 2 )));
80+ }
81+ /*
82+ .x. node
83+ (y) cost
84+ - or | or / bidirectional connection
85+
86+ ( 98)- .7. -(86)- .4.
87+ |
88+ ( 85)- .17. -(142)- .18. -(92)- .8. -(87)- .11.
89+ |
90+ . 1. -------------------- (160)
91+ | \ |
92+ (211) \ .6.
93+ | \ |
94+ . 5. (101)-.13. -(138) (115)
95+ | | | /
96+ ( 99) ( 97) | /
97+ | | | /
98+ .12. -(151)- .15. -(80)- .14. | /
99+ | | | | /
100+ ( 71) (140) (146)- .2. -(120)
101+ | | |
102+ .19. -( 75)- . 0. .10. -(75)- .3.
103+ | |
104+ (118) ( 70)
105+ | |
106+ .16. -(111)- .9.
107+ */
108+ }
109+
120110 public static void main (String [] args ) {
121111 //heuristic function optimistic values
122112 int [] heuristic = {366 , 0 , 160 , 242 , 161 , 178 , 77 , 151 , 226 ,
123113 244 , 241 , 234 , 380 , 98 , 193 , 253 , 329 , 80 , 199 , 374 };
124114
125115 Graph graph = new Graph (20 );
126- graph .initializeGraph ();
116+ ArrayList <Integer > graphData = new ArrayList <>(Arrays .asList (0 , 19 , 75 , null ,
117+ 0 , 15 , 140 , null , 0 , 16 , 118 , null , 19 , 12 , 71 , null , 12 , 15 , 151 , null ,
118+ 16 , 9 , 111 , null , 9 , 10 , 70 , null , 10 , 3 , 75 , null , 3 , 2 , 120 , null ,
119+ 2 , 14 , 146 , null , 2 , 13 , 138 , null , 2 , 6 , 115 , null , 15 , 14 , 80 , null ,
120+ 15 , 5 , 99 , null , 14 , 13 , 97 , null , 5 , 1 , 211 , null , 13 , 1 , 101 , null ,
121+ 6 , 1 , 160 , null , 1 , 17 , 85 , null , 17 , 7 , 98 , null , 7 , 4 , 86 , null ,
122+ 17 , 18 , 142 , null , 18 , 8 , 92 , null , 8 , 11 , 87 ));
123+ initializeGraph (graph , graphData );
127124
128125 PathAndDistance solution = aStar (3 , 1 , graph , heuristic );
129126 solution .printSolution ();
0 commit comments