Tree merupakan salah satu struktur data yang paling penting, karena
banyak aplikasi menggunakan informasi dan data yang secara alami
memiliki struktur hirarkis berguna dalam membantu memecahkan
banyak masalah algoritmis.
B C
D E
F G J
H I
K L M N O
Leaf (daun)
BINARY TREE
Karakteristik : Maksimum child adalah 2 (Left Child dan Right Child)
Representasi :
- Ekspresi MM dengan Binary Tree
- Huffman Code
Ekspressi Matematika (EM) didefenisikan sebagai berikut:
(1). Variabel dan Bilangan adalah EM
(2). Jika E, E1 dan E2 adalah EM maka
– E, + E dan (E) adalah EM
E1 + E2, E1 – E2, E1 * E2, E1 / E2, E1 div E2, E1 mod E2 dan
E1^E2 juga adalah EM
Contoh :
4 adalah EM
X adalah EM
4 + X adalah EM
2 + 4 * 3 adalah EM
(2 + 4) * 3 adalah EM
((3 + 2) * (5 – 2)) / (2 + 3) adalah EM dan seterusnya
Contoh:
Diketahui: Ekspressi Matematika ((2 + 3) * (5 – 2) + 5) * (5 + 3 * 2)
Ditanya: Gambarkan pohon ekspressi dengan cara Bootom Up
Penyelesaian:
Ekspressi tersebut terbagi dua menjadi E1 dan E2 oleh operator *; sehingga
ekspressi tersebut dapat ditulis sebagai (E1) * (E2) dimana E1 = ((2 + 3)
* (5 – 2) + 5) dan E2 = (5 + 3 * 2).
Kemudian gambarkan pohon ekspressi untuk (E1) * (E2).
Huffman Code:
- Algoritma :
Procedure Preorder (n : BST);
Begin
If (n<> NIL) Then
Begin
Write(n^.Info);
Preorder(n^.Kiri);
Preorder(n^.Kanan);
End;
End;
Procedure Inorder (n : BST);
Begin
If (n<> NIL) Then
Begin
Inorder(n^.Kiri);
Write(n^.Info);
Inorder(n^.Kanan);
End;
End;
B B
B
B B
B B
B B
B
B
Implementasi Binary Tree :
a. Array
b. Linked List
Ketentuan :
a. Semua left child harus lebih kecil dari parent
b. Semua right child harus lebih besar dari parent
Keuntungan : Pencarian node target menjadi lebih efisien dan cepat
Procedure Tampil(T);
Var Pilih : Integer;
Begin
Clrscr;
Writeln(‘1. Tampil Secara Preorder’);
Writeln(‘2. Tampil Secara Inorder’);
Writeln(‘3. Tampil Secara Postorder’);
Writeln;
Write(‘Silahkan Pilih : ‘); Readln(Pilih);
If (Pilih = 1) Then
Preorder(T)
Else If (Pilih = 2) Then
Inorder (T)
Else
Postorder(T);
Readln
End;
AVL TREE
Pivot Point :
- Adanya node pada search path yang balancenya TallLeft
(tanda -) atau TallRight (tanda +) dan terletak paling dekat
dengan node yang baru
- Contoh : Jika diinsert node baru dengan nilai 5, maka pivot
pointnya di node 25
Operasi Insert :
- Kasus-1
Tidak ada pivot point dan setiap node adalah balance, maka
bisa langsung diinsert sama seperti BST
- Kasus 2
Jika ada PP tetapi subtree yang akan ditambahkan node
baru memiliki height yang lebih kecil, maka bisa langsung di
insert
- Kasus 3
Jika ada PP dan subtree yang akan ditambahkan node baru
memiliki height yang lebih besar, maka tree harus digenerate
supaya tetap menghasilkan AVL Tree
Regenerate :
- Single Rotation
a. Single Left Rotation
b. Single Right Rotation
- Double Rotation
a. Double Left Rotation
b. Double Right Rotation
Algoritma Single Right Rotation :
Function SRR (R : Node) : Node;
Begin
Node P := R^.Left;
R^.Left := P^.Right;
P^.Right := R;
SRR := P;
End;
23 30 35 23 25 30 35
Insert (25)
14 20 30 35
Delete :
- Jika target node yang akan dihapus berisi elemen lebih dari
d, maka target elemen bisa langsung dihapus tanpa perlu
regenerate
- Jika target node yang akan dihapus berisi d node,
penghapusan langsung akan menyebabkan underflow
- Regenerate dilakukan dengan meminjam elemen yang
berada di node kiri atau dikanan (yang memiliki elemen lebih
dari d). Parent/ Separator akan berubah
- Jika node dikiri atau dikanan yang akan dilakukan
peminjaman ternyata mempunyai elemen kurang dari d,
yang mana jika dilakukan peminjaman, node tersebut akan
terjadi underflow
- Regenerate akan dilakukan dengan menggabungkan node
yang akan dihapus dengan node dikiri/kanan
Struktur Data Graph :
Pendahuluan :
1. Graph : struktur data yang berbentuk network/jaringan, hubungan
antar elemen adalah many-to-many
2. Struktur Data Linear = keterhubungan sekuensial antara entitas data
3. Struktur Data Tree = keterhubungan hirarkis
4. Struktur Data Graph = keterhubungan tak terbatas antara entitas data.
Contoh graph : Informasi topologi jaringan dan keterhubungan antar
kota-kota
5. Keterhubungan dan jarak tidak langsung antara dua kota = data
keterhubungan langsung dari kota-kota lainnya yang
memperantarainya.
6. Penerapan struktur data linear atau hirarkis pada masalah graph dapat
dilakukan tetapi kurang efisien. Struktur data graph secara eksplisit
menyatakan keterhubungan ini sehingga pencariannya langsung
(straightforward) dilakukan pada strukturnya sendiri.
Masalah-masalah Graph
Masalah path minimum (Shortest mencari route dengan jarak terpendek dalam suatu
path problem) jaringan transportasi.
Masalah aliran maksimum menghitung volume aliran BBM dari suatu reservoir ke
(maximum flow problem) suatu titik tujuan melalui jaringan pipa.
Masalah pencarian dalam graph mencari langkah-langkah terbaik dalam program
(graph searching problem) permainan catur komputer.
Masalah pengurutan topologis menentukan urutan pengambilan mata-mata kuliah yang
(topological ordering problem) saling berkaitan dalam hubungan prasyarat (prerequisite).
Masalah jaringan tugas (Task membuat penjadwalan pengerjaan suatu proyek yang
Network Problem) memungkinkan waktu penyelesaian tersingkat.
Masalah pencarian pohon rentang
mencari rentangan kabel listrik yang totalnya adalah
minimum (Minimum Spanning
minimal untuk menghubungkan sejumlah kota.
Tree Problem)
tukang pos mencari lintasan terpendek melalui semua
Travelling Salesperson Problem alamat penerima pos tanpa harus mendatangi suatu
tempat lebih dari satu kali.
dalam menggambar peta, memberikan warna yang
Four-color problem
berbeda pada setiap propinsi yang saling bersebelahan.
Graph terdiri dari himpunan verteks (node) dan himpunan sisi (edge, arc).
Verteks menyatakan entitas-entitas data dan sisi menyatakan
keterhubungan antara verteks.
Notasi matematis graph G adalah :
G = (V, E)
Jenis Graph :
a. Directed Graph (Digraph) : jika sisi-sisi graph hanya berlaku satu arah.
Misalnya : {x,y} yaitu arah x ke y, bukan dari y ke x; x disebut origin
dan y disebut terminus. Secara notasi sisi digraph ditulis sebagai
vektor (x, y).
Contoh Digraph G = {V, E} :
V = {A, B, C, D, E, F, G, H, I,J, K, L, M}
E = {(A,B),(A,C), (A,D), (A,F), (B,C), (B,H), (C,E), (C,G), (C,H), (C,I), (D,E),
(D,F), (D,G), (D,K), (D,L), (E,F), (G,I), (G,K), (H,I), (I,J), (I,M), (J,K), (J,M),
(L,K), (L,M)}.
B
A
H
C
M
F
I
E
D
G
K L
J
b. Graph Tak Berarah (undirected graph atau undigraph): setiap sisi {x, y}
berlaku pada kedua arah: baik x ke y maupun y ke x. Secara grafis sisi
pada undigraph tidak memiliki mata panah dan secara notasional
menggunakan kurung kurawal.
Khusus graph, undigraph bisa sebagai digraph (panah di kedua ujung edge
berlawanan)
Struktur data linear maupun hirarkis adalah juga graph. Node-node pada
struktur linear ataupun hirarkis adalah verteks-verteks dalam
pengertian graph dengan sisi-sisinya menyusun node-node tersebut
secara linear atau hirarkis.
Struktur data linear adalah juga tree dengan pencabangan pada setiap node
hanya satu atau tidak ada.
Linear 1-way linked list (digraph), linear 2-way linked list (undigraph).
B
A
H
C
M
F
I
E
D
G
K L
J
B
A
H
C
M
F
I
E
D
G
K L
J
Konektivitas pada Undigraph
• Adjacency: Dua verteks x dan y yang berlainan disebut
terhubung langsung (adjacent) jika ada sisi {x, y} dalam E.
• Path : Urutan dari kumpulan node-node, dimana tiap node
dengan node berikutnya dihubungkan dengan Edge
• Simple Path : Jika node dalam path tsb hanya muncul 1 kali
• Panjang dari path: jumlah sisi yang dilalui path.
• Siklus (cycle) : suatu path dengan panjang lebih dari satu,
dimana vertex awal dan akhir sama.
• Siklus sederhana: dalam undigraph, siklus yang terbentuk dari
tiga atau lebih verteks yang berlainan, dimana tidak ada vertex
muncul lebih satu kali kecuali verteks awal/akhir.
• Dua verteks x dan y yang berbeda dalam suatu undigraph
disebut berkoneksi (connected) apabila ada path penghubung.
• Suatu komponen terkoneksi (connected components) adalah
subgraph (bagian dari graph) yang berisikan satu himpunan
bagian verteks yang berkoneksi.
Konektivitas pada Digraph
Terminologi pada Undigrap berlaku, kecuali dalam digraph harus dikaitkan
dengan arah tertentu karena pada arah yang sebaliknya belum tentu
terdefinisi.
Adjacency ke/dari : Jika ada sisi (x,y) maka pada digraph dikatakan bahwa
x "adjacent ke" y atau y "adjacent dari" x. Demikian pula jika terdapat
path dari x ke y maka belum tentu ada path dari y ke x. Jadi dalam
digraph keterkoneksian didefinisikan lebih lanjut lagi sebagai berikut.
- Terkoneksi Kuat : Bila setiap pasangan verteks berbeda x dan y
dalam S, x berkoneksi dengan y dan y berkoneksi dengan x
- Terkoneksi Lemah : Bila setiap pasangan verteks berbeda x dan y
dalam S, salah satu: x berkoneksi dengan y (atau y berkoneksi
dengan x) dan tidak kebalikan arahnya (hanya terdefinisi satu path:
dari x ke y atau sebaliknya dari y ke x).
Graph berbobot (weighted graph)
Graph dengan sisi mempunyai Bobot/ Biaya. “Biaya" ini bisa mewakili
banyak aspek: biaya ekonomi suatu aktifitas, jarak geografis/tempuh, waktu
tempuh, tingkat kesulitan, dan lain sebagainya.
Contoh :
Graph ini merupakan Undirected Weighted Graph. Order dari verteks A = 4,
verteks B = 3, dst. Adjacentcy list dari D adalah = {A, E, F, G, K, L}.
Representasi Graph
Representasi Matriks Keterhubungan Langsung (Adjacency Matrix)
Matriks digunakan untuk himpunan adjacency setiap verteks. Baris berisi
vertex asal adjacency, sedangkan kolom berisi vertex tujuan adjacency.
Bila sisi graph tidak mempunyai bobot, maka [x, y] adjacency disimbolkan
dengan 1 dan 0 bila tidak adjacency.
Bila sisi graph mempunyai bobot, maka [x, y] adjacency disimbolkan dengan
bobot sisi tersebut, dan bila tidak disimbolka ∞.
Direpresentasikan dalam matriks sbb.
A B C D E F G H I J K L M
Dari\Ke
A - 1 1 1 0 1 0 0 0 0 0 0 0
B 1 - 1 0 0 0 0 1 0 0 0 0 0
C 1 1 - 0 1 0 1 1 1 0 0 0 0
D 1 0 0 - 1 1 1 0 0 0 1 1 0
E 0 0 1 1 - 1 0 0 0 0 0 0 0
F 1 0 0 1 1 - 0 0 0 0 0 0 0
G 0 0 1 1 0 0 - 0 1 0 1 0 0
H 0 1 1 0 0 0 0 - 1 0 0 0 0
I 0 0 1 0 0 0 1 1 - 1 0 0 1
J 0 0 0 0 0 0 0 0 1 - 1 0 1
K 0 0 0 1 0 0 1 0 0 1 - 1 0
L 0 0 0 1 0 0 0 0 0 0 1 - 1
M 0 0 0 0 0 0 0 0 1 1 0 1 -
B
34 45
A
43 18 H
35
31 C 25
33 15 35
M
F 16 22
I
22 21
19 E
D 39 19 25 15
G
13 27 13
19
K L
10
J
Dari\Ke A B C D E F G H I J K L M
A - 24 43 33 ∞ 31 ∞ ∞ ∞ ∞ ∞ ∞ ∞
B 24 - 18 ∞ ∞ ∞ ∞ 45 ∞ ∞ ∞ ∞ ∞
C 43 18 - ∞ 16 ∞ 22 35 15 ∞ ∞ ∞ ∞
D 33 ∞ ∞ - 19 22 39 ∞ ∞ ∞ 13 27 ∞
E ∞ ∞ 16 19 - 15 ∞ ∞ ∞ ∞ ∞ ∞ ∞
F 31 ∞ ∞ 22 15 - ∞ ∞ ∞ ∞ ∞ ∞ ∞
G ∞ ∞ 22 39 ∞ ∞ - ∞ 21 ∞ 13 ∞ ∞
H ∞ 45 35 ∞ ∞ ∞ ∞ - 25 ∞ ∞ ∞ ∞
I ∞ ∞ 15 ∞ ∞ ∞ 21 25 - 19 ∞ ∞ 35
J ∞ ∞ ∞ ∞ ∞ ∞ ∞ ∞ 19 - 10 ∞ 15
K ∞ ∞ ∞ 13 ∞ ∞ 13 ∞ ∞ 10 - 19 ∞
L ∞ ∞ ∞ 27 ∞ ∞ ∞ ∞ ∞ ∞ 19 - 25
M ∞ ∞ ∞ ∞ ∞ ∞ ∞ ∞ 35 15 ∞ 25 -
Adjacency List : ???
Perhatikan deklarasi berikut :
Type
Pointer = ^Simpul;
Simpul = Record
Elemen : TipeData; (* tipe data menurut pilihan kita *)
Next : Pointer
End;
Var
X : Array [1..N] Of Pointer;
Algoritma-algoritma Pencarian
Pencarian vertex adalah proses umum dalam graph.
Terdapat 2 metoda pencarian:
Depth First Search (DFS): pada setiap pencabangan, penelusuran
verteks-verteks yang belum dikunjungi dilakukan secara lengkap
pada pencabangan pertama, kemudian selengkapnya pada
pencabangan kedua, dan seterusnya secara rekursif.
Langkah-1:
The image cannot be display ed. Your computer may not hav e enough memory to open the image, or the image may hav e been corrupted. Restart y our computer, and then open the file again. If the red x still appears, y ou may hav e to delete the image and then insert it again.
Langkah-2 :
The image cannot be display ed. Your computer may not hav e enough memory to open the image, or the image may hav e been corrupted. Restart y our computer, and then open the file again. If the red x still appears, y ou may hav e to delete the image and then insert it again.
Langkah-3 :
The image cannot be display ed. Your computer may not hav e enough memory to open the image, or the image may hav e been corrupted. Restart y our computer, and then open the file again. If the red x still appears, y ou may hav e to delete the image and then insert it again.
Langkah-4:The image cannot be display ed. Your computer may not hav e enough memory to open the image, or the image may hav e been corrupted. Restart y our computer, and then open the file again. If the red x still appears, y ou may hav e to delete the image and then insert it again.
Langkah-5:
The image cannot be display ed. Your computer may not hav e enough memory to open the image, or the image may hav e been corrupted. Restart y our computer, and then open the file again. If the red x still appears, y ou may hav e to delete the image and then insert it again.
Langkah-6:
The image cannot be display ed. Your computer may not hav e enough memory to open the image, or the image may hav e been corrupted. Restart y our computer, and then open the file again. If the red x still appears, y ou may hav e to delete the image and then insert it again.
Langkah-7:
The image cannot be display ed. Your computer may not hav e enough memory to open the image, or the image may hav e been corrupted. Restart y our computer, and then open the file again. If the red x still appears, y ou may hav e to delete the image and then insert it again.
Masalah Pencarian Lintasan Terpendek
Pencarian shortest path (lintasan terpendek) adalah masalah umum dalam
suatu weighted, connected graph. Misal : Pencarian jaringan jalan raya
yang menghubungkan kota-kota disuatu wilayah
• Lintasan terpendek yag menghubungkan antara dua kota
berlainan tertentu (Single-source Single-destination Shortest
Path Problems)
• Semua lintasan terpendek masing-masing dari suatu kota ke
setiap kota lainnya (Single-source Shortest Path problems)
• Semua lintasan terpendek masing-masing antara tiap
kemungkinan pasang kota yang berbeda (All-pairs Shortest Path
Problems)
Untuk memecahkan masing-masing dari masalah-masalah tersebut
terdapat sejumlah solusi.
• Algoritma Dijkstra untuk Single-source Shortest Path
• Algoritma Floyd-Warshall untuk masalah All-pairs Shortest
Path
• Algoritma Johnson untuk masalah All-pairs Shortest Path
pada sparse graph
Dalam beberapa masalah graph lain, suatu graph dapat memiliki bobot
negatif dan kasus ini dipecahkan oleh algoritma Bellman-Ford.
Yang akan dibahas di sini adalah algoritma Dijkstra yaitu mencari lintasan
terpendek dari suatu verteks asal tertentu vs ke setiap verteks lainnya.
Algoritma Dijkstra
Algoritma Dijkstra's :
a. Menyelesaikan problem single-source shortest-path ketika semua
edge memiliki bobot tidak negatif.
b. Algoritma greedy mirip ke algoritma Prim's.
c. Algoritma di awali pada vertex sumber s, kemudian berkembang
membentuk sebuah tree T, pada akhirnya periode semua vertex
dijangkau dari S. Vertex di tambah ke T sesuai urutan.
Misalnya : pertama S, kemudian vertex yang tepat ke S, kemudian yang
tepat berikutnya dan seterusnya.
DIJKSTRA (G, w, s)
{ INITIALIZE SINGLE-SOURCE (G, s)
S←{}
Initialize priority queue Q
Q ← V[G]
while priority queue Q is not empty do
u ← EXTRACT_MIN(Q)
S ← S È {u}
// Lakukan relaxation untuk setiap vertex v adjacent ke u
for setiap vertex v dalam Adj[u] do
Relax (u, v, w)
}
Relax (u, v, w)
{ If d[u] + w(u, v) < d[v] then
d[v] = d[u] + w[u, v]
}
Step1. Diberikan inisial graph G=(V, E). Semua node-node mempunyai
biaya tak terhingga, kecuali node sumber s, dengan biaya 0.
The image cannot be display ed. Your computer may not hav e enough memory to open the image, or the image may hav e been corrupted. Restart y our computer, and then open the file again. If the red x still appears, y ou may hav e to delete the image and then insert it again.
Step 2. Pertama, lakukan pemilihan node, yang mana tepat ke node sumber
S. Kita inisialisasi d[S] ke 0. Tambahkan itu ke S. Relaksasi semua node
adjacent dari sumber S. Update predecessor (lihat panah merah dalam
diagram di bawah) untuk semua node yang di-update.
The image cannot be display ed. Your computer may not hav e enough memory to open the image, or the image may hav e been corrupted. Restart y our computer, and then open the file again. If the red x still appears, y ou may hav e to delete the image and then insert it again.
Step 3. Pilih node paling tepat ke x. Relaksasi semua node adjacent ke
vertex x. Update predecessor untuk node u, v dan y (kembali, perhatikan
panah merah dalam diagram berikut).
The image cannot be display ed. Your computer may not hav e enough memory to open the image, or the image may hav e been corrupted. Restart y our computer, and then open the file again. If the red x still appears, y ou may hav e to delete the image and then insert it again.
Step 4. Sekarang, node y adalah node tepat, sehingga di tambahkan ke S.
Relaksasi node v dan periksa predecessor yang dimiliki (perhatikan panah
merah!).
The image cannot be display ed. Your computer may not hav e enough memory to open the image, or the image may hav e been corrupted. Restart y our computer, and then open the file again. If the red x still appears, y ou may hav e to delete the image and then insert it again.
Step 5. Sekarang kita memiliki node u yang tepat. Pilih node ini dan periksa
bahwa itu merupakan tetangga dari node v.
The image cannot be display ed. Your computer may not hav e enough memory to open the image, or the image may hav e been corrupted. Restart y our computer, and then open the file again. If the red x still appears, y ou may hav e to delete the image and then insert it again.
Step 6. Akhirnya, tambahan node v. Daftar predecessor sekarang
mendefinisikan shortest path dari setiap node ke node asal, s.
The image cannot be display ed. Your computer may not hav e enough memory to open the image, or the image may hav e been corrupted. Restart y our computer, and then open the file again. If the red x still appears, y ou may hav e to delete the image and then insert it again.
Dynamic Programming :
2 4
9 1 2 2 6 6 9
5 4 4
3
7 7
1 7 10 12
3 3 2
5 5
4
11
2 11 8 6 11
8
5
Maka langkah-langkah yang dilakukan adalah :
K=5, sehingga dimulai dari S3
Cost(3,6) = Min{6+Cost(4,9); 5+Cost(4,10)} = Min{6+4;5+2} = 7
Cost(3,7) = Min{4+Cost(4,9); 3+Cost(4,10)} = Min{4+4;3+2} = 5
Cost(3,8) = Min{5+Cost(4,10); 6+Cost(4,11)} = Min(5+2;6+5} = 7
Cost(2,2) = Min{4+Cost(3,6);2+Cost(3,7);1+Cost(3,8)}
= Min{4+7;2+5;1+7} = 7
Cost(2,3) = Min{2+Cost(3,6); 7+Cost(3,7)} = Min(2+7; 7+5) = 9
Cost(2,4) = Min{11+Cost(3,8)} = 18
Cost(2,5) = Min{11+Cost(3,7); 8+Cost(3,8)} = Min(11+5;8+7} = 15
Cost(1,1) = Min{9+Cost(2,2);7+Cost(2,3);3+Cost(2,4),2+Cost(2,5)}
= Min{9+7;7+9;3+18;2+15} = 16
2 4
9 1 2 2 6 6 9
5 4 4
3
7 7
1 7 10 12
3 3 2
5 5
4
11
2 11 8 6 11
8
5
Shortest Path Kedua adalah :
2 4
9 1 2 2 6 6 9
5 4 4
3
7 7
1 7 10 12
3 3 2
5 5
4
11
2 11 8 6 11
8
5
Struktur Data graf: representasi & algoritma-algoritma
Diketahui sebuah graph tak berarah dan tak berbobot sebagai berikut :
Kemungkinan Spanning Tree :
Bila jalur (edge) mempunyai biaya (cost) maka yang dicari adalah
minimum cost spanning tree.
Algoritma Kruskal :
Algoritma ini lebih sederhana jika dilihat dari konsepnya namun lebih sulit
dalam implementasinya. Idenya adalah mendapatkan satu demi satu
sisi mulai dari yang berbobot terkecil untuk membentuk tree; suatu
sisi walaupun berbobot kecil tidak akan diambil jika membentuk siklik
dengan sisi yang sudah termasuk dalam tree.
Step 6. Edge (g, i) adalah yang paling minimum berikutnya, tetapi jika kita
tambahkan edge ini, sebuah cycle akan tercipta. Vertex c adalah
representasi dari keduanya.
The image cannot be display ed. Your computer may not hav e enough memory to open the image, or the image may hav e been corrupted. Restart y our computer, and then open the file again. If the red x still appears, y ou may hav e to delete the image and then insert it again.
Step 7. Sebagai alternatif, tambahkan edge (c, d).
The image cannot be display ed. Your computer may not hav e enough memory to open the image, or the image may hav e been corrupted. Restart y our computer, and then open the file again. If the red x still appears, y ou may hav e to delete the image and then insert it again.
Step 8. Jika kita tambahkan edge (h, i), maka edge(h, i) akan membuat
sebuah cycle.
The image cannot be display ed. Your computer may not hav e enough memory to open the image, or the image may hav e been corrupted. Restart y our computer, and then open the file again. If the red x still appears, y ou may hav e to delete the image and then insert it again.
Step 9. Sebagai alternatif penambahan edge (h, i), tambahkan edge (a, h).
The image cannot be display ed. Your computer may not hav e enough memory to open the image, or the image may hav e been corrupted. Restart y our computer, and then open the file again. If the red x still appears, y ou may hav e to delete the image and then insert it again.
Step 10. Kembali, jika kita tambahkan edge (b, c), akan menciptakan
sebuah cycle. Tambahkan edge (d, e) sebagai alternatif untuk
menyempurnakan spanning tree. Dalam spanning tree ini, semua tree
digabung dan vertex c adalah sebuah representatif tunggal.
The image cannot be display ed. Your computer may not hav e enough memory to open the image, or the image may hav e been corrupted. Restart y our computer, and then open the file again. If the red x still appears, y ou may hav e to delete the image and then insert it again.
Algoritma Prim
Algoritma dimulai dari suatu verteks awal tertentu: bisa ditentukan oleh
pemanggil atau dipilih sebarang oleh algoritma. Misalnya verteks awal
tersebut adalah v.
Pada setiap iterasi terdapat kondisi di mana himpunan verteks V terbagi
dua dalam:
W yaitu himpunan verteks yang sudah dievaluasi sebagai node di
dalam pohon, serta (V-W) yaitu himpunan verteks yang belum
dievaluasi.
Di awal algoritma W diinisialisasi berisi verteks awal v.
Selanjutnya, di dalam iterasinya:
Pada setiap adjacency dari tiap verteks dalam W dengan
verteks dalam (V-W) dicari sisi dengan panjang minimal.
setelah diperoleh, sisi tersebut ditandai sebagai sisi yang
membentuk tree dan verteks adjacent sisi tersebut dalam (V-
W) dipindahkan ke W (menjadi anggota W).
Jika sisi tersebut tidak ada maka proses selesai.
Dari contoh di atas misalnya dilakukan pencarian mulai dari verteks A
(ingat tidak harus selalu dari verteks A!). Maka algoritma ini
menghasilkan tahapan-tahapan iterasi pencarian sbb.:
MST_PRIM (G, w, v)
{ Q ← V[G]
for setiap u dalam Q do key [u] ← ∞
key [r] ← 0
π[r] ← NIl
while queue tidak kosong do
{ u ← EXTRACT_MIN (Q)
for setiap vertex v dalam Adj[u] do
{ if v ada dalam Q dan w(u, v) < key [v] then
{ π[v] ← w(u, v)
key [v] ← w(u, v)
}
}
}
}