You are on page 1of 12

Iterasi Algoritma Dijkstra

Tugas Struktur Data


Alexander 502520147
Algoritma Dijkstra adalah algoritma yang digunakan 
untuk
mencari jarak tempuh terpendek dari sebuah vertex 
source. Algoritma DIjkstra akan me-traverse satu per 
satu node dan mencatat jaraknya serta mengubah 
jarak menuju sebuah node apabila ditemukan jarak 
yang lebih singkat
Pada iterasi berikut, akan digunakan graf pada figur 9.81. addEdge(0,1,2);
Graf dimasukkan ke dalam program menggunakan  addEdge(0,3,3);
adjacency list yang kemudian dimasukkan ke dalam  addEdge(0,4,2);
addEdge(0,9,1);
sebuah matrix. TIpe graf adalah directed graph. addEdge(1,2,2);
addEdge(2,4,2);
addEdge(2,5,1);
addEdge(2,10,4);
addEdge(3,9,4);
addEdge(3,6,2);
addEdge(3,4,3);
addEdge(4,6,1);
addEdge(4,7,2);
addEdge(4,8,3);
addEdge(4,5,3);
addEdge(5,10,3);
addEdge(5,8,1);
addEdge(6,9,6);
addEdge(6,7,6);
addEdge(7,8,6);
addEdge(8,10,4);
void Dijkstra(int Graph[MAX][MAX], int n, int start) {
int cost[MAX][MAX], distance[MAX], pred[MAX];
int visited[MAX], count, mindistance, nextnode, i, j;

// Creating cost matrix


for (i = 0; i < n; i++)
for (j = 0; j < n; j++)

Mula-mula, program akan membuat cost matrix yang  if (Graph[i][j] == 0)


cost[i][j] = INFINITY;

berisikan nilai INFINITY, dalam program ini INFINITY  else


cost[i][j] = Graph[i][j];
adalah 9999. for (i = 0; i < n; i++) {
distance[i] = cost[start][i];
pred[i] = start;
visited[i] = 0;
}

distance[start] = 0;
visited[start] = 1;
count = 1;

while (count < n - 1) {


mindistance = INFINITY;

for (i = 0; i < n; i++)


if (distance[i] < mindistance && !visited[i]) {
mindistance = distance[i];
nextnode = i;
}

visited[nextnode] = 1;
for (i = 0; i < n; i++)
if (!visited[i])
if (mindistance + cost[nextnode][i] < distance[i]) {
distance[i] = mindistance + cost[nextnode][i];
pred[i] = nextnode;
}
count++;
}

// Printing the distance


for (i = 0; i < n; i++)
if (i != start) {
printf("\nDistance from source to %c: %d", karakter[i], distance[i]);
}
}
void Dijkstra(int Graph[MAX][MAX], int n, int start) {
int cost[MAX][MAX], distance[MAX], pred[MAX];
int visited[MAX], count, mindistance, nextnode, i, j;

// Creating cost matrix


for (i = 0; i < n; i++)
Distance atau jarak node awal akan diset menjadi 0 dan  for (j = 0; j < n; j++)
if (Graph[i][j] == 0)
program akan mencari tetangga dari node source atau  cost[i][j] = INFINITY;
else
node awal. cost[i][j] = Graph[i][j];

for (i = 0; i < n; i++) {


distance[i] = cost[start][i];
Tabel (tujuan - asal - weight) pred[i] = start;
visited[i] = 0;
}
B A 2
distance[start] = 0;
visited[start] = 1;
E A 2 count = 1;

D A 3 while (count < n - 1) {


mindistance = INFINITY;

for (i = 0; i < n; i++)


if (distance[i] < mindistance && !visited[i]) {
mindistance = distance[i];
nextnode = i;
}

visited[nextnode] = 1;
for (i = 0; i < n; i++)
if (!visited[i])
if (mindistance + cost[nextnode][i] < distance[i]) {
distance[i] = mindistance + cost[nextnode][i];
pred[i] = nextnode;
}
count++;
}

// Printing the distance


for (i = 0; i < n; i++)
if (i != start) {
printf("\nDistance from source to %c: %d", karakter[i], distance[i]);
}
}
void Dijkstra(int Graph[MAX][MAX], int n, int start) {
int cost[MAX][MAX], distance[MAX], pred[MAX];
int visited[MAX], count, mindistance, nextnode, i, j;

// Creating cost matrix


for (i = 0; i < n; i++)
Program kemudian akan mengunjungi node tetangga  for (j = 0; j < n; j++)
if (Graph[i][j] == 0)
dari node awal dan melakukan pengecekan jarak cost[i][j] = INFINITY;
else
cost[i][j] = Graph[i][j];

for (i = 0; i < n; i++) {


distance[i] = cost[start][i];
Tabel (tujuan - asal - weight) pred[i] = start;
visited[i] = 0;
}
C B 4
distance[start] = 0;
visited[start] = 1;
E A 2 count = 1;

F E 5 while (count < n - 1) {


mindistance = INFINITY;

for (i = 0; i < n; i++)


if (distance[i] < mindistance && !visited[i]) {
mindistance = distance[i];
nextnode = i;
}

visited[nextnode] = 1;
for (i = 0; i < n; i++)
if (!visited[i])
if (mindistance + cost[nextnode][i] < distance[i]) {
distance[i] = mindistance + cost[nextnode][i];
pred[i] = nextnode;
}
count++;
}

// Printing the distance


for (i = 0; i < n; i++)
if (i != start) {
printf("\nDistance from source to %c: %d", karakter[i], distance[i]);
}
}
void Dijkstra(int Graph[MAX][MAX], int n, int start) {
int cost[MAX][MAX], distance[MAX], pred[MAX];
int visited[MAX], count, mindistance, nextnode, i, j;

// Creating cost matrix


for (i = 0; i < n; i++)
Setelah sampai ke node terakhir, program akan  for (j = 0; j < n; j++)
if (Graph[i][j] == 0)
mencetak hasil jarak terpendek dari source ke tiap node cost[i][j] = INFINITY;
else
cost[i][j] = Graph[i][j];

for (i = 0; i < n; i++) {


distance[i] = cost[start][i];
pred[i] = start;
visited[i] = 0;
}

distance[start] = 0;
visited[start] = 1;
count = 1;

while (count < n - 1) {


mindistance = INFINITY;

for (i = 0; i < n; i++)


if (distance[i] < mindistance && !visited[i]) {
mindistance = distance[i];
nextnode = i;
}

visited[nextnode] = 1;
for (i = 0; i < n; i++)
if (!visited[i])
if (mindistance + cost[nextnode][i] < distance[i]) {
distance[i] = mindistance + cost[nextnode][i];
pred[i] = nextnode;
}
count++;
}

  // Printing the distance


for (i = 0; i < n; i++)
if (i != start) {
printf("\nDistance from source to %c: %d", karakter[i], 
distance[i]);
}
Pada iterasi berikut, akan digunakan graf pada figur 9.82.
Graf dimasukkan ke dalam program menggunakan 
adjacency list yang kemudian dimasukkan ke dalam 
sebuah matrix. TIpe graf adalah directed graph.
addEdge(0,1,5);
addEdge(0,2,3);
addEdge(0,3,2);
addEdge(1,2,2);
addEdge(1,4,3);
addEdge(1,6,1);
addEdge(2,3,7);
addEdge(2,4,7);
addEdge(3,4,2);
addEdge(3,5,6);
addEdge(4,5,1);
addEdge(4,6,1);
void Dijkstra(int Graph[MAX][MAX], int n, int start) {
int cost[MAX][MAX], distance[MAX], pred[MAX];
int visited[MAX], count, mindistance, nextnode, i, j;

// Creating cost matrix


for (i = 0; i < n; i++)
for (j = 0; j < n; j++)

Mula-mula, program akan membuat cost matrix yang  if (Graph[i][j] == 0)


cost[i][j] = INFINITY;

berisikan nilai INFINITY, dalam program ini INFINITY  else


cost[i][j] = Graph[i][j];
adalah 9999. for (i = 0; i < n; i++) {
distance[i] = cost[start][i];
pred[i] = start;
visited[i] = 0;
}

distance[start] = 0;
visited[start] = 1;
count = 1;

while (count < n - 1) {


mindistance = INFINITY;

for (i = 0; i < n; i++)


if (distance[i] < mindistance && !visited[i]) {
mindistance = distance[i];
nextnode = i;
}

visited[nextnode] = 1;
for (i = 0; i < n; i++)
if (!visited[i])
if (mindistance + cost[nextnode][i] < distance[i]) {
distance[i] = mindistance + cost[nextnode][i];
pred[i] = nextnode;
}
count++;
}

// Printing the distance


for (i = 0; i < n; i++)
if (i != start) {
printf("\nDistance from source to %c: %d", karakter[i], distance[i]);
}
}
void Dijkstra(int Graph[MAX][MAX], int n, int start) {
int cost[MAX][MAX], distance[MAX], pred[MAX];
int visited[MAX], count, mindistance, nextnode, i, j;

// Creating cost matrix


for (i = 0; i < n; i++)
Distance atau jarak node awal akan diset menjadi 0 dan  for (j = 0; j < n; j++)
if (Graph[i][j] == 0)
program akan mencari tetangga dari node source atau  cost[i][j] = INFINITY;
else
node awal. cost[i][j] = Graph[i][j];

for (i = 0; i < n; i++) {


distance[i] = cost[start][i];
Tabel (tujuan - asal - weight) pred[i] = start;
visited[i] = 0;
}
B A 5
distance[start] = 0;
visited[start] = 1;
C A 3 count = 1;

D A 2 while (count < n - 1) {


mindistance = INFINITY;

for (i = 0; i < n; i++)


if (distance[i] < mindistance && !visited[i]) {
mindistance = distance[i];
nextnode = i;
}

visited[nextnode] = 1;
for (i = 0; i < n; i++)
if (!visited[i])
if (mindistance + cost[nextnode][i] < distance[i]) {
distance[i] = mindistance + cost[nextnode][i];
pred[i] = nextnode;
}
count++;
}

// Printing the distance


for (i = 0; i < n; i++)
if (i != start) {
printf("\nDistance from source to %c: %d", karakter[i], distance[i]);
}
}
void Dijkstra(int Graph[MAX][MAX], int n, int start) {
int cost[MAX][MAX], distance[MAX], pred[MAX];
int visited[MAX], count, mindistance, nextnode, i, j;

// Creating cost matrix


for (i = 0; i < n; i++)
Program kemudian akan mengunjungi node tetangga  for (j = 0; j < n; j++)
if (Graph[i][j] == 0)
dari node awal dan melakukan pengecekan jarak cost[i][j] = INFINITY;
else
cost[i][j] = Graph[i][j];

for (i = 0; i < n; i++) {


distance[i] = cost[start][i];
Tabel (tujuan - asal - weight) pred[i] = start;
visited[i] = 0;
}
C A 3
distance[start] = 0;
visited[start] = 1;
E B 8 count = 1;

G B 6 while (count < n - 1) {


mindistance = INFINITY;

for (i = 0; i < n; i++)


if (distance[i] < mindistance && !visited[i]) {
mindistance = distance[i];
nextnode = i;
}

visited[nextnode] = 1;
for (i = 0; i < n; i++)
if (!visited[i])
if (mindistance + cost[nextnode][i] < distance[i]) {
distance[i] = mindistance + cost[nextnode][i];
pred[i] = nextnode;
}
count++;
}

// Printing the distance


for (i = 0; i < n; i++)
if (i != start) {
printf("\nDistance from source to %c: %d", karakter[i], distance[i]);
}
}
void Dijkstra(int Graph[MAX][MAX], int n, int start) {
int cost[MAX][MAX], distance[MAX], pred[MAX];
int visited[MAX], count, mindistance, nextnode, i, j;

// Creating cost matrix


for (i = 0; i < n; i++)
Setelah sampai ke node terakhir, program akan  for (j = 0; j < n; j++)
if (Graph[i][j] == 0)
mencetak hasil jarak terpendek dari source ke tiap node cost[i][j] = INFINITY;
else
cost[i][j] = Graph[i][j];

for (i = 0; i < n; i++) {


distance[i] = cost[start][i];
pred[i] = start;
visited[i] = 0;
}

distance[start] = 0;
visited[start] = 1;
count = 1;

while (count < n - 1) {


mindistance = INFINITY;

for (i = 0; i < n; i++)


if (distance[i] < mindistance && !visited[i]) {
mindistance = distance[i];
nextnode = i;
}

visited[nextnode] = 1;
for (i = 0; i < n; i++)
if (!visited[i])
if (mindistance + cost[nextnode][i] < distance[i]) {
distance[i] = mindistance + cost[nextnode][i];
pred[i] = nextnode;
}
count++;
}

  // Printing the distance


for (i = 0; i < n; i++)
if (i != start) {
printf("\nDistance from source to %c: %d", karakter[i], 
distance[i]);
}

You might also like