Algoritma Graph
• Algoritma traversal di dalam graf adalah
mengunjungi simpul-simpul dengan cara yang
Algoritma BFS dan DFS sistematik.
• Pencarian Melebar (Breadth First Search atau
BFS),
wijanarto
• Pencarian Mendalam (Depth First Search atau
DFS).
Pencarian Melebar
Graph Searching Algorithm
(Breadth First Search atau BFS)
• Idenya mirip dengan algo prim dan dijkstra • Pencarian Sistemik pada setiap edge dan
• Traversal dimulai dari simpul v. vertek dari graph G
• Algoritma: • Graph G=(V,E), directed atau undirected
– Kunjungi simpul v,
– Kunjungi semua simpul yang bertetangga dengan simpul v
• Aplikasi
terlebih dahulu. – Compiler
– Kunjungi simpul yang belum dikunjungi dan bertetangga – Graphics
dengan simpul-simpul yang tadi dikunjungi, demikian – Maze
seterusnya.
– Mapping
• Jika graf berbentuk pohor berakar, maka semua simpul pada
– Network : routing,searching,clustering, dsb
aras d dikunjungi lebih dahulu sebelum simpul-simpul pada
aras d + 1.
queue v w x y v w x y
struct node {
r s t u r s t u
int data; 1 0 ∞ ∞ 1 0 2 ∞
Q w r Q r t x
struct node *link; 1 1 1 2 2
∞ 1 ∞ ∞ 2 1 2 ∞
}; v w x y v w x y
1
5/22/2010
M N O P
E F G H E F G H M N O P 5
I J K L I J K L
M N O P M N O P
2
5/22/2010
BFS
Kegunaan BFS
Properti dan running time
• O(V+E) • Memerikasa apakah graph terhubung
• G=(V,E), bfs mencari seluruh vertek yg dapat di
raih dari source s • menghitung spanning forest graph
• Untuk setiap vertek pada level I, path bfs tree • Menghitung, tiap vertex dlm graph, jalur dg
antara s dan v mempunyai I edge dan selain path j l h edge
jumlah d minimum
i i antara vertex awall d
dan
dlm G antara s dan v setidaknya mempunyai i
edge current vertex atau ketiadaan path.
• Jika (u,v) adalah edge maka jumlah level u dan v • Menghitung cycle dlm graph atau ketiadaan
di bedakan setidaknya satu tingkat cycle.
• Bfs menghitung seluruh jarak terpendek ke
seluruh vertek yang dapat di raihnya. • O(V + E).
3
5/22/2010
1
3
v c 2
1 i h 3
No CC 1 1 1 2 2 2 5 4 3 3 3 e 1
f 1 2
d
5 4
• Jika ada label yang elemennya sama berarti
terdapat CC dan Sebaliknya d g a h b f i e c
4
5/22/2010
else
return 0 dan lainnya dalam W
if color[v] WHITE then
color[v] = gray
d[v] = d[u] +1
partition[v] = 3 - partition[u]
ENQUEUE (Q, v)
DEQUEUE (Q)
Color[u] = BLACK
Return 1
Pencarian Mendalam
contoh
(Depth First Search atau DFS).
• Traversal dimulai dari simpul v.
• Algoritma:
X – Kunjungi simpul v,
– Kunjungi simpul w yang bertetangga dengan simpul v.
X
– Ulangi DFS mulai dari simpul ww.
– Ketika mencapai simpul u sedemikian sehingga semua simpul
yang bertetangga dengannya telah dikunjungi, pencarian
dirunut-balik ke simpul terakhir yang dikunjungi sebelumnya
dan mempunyai simpul w yang belum dikunjungi.
U W
– Pencarian berakhir bila tidak ada lagi simpul yang belum
dikunjungi yang dapat dicapai dari simpul yang telah dikunjungi.
maze
5
5/22/2010
5 0 1 0 0 0 0
6 0 0 0 1 0 0
5 Æ 2 5 3 6 5 6
6 Æ 4 6 5 2 6 7
7 6 4
6
5/22/2010
5/6 7/8
DFS menentukan setiap edge sebagai suatu tree atau back tree
chesse
0/11 2/3
s 1/10
Source node di labeli 0, lalu pilih node baru dan labeli 1, lalu
E E pilih node baru labeli 2, pada node ini tidak ada lagi node
yang dapat di kunjungi, kalau ke label 0 maka terjadi cycle
Jika node berwarna putih
Kita akan kunjungi node tsb
dan sudah pernah di kunjungi. Maka kita lakukan backtrack,
dan pada node yang baru di kunjungi ini kita naikan nilai
label menjadi 3.
Setiap kali kita mengunjungi node, perlu di catat dan di naikan nilai labelnya
7
5/22/2010
G
Contoh lain Dfs graph s
Dfs tree
0/11
Jadi DFS
DFS, mengklasifikasikan setiap edge seba
TREE atau BACK EDGE
0/11 2/3
s 1/10 4/9
2/3
5/6
Edge yang terbentuk dari dfs ini 7/8
Adalah n-1, n adalah node
}
Masuk stack
pop(P); Masuk stack
Masuk stack
}
Masuk stack
8
5/22/2010
source simulasi
9
5/22/2010
solusi
10
5/22/2010
Tugas Simulasi
• Buat Simulasi Algoritma DFS dan BFS
• Hitung Order Fungsi dan kompleksitasnya
• Presentasikan
11