Fathurrahman Annafabi Bab 11
Fathurrahman Annafabi Bab 11
STRUKTUR DATA
PROGRAM TEKNOLOGI INFORMASI DAN ILMU
KOMPUTER
UNIVERSITAS BRAWIJAYA
A. DEFINISI MASALAH
B. SOURCE CODE
System.out.println("------------------------------------------
47 ");
System.out.println(" Jumlah Edge
48 ");
System.out.println("------------------------------------------
49 ");
50 for (int i = 0; i < jNode; i++) {
System.out.println("Vertex["+i+"] Edge Masuk :
51 "+inEdge(i)+", Edge Keluar : "+outEdge(i));
52 }
System.out.println("------------------------------------------
53 \n");
54 }
55 public int inEdge(int idx) {
56 int count = 0;
57 for (int i = 0; i < jNode; i++) {
58 Node temp = node[i];
59 while (temp != null) {
60 if (idx == temp.getDt()) {
61 count++;
62 }
63 temp = temp.getNext();
64 }
65 }
66 return count;
67 }
68 public int outEdge(int idx) {
69 int count = 0;
70 Node temp = node[idx];
71 while (temp != null) {
72 count++;
73 temp = temp.getNext();
74 }
75 return count;
76 }
System.out.println("------------------------------------------
79 ");
System.out.println(" Matrix Adjacency
80 ");
System.out.println("------------------------------------------
81 ");
82 System.out.print(" ");
83 for (int i = 0; i < jNode; i++) {
84 System.out.print("["+(i)+"]");
85 }
86 System.out.println("");
87 for (int i = 0; i < jNode; i++) {
88 System.out.print("["+(i)+"]| ");
89 for (int j = 0; j < jNode; j++) {
90 System.out.print(matAdj[i][j] + " ");
91 }
92 System.out.println("|");
93 }
94
System.out.println("------------------------------------------
-\n");
95 }
System.out.println("------------------------------------------
98 ");
System.out.println(" Tetangga Node
99 ");
System.out.println("------------------------------------------
100 ");
101 for (int i = 0; i < jNode; i++) {
102 System.out.print("Tetangga ["+i+"] : ");
103 Node temp = tetangga[i];
104 Node n = node[i];
105 while (temp != null) {
106 System.out.print(temp.getDt()+" <= ");
107 temp = temp.getNext();
108 }
109 System.out.print("Node["+i+"]");
110 while (n != null) {
111 System.out.print(" => "+n.getDt());
112 n = n.getNext();
113 }
114 System.out.println();
115 }
System.out.println("------------------------------------------
116 \n");
117 }
System.out.println("------------------------------------------
120 ");
System.out.println(" Breadth First Search
121 ");
System.out.println("------------------------------------------
122 ");
123 find = false;
124 array = new int[jNode];
125 array[0] = 0;
126 System.out.print(array[0]);
127 int Checkpoint = 1;
128 int i = 0;
129 int p = 1;
130 while (array[jNode - 1] == 0) {
131 for (int j = 0; j < jNode; j++) {
132 if (matAdj[i][j] >= 1) {
133 for (int k : array) {
134 if (array[k] == j) {
135 find = true;
136 }
137 }
138 if (find != true) {
139 array[Checkpoint] = j;
140 Checkpoint++;
141 }
142 }
143 find = false;
144 }
145 i = array[p];
146 p++;
147 }
148 for (int l = 1; l < jNode; l++) {
149 System.out.print(" >> " + array[l]);
150 }
System.out.println("\n----------------------------------------
151 --\n");
152 }
153 public void dfs(int idx) {
154 array = new int[jNode];
System.out.println("------------------------------------------
155 ");
System.out.println(" Depth First
156 Search("+idx+")");
System.out.println("------------------------------------------
157 ");
158 dfsNode(0);
159 System.out.print(0);
160 for (int i = 1; i < jNode; i++) {
161 if (idx == 0) {
162 break;
163 } else if (idx != array[i]) {
164 System.out.print(" >> " + array[i]);
165 } else if (idx == array[i]) {
166 System.out.println(" >> " + array[i]);
167 break;
168 }
169 }
System.out.println("------------------------------------------
170 \n");
171 }
172 public void dfsNode(int idx) {
173 int[] temp = new int[jNode + 1];
174 int count = 0;
175 find = false;
176 for (int j = 0; j < jNode; j++) {
177 if (matAdj[idx][j] >= 1) {
178 for (int w : array) {
179 if (array[w] == j) {
180 find = true;
181 }
182 }
183 if (find != true) {
184 temp[count] = j;
185 count++;
186 }
187 }
188 find = false;
189 }
190 for (int k = 0; k < jNode; k++) {
191 for (int w = 0; w < jNode; w++) {
192 if (temp[k] == array[w]) {
193 find = true;
194 }
195 }
196 if (find != true) {
197 array[checkpoint] = temp[k];
198 checkpoint++;
199 dfsNode(temp[k]);
200 }
201 find = false;
202 }
203 }
System.out.println("------------------------------------------
208 ");
if(node[source].getJarak() >
209 node[destination].getJarak()) {
System.out.println("Jarak terpendek =
210 "+node[destination].getJarak());
211 } else {
System.out.println("Jarak terpendek =
212 "+node[source].getJarak());
213 }
System.out.println("------------------------------------------
214 ");
215 }
C. PEMBAHASAN
D. SCREENSHOT PROGRAM
E. KESIMPULAN
1. ADT Graph merupakan konsep struktur data non linier, yang terdiri dari
kumpulan node (Vertex) dan saling berhubungan (Edge). Setiap node dapat
dihubungkan dengan node-node yang lain tanpa adanya hubungan
heirarkhis seperti tree, dengan kata lain Graph memiliki relasi many to
many, yaitu tiap elemen dapat memiliki 0 atau lebih dari 1 cabang.
2. Penerapan ADT Graph dalam dunia nyata misalnya: untuk pemetaan kota-
kota dalam aplikasi google maps, routing dalam teori jaringan komputer,
untuk penentuan rute terpendek dalam sebuah perjalanan wisata.