SlideShare a Scribd company logo
1 of 273
Download to read offline
Department of
Computer Science
http://cs.ipb.ac.id/
Optimasi pada Graf
1
Mata Kuliah Struktur Diskret
Pertemuan 9
Optimasi pada Graf
• Shortest Path Algorithm
• Algoritme Djikstra
• Minimum Spanning Tree
• Algoritme Prim dan Kruskal
Review Path dan Konektivitas
• Misalkan G adalah suatu graf, 𝑣0 dan 𝑣𝑛 adalah 2 titik di dalam G
• Terminologi:
• Walk dari titik 𝑣0 ke titik 𝑣𝑛 adalah barisan verteks yang
berhubungan dan sisi secara berselang-seling diawali dari titik 𝑣0
dan diakhiri pada titik 𝑣𝑛.
• Path dari titik 𝑣0 ke titik 𝑣𝑛 adalah walk dari titik 𝑣0 ke titik 𝑣𝑛
yang semua sisinya berbeda
• Panjang walk atau path = jumlah sisi yang dilalui
Review Path
• Contoh
• 1,𝑒2,2, 𝑒1, 1, 𝑒3, 3, 𝑒5, 3, 𝑒3, 1, 𝑒1, 2, 𝑒4,3
• 1,𝑒2,2, 𝑒1, 1, 𝑒3, 3, 𝑒5, 3, 𝑒4,2
• Berapa panjang lintasannya?
• Apa yang dimaksud dengan sirkuit?
 Path
 Walk
Contoh
• Gambar di bawah menyatakan peta kota A..G dan jalan-jalan yang
menghubungkan kota-kota tsb. Seorang salesman akan mengunjungi
tiap kota masing-masing 1 kali dari kota A kembali lagi ke kota A.
• Dalam terminologi path, problem di atas menyatakan?
• Carilah rute perjalanan yang harus dilalui salesman tsb !
A
B C
D
E
F
G
j1
j2
j
3
j4
j5
j6
j7
j8
j9
j10
j11
Review Path
• Shortest path adalah pencarian rute atau path terpendek antara
verteks yang ada pada graf dengan nilai biaya (cost) pada sisi
adalah minimum.
• Lintasan terpendek (seperti pada contoh salesman
problem) merupakan salah satu masalah yang dapat diselesaikan
dengan menggunakan graf.
• Jika diberikan sebuah graph berbobot, masalah lintasan terpendek
adalah bagaimana kita mencari sebuah jalur pada graph yang
meminimumkan jumlah bobot sisi pembentuk jalur tersebut.
Algoritme Djikstra
• Algoritme Dijkstra, dinamai menurut penemunya, Edsger Dijkstra,
merupakan salah satu varian dari algoritme greedy, yaitu salah
satu bentuk algoritme populer dalam pemecahan persoalan yang
terkait dengan masalah optimasi.
• Algoritme ini bertujuan untuk menemukan jalur terpendek
berdasarkan bobot terkecil dari satu titik ke titik lainnya.
Algoritme Djikstra
V = {v1, v2, …, vn}  titik awal : v1, titik akhir : vn
L(j) = jumlah bobot lintasan terpendek dari v1 ke vj
w(i,j) = bobot garis dari titik v1 ke titik vj
T = himpunan titik yang sudah terpilih dalam alur lintasan terpendek
Algoritme
1. 𝑇 = { }; 𝐿(𝑣1) = 0 ; 𝐿(𝑣2) = 𝐿(𝑣3) = … = 𝐿(𝑣𝑛) = ∞
2. Selama vn ∉ T lakukan :
a. Pilih titik vk ∈ V – T dengan L(vk) terkecil
T = T  { vk }
b. Untuk setiap vj ∈ V – T hitung :
L(vj) = min[ L(vj) , L(vk) + w(vk,vj) ]
3. Telusuri alur path minimum mulai dari titik akhir (vn) sampai titik awal (v1)
Djikstra's Shortest Path Algorithm
• Find shortest path from s to t.
9
s
3
t
2
6
7
4
5
24
18 2
9
14
15
5
30
20
44
16
11
6
19
6
Djikstra's Shortest Path Algorithm
10
S = { }
PQ = { s, 2, 3, 4, 5, 6, 7, t }
s
3
t
2
6
7
4
5
24
18
2
9
14
15 5
30
20
44
16
11
6
19
6

 




0
distance label
Dijkstra's Shortest Path Algorithm
11
S = { }
PQ = { s, 2, 3, 4, 5, 6, 7, t }
 
s
3
t
2
6
7
4
5
24
18
2
9
14
15
5
30
20
44
16
11
6
19
6





0
distance label
delmin
Dijkstra's Shortest Path Algorithm
12
S = { s }
PQ = { 2, 3, 4, 5, 6, 7, t }
s
3
t
2
6
7
4
5
24
18
2
9
14
15
5
30
20
44
16
11
6
19
6
15
9



14

0
distance label
decrease key

X


X
X
Dijkstra's Shortest Path Algorithm
13
S = { s }
PQ = { 2, 3, 4, 5, 6, 7, t }
s
3
t
2
6
7
4
5
24
18
2
9
14
15
5
30
20
44
16
11
6
19
6
15
9



14

0
distance label

X


X
X
delmin
Dijkstra's Shortest Path Algorithm
14
S = { s, 2 }
PQ = { 3, 4, 5, 6, 7, t }
s
3
t
2
6
7
4
5
24
18
2
9
14
15
5
30
20
44
16
11
6
19
6
15
9



14

0

X


X
X
Dijkstra's Shortest Path Algorithm
15
s
3
t
2
6
7
4
5
24
18
2
9
14
15
5
30
20
44
16
11
6
19
6
15
9



14

0
S = { s, 2 }
PQ = { 3, 4, 5, 6, 7, t }

X


X
X
decrease key
X 33
Dijkstra's Shortest Path Algorithm
16
s
3
t
2
6
7
4
5
24
18
2
9
14
15
5
30
20
44
16
11
6
19
6
15
9



14

0
S = { s, 2 }
PQ = { 3, 4, 5, 6, 7, t }

X


X
X
X 33
delmin
Dijkstra's Shortest Path Algorithm
17
s
3
t
2
6
7
4
5
24
18
2
9
14
15
5
30
20
44
16
11
6
19
6
15
9



14

0
S = { s, 2, 6 }
PQ = { 3, 4, 5, 7, t }

X


X
X
X 33
44
X
X
32
Dijkstra's Shortest Path Algorithm
18
s
3
t
2
6
7
4
5
24
18
2
9
14
15
5
30
20
44
16
11
6
19
6
15
9


14

0
S = { s, 2, 6 }
PQ = { 3, 4, 5, 7, t }

X


X
X
44
X
delmin

X 33
X
32
Dijkstra's Shortest Path Algorithm
19
s
3
t
2
6
7
4
5
18
2
9
14
15
5
30
20
44
16
11
6
19
6
15
9


14

0
S = { s, 2, 6, 7 }
PQ = { 3, 4, 5, t }

X


X
X
44
X
35
X
59 X
24

X 33
X
32
Dijkstra's Shortest Path Algorithm
20
s
3
t
2
6
7
4
5
24
18
2
9
14
15
5
30
20
44
16
11
6
19
6
15
9


14

0
S = { s, 2, 6, 7 }
PQ = { 3, 4, 5, t }

X


X
X
44
X
35
X
59 X
delmin

X 33
X
32
Dijkstra's Shortest Path Algorithm
21
s
3
t
2
6
7
4
5
24
18
2
9
14
15
5
30
20
44
16
11
6
19
6
15
9


14

0
S = { s, 2, 3, 6, 7 }
PQ = { 4, 5, t }

X


X
X
44
X
35
X
59 X
X
51
X 34

X 33
X
32
Dijkstra's Shortest Path Algorithm
22
s
3
t
2
6
7
4
5
18
2
9
14
15
5
30
20
44
16
11
6
19
6
15
9


14

0
S = { s, 2, 3, 6, 7 }
PQ = { 4, 5, t }

X


X
X
44
X
35
X
59 X
X
51
X 34
delmin

X 33
X
32
24
Dijkstra's Shortest Path Algorithm
23
s
3
t
2
6
7
4
5
18
2
9
14
15
5
30
20
44
16
11
6
19
6
15
9


14

0
S = { s, 2, 3, 5, 6, 7 }
PQ = { 4, t }

X


X
X
44
X
35
X
59 X
X
51
X 34
24
X
50
X
45

X 33
X
32
Dijkstra's Shortest Path Algorithm
24
s
3
t
2
6
7
4
5
18
2
9
14
15
5
30
20
44
16
11
6
19
6
15
9


14

0
S = { s, 2, 3, 5, 6, 7 }
PQ = { 4, t }

X


X
X
44
X
35
X
59 X
X
51
X 34
24
X
50
X
45
delmin

X 33
X
32
Dijkstra's Shortest Path Algorithm
25
s
3
t
2
6
7
4
5
18
2
9
14
15
5
30
20
44
16
11
6
19
6
15
9


14

0
S = { s, 2, 3, 4, 5, 6, 7 }
PQ = { t }

X


X
X
44
X
35
X
59 X
X
51
X 34
24
X
50
X
45

X 33
X
32
Dijkstra's Shortest Path Algorithm
26
s
3
t
2
6
7
4
5
18
2
9
14
15
5
30
20
44
16
11
6
19
6
15
9


14

0
S = { s, 2, 3, 4, 5, 6, 7 }
PQ = { t }

X


X
X
44
X
35
X
59 X
X
51
X 34
X
50
X
45
delmin

X 33
X
32
24
Dijkstra's Shortest Path Algorithm
27
s
3
t
2
6
7
4
5
24
18
2
9
14
15
5
30
20
44
16
11
6
19
6
15
9


14

0
S = { s, 2, 3, 4, 5, 6, 7, t }
PQ = { }

X


X
X
44
X
35
X
59 X
X
51
X 34
X
50
X
45

X 33
X
32
Dijkstra's Shortest Path Algorithm
28
s
3
t
2
6
7
4
5
24
18
2
9
14
15 5
30
20
44
16
11
6
19
6
15
9


14

0
S = { s, 2, 3, 4, 5, 6, 7, t }
PQ = { }

X


X
X
44
X
35
X
59 X
X
51
X 34
X
50
X
45

X 33
X
32
Latihan
• Tentukan jalur terpendek untuk graf berarah terbobot
berikut ini:
2
1
4
2
5
1
4
4
1
2
2
1
Minimum Spaning Tree
• Spaning Tree: Pohon Rentang dari graf terhubung G adalah
subgraf G yang merupakan pohon dan memuat semua titik/verteks
dalam G
• Jika G adalah graf dengan n buah simpul (vertex), maka spanning
tree adalah himpunan dari n-1 sisi (edge) yang tidak mengandung
cycle.
Contoh
• Tentukan bentuk spanning tree dari Graf G berikut ini:
Minimum Spaning Tree
• Spanning tree dengan jumlah bobot minimum di antara semua
spanning trees
• Contoh aplikasi minimum spanning tree
• Membangun rel kereta api yang bisa menghubungkan
beberapa kota
• Mendesain local access network untuk beberapa komputer
• Membuat sambungan kabel elektrik pada sebuah control
panel
• Mendesain jaringan pipa untuk menghubungkan sejumlah
lokasi
Minimum Spaning Tree
• Pencarian biaya yang minimum dari suatu graph sehingga
membentuk pohon
• Syarat Graph yang dapat dicari minimum spanning treenya :
a. Graph harus terhubung
b. Ruasnya punya bobot
c. Graph tidak berarah
• Algoritme yang umum dipakai untuk Minimum spaning Tree: Algoritme
Kruskal dan Algoritme Prims
Prim’s Algorithm
• Menyerupai Algoritme Dijkstra, kecuali bobot yang disimpan
adalah bobot dari sisi/edge bukan panjang dari lintasan (path)
Prim’s Algorithm *
• Step 1: Select any node to be the first node of T.
• Step 2: Consider the arcs which connect nodes in T
to nodes outside T. Pick the one with minimum
weight. Add this arc and the extra node to T. (If there
are two or more arcs of minimum weight, choose any
one of them.)
• Step 3: Repeat Step 2 until T contains every node of
the graph.
Aim: To find a minimum spanning tree T
* source: www.mrbartonmaths.com/resources/a%20level/d1/Prim's%20and%20Kruskal.ppt
Walk-Through*
Initialize array
K dv pv
A F  
B F  
C F  
D F  
E F  
F F  
G F  
H F  
4
25
A
H
B
F
E
D
C
G
7
2
10
18
3
4
3
7
8
9
3
10
2
Source: https://people.cs.clemson.edu/~pargas/courses/cs212/.../notes/ppt/19PrimKruskal.ppt
4
25
A
H
B
F
E
D
C
G
7
2
10
18
3
4
3
7
8
9
3
10
Start with any node, say D
K dv pv
A
B
C
D T 0 
E
F
G
H
2
4
25
A
H
B
F
E
D
C
G
7
2
10
18
3
4
3
7
8
9
3
10
Update distances of adjacent,
unselected nodes
K dv pv
A
B
C 3 D
D T 0 
E 25 D
F 18 D
G 2 D
H
2
4
25
A
H
B
F
E
D
C
G
7
2
10
18
3
4
3
7
8
9
3
10
Select node with minimum
distance
K dv pv
A
B
C 3 D
D T 0 
E 25 D
F 18 D
G T 2 D
H
2
4
25
A
H
B
F
E
D
C
G
7
2
10
18
3
4
3
7
8
9
3
10
Update distances of adjacent, unselected
nodes
K dv pv
A
B
C 3 D
D T 0 
E 7 G
F 18 D
G T 2 D
H 3 G
2
4
25
A
H
B
F
E
D
C
G
7
2
10
18
3
4
3
7
8
9
3
10
Select node with minimum distance
K dv pv
A
B
C T 3 D
D T 0 
E 7 G
F 18 D
G T 2 D
H 3 G
2
4
25
A
H
B
F
E
D
C
G
7
2
10
18
3
4
3
7
8
9
3
10
Update distances of adjacent, unselected
nodes
K dv pv
A
B 4 C
C T 3 D
D T 0 
E 7 G
F 3 C
G T 2 D
H 3 G
2
4
25
A
H
B
F
E
D
C
G
7
2
10
18
3
4
3
7
8
9
3
10
Select node with minimum distance
K dv pv
A
B 4 C
C T 3 D
D T 0 
E 7 G
F T 3 C
G T 2 D
H 3 G
2
4
25
A
H
B
F
E
D
C
G
7
2
10
18
3
4
3
7
8
9
3
10
Update distances of adjacent,
unselected nodes
K dv pv
A 10 F
B 4 C
C T 3 D
D T 0 
E 2 F
F T 3 C
G T 2 D
H 3 G
2
4
25
A
H
B
F
E
D
C
G
7
2
10
18
3
4
3
7
8
9
3
10
Select node with
minimum distance
K dv pv
A 10 F
B 4 C
C T 3 D
D T 0 
E T 2 F
F T 3 C
G T 2 D
H 3 G
2
4
25
A
H
B
F
E
D
C
G
7
2
10
18
3
4
3
7
8
9
3
10
Update distances of adjacent, unselected
nodes
K dv pv
A 10 F
B 4 C
C T 3 D
D T 0 
E T 2 F
F T 3 C
G T 2 D
H 3 G
2
Table entries unchanged
4
25
A
H
B
F
E
D
C
G
7
2
10
18
3
4
3
7
8
9
3
10
Select node with
minimum distance
K dv pv
A 10 F
B 4 C
C T 3 D
D T 0 
E T 2 F
F T 3 C
G T 2 D
H T 3 G
2
4
25
A
H
B
F
E
D
C
G
7
2
10
18
3
4
3
7
8
9
3
10
Update distances of adjacent,
unselected nodes
K dv pv
A 4 H
B 4 C
C T 3 D
D T 0 
E T 2 F
F T 3 C
G T 2 D
H T 3 G
2
4
25
A
H
B
F
E
D
C
G
7
2
10
18
3
4
3
7
8
9
3
10
Select node with minimum distance
K dv pv
A T 4 H
B 4 C
C T 3 D
D T 0 
E T 2 F
F T 3 C
G T 2 D
H T 3 G
2
4
25
A
H
B
F
E
D
C
G
7
2
10
18
3
4
3
7
8
9
3
10
Update distances of adjacent,
unselected nodes
K dv pv
A T 4 H
B 4 C
C T 3 D
D T 0 
E T 2 F
F T 3 C
G T 2 D
H T 3 G
2
Table entries unchanged
4
25
A
H
B
F
E
D
C
G
7
2
10
18
3
4
3
7
8
9
3
10
Select node with minimum distance
K dv pv
A T 4 H
B T 4 C
C T 3 D
D T 0 
E T 2 F
F T 3 C
G T 2 D
H T 3 G
2
4
A
H
B
F
E
D
C
G
2
3
4
3
3
Cost of Minimum
Spanning Tree =  dv = 21
K dv pv
A T 4 H
B T 4 C
C T 3 D
D T 0 
E T 2 F
F T 3 C
G T 2 D
H T 3 G
2
Done
Kruskal’s Algorithm
Work with edges, rather than nodes
Two steps:
– Sort edges by increasing edge weight
– Select the first |V| – 1 edges that do not
generate a cycle
Kruskal’s Algorithm*
• Step 1: Choose the arc of least weight.
• Step 2: Choose from those arcs remaining the arc of
least weight which does not form a cycle with already
chosen arcs. (If there are several such arcs, choose one
arbitrarily.)
• Step 3: Repeat Step 2 until n – 1 arcs have been
chosen.
Aim: To find a minimum spanning tree for a connected
graph with n nodes:
* source: www.mrbartonmaths.com/resources/a%20level/d1/Prim's%20and%20Kruskal.ppt
Walk-Through*
Consider an undirected, weight graph
5
1
A
H
B
F
E
D
C
G
3
2
4
6
3
4
3
4
8
4
3
10
Source: https://people.cs.clemson.edu/~pargas/courses/cs212/.../notes/ppt/19PrimKruskal.ppt
Sort the edges by increasing edge weight
edge dv
(D,E) 1
(D,G) 2
(E,G) 3
(C,D) 3
(G,H) 3
(C,F) 3
(B,C) 4
5
1
A
H
B
F
E
D
C
G
3
2
4
6
3
4
3
4
8
4
3
10
edge dv
(B,E) 4
(B,F) 4
(B,H) 4
(A,H) 5
(D,F) 6
(A,B) 8
(A,F) 10
Select first |V|–1 edges which do not
generate a cycle
edge dv
(D,E) 1 
(D,G) 2
(E,G) 3
(C,D) 3
(G,H) 3
(C,F) 3
(B,C) 4
5
1
A
H
B
F
E
D
C
G
3
2
4
6
3
4
3
4
8
4
3
10
edge dv
(B,E) 4
(B,F) 4
(B,H) 4
(A,H) 5
(D,F) 6
(A,B) 8
(A,F) 10
Select first |V|–1 edges which do not
generate a cycle
edge dv
(D,E) 1 
(D,G) 2 
(E,G) 3
(C,D) 3
(G,H) 3
(C,F) 3
(B,C) 4
5
1
A
H
B
F
E
D
C
G
3
2
4
6
3
4
3
4
8
4
3
10
edge dv
(B,E) 4
(B,F) 4
(B,H) 4
(A,H) 5
(D,F) 6
(A,B) 8
(A,F) 10
Select first |V|–1 edges which do not
generate a cycle
edge dv
(D,E) 1 
(D,G) 2 
(E,G) 3 
(C,D) 3
(G,H) 3
(C,F) 3
(B,C) 4
5
1
A
H
B
F
E
D
C
G
3
2
4
6
3
4
3
4
8
4
3
10
edge dv
(B,E) 4
(B,F) 4
(B,H) 4
(A,H) 5
(D,F) 6
(A,B) 8
(A,F) 10
Accepting edge (E,G) would create a cycle
Select first |V|–1 edges which do not
generate a cycle
edge dv
(D,E) 1 
(D,G) 2 
(E,G) 3 
(C,D) 3 
(G,H) 3
(C,F) 3
(B,C) 4
5
1
A
H
B
F
E
D
C
G
3
2
4
6
3
4
3
4
8
4
3
10
edge dv
(B,E) 4
(B,F) 4
(B,H) 4
(A,H) 5
(D,F) 6
(A,B) 8
(A,F) 10
Select first |V|–1 edges which do not
generate a cycle
edge dv
(D,E) 1 
(D,G) 2 
(E,G) 3 
(C,D) 3 
(G,H) 3 
(C,F) 3
(B,C) 4
5
1
A
H
B
F
E
D
C
G
3
2
4
6
3
4
3
4
8
4
3
10
edge dv
(B,E) 4
(B,F) 4
(B,H) 4
(A,H) 5
(D,F) 6
(A,B) 8
(A,F) 10
Select first |V|–1 edges which do not
generate a cycle
edge dv
(D,E) 1 
(D,G) 2 
(E,G) 3 
(C,D) 3 
(G,H) 3 
(C,F) 3 
(B,C) 4
5
1
A
H
B
F
E
D
C
G
3
2
4
6
3
4
3
4
8
4
3
10
edge dv
(B,E) 4
(B,F) 4
(B,H) 4
(A,H) 5
(D,F) 6
(A,B) 8
(A,F) 10
Select first |V|–1 edges which do not
generate a cycle
edge dv
(D,E) 1 
(D,G) 2 
(E,G) 3 
(C,D) 3 
(G,H) 3 
(C,F) 3 
(B,C) 4 
5
1
A
H
B
F
E
D
C
G
3
2
4
6
3
4
3
4
8
4
3
10
edge dv
(B,E) 4
(B,F) 4
(B,H) 4
(A,H) 5
(D,F) 6
(A,B) 8
(A,F) 10
Select first |V|–1 edges which do not
generate a cycle
edge dv
(D,E) 1 
(D,G) 2 
(E,G) 3 
(C,D) 3 
(G,H) 3 
(C,F) 3 
(B,C) 4 
5
1
A
H
B
F
E
D
C
G
3
2
4
6
3
4
3
4
8
4
3
10
edge dv
(B,E) 4 
(B,F) 4
(B,H) 4
(A,H) 5
(D,F) 6
(A,B) 8
(A,F) 10
Select first |V|–1 edges which do not
generate a cycle
edge dv
(D,E) 1 
(D,G) 2 
(E,G) 3 
(C,D) 3 
(G,H) 3 
(C,F) 3 
(B,C) 4 
5
1
A
H
B
F
E
D
C
G
3
2
4
6
3
4
3
4
8
4
3
10
edge dv
(B,E) 4 
(B,F) 4 
(B,H) 4
(A,H) 5
(D,F) 6
(A,B) 8
(A,F) 10
Select first |V|–1 edges which do not
generate a cycle
edge dv
(D,E) 1 
(D,G) 2 
(E,G) 3 
(C,D) 3 
(G,H) 3 
(C,F) 3 
(B,C) 4 
5
1
A
H
B
F
E
D
C
G
3
2
4
6
3
4
3
4
8
4
3
10
edge dv
(B,E) 4 
(B,F) 4 
(B,H) 4 
(A,H) 5
(D,F) 6
(A,B) 8
(A,F) 10
Select first |V|–1 edges which do not
generate a cycle
edge dv
(D,E) 1 
(D,G) 2 
(E,G) 3 
(C,D) 3 
(G,H) 3 
(C,F) 3 
(B,C) 4 
5
1
A
H
B
F
E
D
C
G
3
2
4
6
3
4
3
4
8
4
3
10
edge dv
(B,E) 4 
(B,F) 4 
(B,H) 4 
(A,H) 5 
(D,F) 6
(A,B) 8
(A,F) 10
Select first |V|–1 edges which do not
generate a cycle
edge dv
(D,E) 1 
(D,G) 2 
(E,G) 3 
(C,D) 3 
(G,H) 3 
(C,F) 3 
(B,C) 4 
5
1
A
H
B
F
E
D
C
G
2
3
3
3
edge dv
(B,E) 4 
(B,F) 4 
(B,H) 4 
(A,H) 5 
(D,F) 6
(A,B) 8
(A,F) 10
Done
Total Cost =  dv = 21
4
}
not
considered
Latihan 1 - Muddy city problem
Once upon a time there was a city that had no roads. Getting around the city
was particularly difficult after rainstorms because the ground became very
muddycars got stuck in the mud and people got their boots dirty. The mayor of
the city decided that some of the streets must be paved, but didnt want to spend
more money than necessary because the city also wanted to build a swimming
pool. The mayor therefore specified two conditions:
1. Enough streets must be paved so that it is possible for everyone to travel
from their house to anyone elses house only along paved roads, and
2. The paving should cost as little as possible.
Source: www.utdallas.edu/~besp/teaching/mst-applications.pdf
Latihan 1 - Muddy city problem
• Here is the layout of the city. The number of paving stones between each house represents the cost of
paving that route. Find the best route that connects all the houses, but uses as few counters (paving
stones) as possible.
Latihan 1 - Muddy city problem
Latihan 2
1. Diberikan graf G=(V, E) sebagai berikut. Tentukan minimum-cost spanning
tree untuk V, yaitu mencari subset dari edge E*  E yang menghubungkan
dua node dalam V dengan biaya yang paling minimal.
Latihan 3
2. Diberikan vertex sumber A, tentukan jarak dan jalur
terpendek dari A ke semua vertex lain pada graf berikut
dengan menggunakan
• Algoritme Dijkstra
• Algoritme Prim
Tugas Kelompok 1
Diskusikan dalam kelompok mengenai penerapan Algoritme Djikstra, Prim,
dan Kruskal pada kasus tertentu.
Contoh:
• PT. Telkom ingin mengganti Jaringan Kabel telfon yang sudah ada dengan
yang baru. Namun dikarenakan mahalnya penggantian kabel yang
menghubungkan 1 wilayah dengan wilayah lain, maka perusahaan akan
mennganti kabel telfon dengan jaringan kabel yang menghubungkannya
adalah yang paling minimum.
• Pada Kasus ini sebagai Verteks (V) Graph adalah menyatakan wilayah
berupa kecamatan misalkan Dramaga dan Cibinong.
• Kemudian sebagai Edge (E), adalah jaringan kabel (panjang jaringan kabel
telfon) yang menghubungkan kecamatan Dramaga dan Cibinong.
Tugas Kelompok 1
• Graph G = G(V,E)
• V = {nama kecamatan di Kab
Bogor}, contoh A: Dramaga, B:
Cibeureum
• E = {Panjang jaringan kabel di
Kecamatan di Kab. Bogor} 4
25
A
H
B
F
E
D
C
G
7
2
10
18
3
4
3
7
8
9
3
10
2
• Selanjutnya dari ilustrasi
tersebut jelaskan solusinya
menggunakan salah satu
algoritme yang cocok
misalnya djikstra, kruskal,
dan Prim.
Tugas Kelompok 2
• Carilah kasus yang serupa seperti pada Tugas Kelompok 1 (bisa dari paper,
buku, dan dari sumber lain) yang mempunyai permasalahan terkait dengan
optimasi graf atau permasalahan MST.
• Jelaskan permasalahannya, kemudian solusi apa yang dapat selesaikan
menggunakan salah satu Algoritme (Kruskal, prim, atau djikstra), buat ilustrasi
permasalahan ke dalam sebuah graf, kemudian terangkan dengan langkah
terurut penyelesaian solusi dari masalah menggunakan algoritme Djikstra,
Prim atau Kruskal.
Tugas Kelompok 2
Yang dikumpulkan adalah dalam tugas pertemuan 9 di LMS adalah:
File *.pdf mengenai penjelasan studi kasus, algoritme dan penyelesaian
menggunakan Algoritme Djikstra, Prim, dan Kruskal, kemudian
sumber/referensi yang digunakan untuk menjabarkan studi kasus atau
penggunaan algoritme Djikstra, Prim, dan Kruskal.
Batas akhir pengumpulan tugas: 1 minggu
Thank you
Computer Science Departement
FMIPA-IPB Kampus Darmaga
Jl. Meranti Wing 20 Level V, Bogor, Indonesia
Phone/Fax: +62 251 8625584
http://cs.ipb.ac.id/
78
Department of
Computer Science
http://cs.ipb.ac.id/
Konsep dalam Teori Otomata
1
Struktur Diskret (KOM209)
Imas Sukaesih Sitanggang
Pertemuan 9
Pendahuluan
• Teori otomata adalah studi tentang peralatan atau “mesin” komputasi
abstrak, yang dapat didefinisikan secara metematis.
• Tipe paling sederhana dari mesin abstrak adalah finite automaton atau
finite state machine.
• Prinsip yang mendasari mesin ini adalah sistem pada setiap saat dalam
salah satu dari sejumlah state berhingga dan bergerak diantara state-state
tersebut dalam merespon sinyal input individual.
Finite Automata (FA)
• Merupakan model yang berguna untuk macam-
macam perangkat keras dan perangkat lunak,
diantaranya:
• Perangkat lunak untuk merancang dan menguji
perilaku rangkaian digital.
• Lexical analyzer dari sebuah kompilator yang
membagi teks input ke dalam unit-unit logik,
seperti identifier, keyword dan pungtuasi.
• Perangkat lunak untuk men-scan teks berukuran
besar, seperti koleksi web page, untuk
menemukan adanya kata, frasa atau pola yang
lain.
• Perangkat lunak untuk verifikasi sistem yang
memiliki sejumlah berhingga state yang berbeda,
seperti protokol-protokol komunikasi atau
protokol untuk keamanan pertukaran data.
Contoh 1 Model FA Sederhana
• Model switch on/off mengingat
apakah switch berada dalam
state “on” atau state “off”.
off on
Push
Push
• Model memungkinkan user untuk
menekan tombol yang memiliki pengaruh
berbeda tergantung pada keadaan switch:
– Jika switch berada dalam state “off” maka
setelah tombol ditekan state berubah menjadi
“on”.
– Jika switch berada dalam state “on” maka
setelah tombol ditekan state berubah menjadi
“off”.
Contoh lain:
Komponen dalam FA
• State dinyatakan oleh lingkaran, dalam Contoh 1 state diberi nama “on”
dan “off”.
• Arc diantara state diberi label “input “ yang menyatakan pengaruh eksternal
pada sistem.
• Dalam Contoh 1 kedua arc diberi label ‘push” yang menyatakan user menekan tombol
tertentu.
• Start state atau initial state merupakan state dimana sistem berada dalam
keadaan awal.
• Dalam Contoh 1 start state adalah off.
• Selanjutnya, start state ditunjukan oleh kata start dan panah menuju start state
tersebut.
• Final atau accepting state.
• Dalam Contoh 1 state on dinyatakan sebagai final state.
• Selanjutnya, final State dinyatakan dalam lingkaran ganda.
Contoh 2 Model FA Sederhana
• Input dinyatakan oleh huruf.
• Start state merupakan string kosong
• Setiap state memiliki transisi pada huruf selanjutnya dari kata then ke
state yang menyatakan prefix selanjutnya yang lebih besar.
• State “then” adalah accepting state.
• FA untuk mengenali kata “then”
• dapat dinyatakan sebagai bagian dari lexical analyzer.
t th the then
t h e n
7
Lexical analyzer
Grammar
• Grammar seringkali digunakan dalam perancangan
perangkat lunak yang memproses data dengan struktur
rekursif.
• Grammar digunakan dalam salah satu komponen
kompilator yaitu parser yang bekerja dengan struktur
rekursif dari bahasa pemograman seperti operasi
aritmatika, dan kondisional.
• Sebagai contoh aturan gramatikal
E  E + E
menyatakan bahwa ekspresi dapat dibentuk dari dua
ekspresi yang dihubungkan dengan tanda +.
Ekspresi regular (1)
• Ekspresi regular menyatakan struktur dari data, khususnya string
teks. Contoh:
[A – Z][a – z]*[ ] [A – Z] [A – Z]
• menyatakan kata-kata yang diawali huruf kapital yang diikuti oleh
spasi dan 2 huruf kapital.
• Ekspresi tersebut mengenali/menerima kata-kata, diantaranya
Ithaca NY, It NY, I NY
• Ekspresi tersebut tidak menerima kata-kata berikut ITHACA NY,
Ithaca, ithaca NY, Ithaca ny, Ithaca23 NY, Ithaca 1Y, Palo Alto CA
Ekspresi Regular (2)
• Perhatikan ekspresi berikut
([A – Z][a – z]*[ ])*[A – Z] [A – Z]
• Ekspresi tersebut menerima kata-kata, diantaranya
Palo Alto CA, Ithaca NY, I Thaca NY, Palo A CA
• Ekspresi tersebut tidak menerima kata-kata: Palo
Alto, palo Alto CA, Palo AltoCA
Ekspresi Regular (3)
• Dalam kedua ekspresi yang diberikan,
• [A – Z] menyatakan range karakter dari huruf kapital “A” ke
“Z”
• [ ] menyatakan karakter blank
• simbol * menyatakan “sejumlah” ekspresi yang mendahului
• Tanda kurung digunakan untuk mengelompokkan komponen-
komponen dari ekspresi. Tanda kurung tidak menyatakan
karakter dalam teks.
Konsep dalam Teori Otomata
Alphabet
• Sebuah alphabet adalah himpunan berhingga dan tak
kosong dari simbol. Alphabet disimbolkan oleh .
• Contoh:
•  = {0, 1} alphabet biner
•  = {a, b,..., z}, himpunan semua huruf kecil.
• Himpunan semua karakter ASCII.
Konsep dalam Teori Otomata (lanjutan)
String
• Sebuah string (atau word) adalah deretan simbol
berhingga yang dipilih dari alphabet.
• Contoh : 011011 dan 1111 adalah string dari alphabet
biner  = {0, 1}.
• String kosong adalah string dimana tidak ada
kemunculan simbol.
• String tersebut dinotasikan oleh .
Konsep dalam Teori Otomata (lanjutan)
 Panjang dari string adalah banyaknya posisi untuk simbol
dalam string.
 Contoh, 01101 memiliki panjang 5.
 Umumnya panjang dari string adalah banyaknya simbol dalam
string.
 Pernyataan tersebut tidak sepenuhnya benar, sebagai contoh
terdapat 2 simbol dalam string 01101 yaitu 0 dan 1, tetapi
terdapat 5 posisi untuk simbol, dan panjangnya adalah 5.
 Notasi standar untuk panjang string w adalah |w|.
Contoh: |011| = 3 dan || = 0.
Konsep dalam Teori Otomata (lanjutan)
• x adalah sebuah substring dari string lain y jika ada
string w dan z, keduanya dapat berupa string kosong,
sedemikian sehingga y = wxz.
• Sebagai contoh, car adalah substring dari carry, car,
vicar.
Konsep dalam Teori Otomata (lanjutan)
Pangkat dari Alphabet
• Jika  adalah alphabet, dapat dinyatakan himpunan dari
semua string dengan panjang tertentu dari alphabet
tersebut dengan menggunakan notasi eksponensial.
• Kita mendefinisikan k sebagai himpunan dari string
dengan panjang k, setiap string tersebut memiliki simbol
dalam .
Konsep dalam Teori Otomata (lanjutan),
Contoh 3
 Perhatikan bahwa 0 = {}, untuk alphabet apapun.
 Bahwa  adalah string yang memiliki panjang 0.
Jika  = {0, 1} maka
1 = {0, 1}
2 = {00, 01, 10, 11}
3 = {000, 001, 010, 011, 100, 101, 110, 111} dan seterusnya.
 Semua string pada alphabet  dinotasikan *.
 Contoh: {0,1}* = {, 0, 1, 00, 01, 10, 11, 000, ...} dan * = 0  1
 2  ...
Konsep dalam Teori Otomata (lanjutan)
• Kadang-kadang kita tidak ingin memasukkan string
kosong dalam himpunan string.
• Himpunan string-string tak kosong dari alphabet 
dinotasikan +.
• Dengan demikian :
+ = 1  2  3  ...
* = +  {}.
Konsep dalam Teori Otomata (lanjutan)
Perangkaian String (concatenation)
• Misalkan x dan y adalah string, maka xy menyatakan
perangkaian dari x dan y, bahwa string dibentuk dengan
membuat salinan dari x dan diikuti oleh salinan dari y.
• Jika x adalah string yang disusun oleh i simbol,
x = a1a2 ... ai
dan y adalah string yang disusun oleh j simbol,
y = b1b2 ... bj
maka xy adalah string dengan panjang i + j,
xy = a1a2 ... aib1b2 ... bj
• Contoh: x = 01101 dan y = 110, maka xy = 01101110 dan
yx = 11001101.
• Untuk suatu string w, persamaan w = w = w dipenuhi.
Bahwa  adalah identitas untuk perangkaian.
Konsep dalam Teori Otomata (lanjutan)
Bahasa
• Himpunan string-string yang semuanya dipilih dari *, dimana 
adalah alphabet, dan L  *, maka L adalah bahasa pada .
• Perhatikan bahwa bahasa pada  tidak harus meliputi string-string
dengan semua simbol dari .
• Dengan demikian, jika L adalah bahasa pada , diketahui bahwa
L adalah bahasa pada alphabet yang merupakan superset dari .
• Bahasa umum dapat dipandang sebagai himpunan dari string.
Konsep dalam Teori Otomata (lanjutan),
Contoh 4
• Bahasa Inggris, yang merupakan koleksi dari kata-kata
dalam bahasa Inggris yang benar.
• Kata-kata tersebut merupakan string pada alphabet yang
mengandung semua huruf.
• Bahasa C atau bahasa pemrograman lainnya.
• Dalam bahasa tersebut, program yang benar adalah subset
dari string-string yang mungkin yang dibentuk dari alphabet.
• Alphabet tersebut adalah subset dari karakter-karakter ASCII.
Konsep dalam Teori Otomata (lanjutan)
Contoh bahasa dalam teori otomata:
 Bahasa dari semua string yang berisi n buah 0 dan diikuti oleh n
buah 1, untuk n  0:
{, 01, 0011, 000111, ...}
 Himpunan string-string dari 0 dan 1 dengan banyaknya 0 sama
dengan banyaknya 1.
{, 01, 10, 0011, 0101, 1001 ...}
 Himpunan bilangan biner yang memiliki nilai prima
{10, 11, 101, 111, 1011, ...}
 * adalah bahasa untuk alphabet 
  adalah bahasa kosong, merupakan bahasa pada suatu alphabet.
 {}, bahasa yang hanya mengandung string kosong, juga merupakan
bahasa pada suatu alphabet.
Perhatikan bahwa   {}
Contoh 5
Berikut adalah contoh bahasa pada  = {a, b}:
1. L1 = {, a, aa, aab}
2. L2 = {x  {a, b}* |x| ≤ 8}
3. L3 = {x  {a, b}* |x| adalah ganjil}
4. L4 = {x  {a, b}* na(x) ≥ nb(x)}
5. L5 = {x  {a, b}* |x| ≥ 2, x diawali dan diakhiri
dengan b}
Notasi lain dari Bahasa (1)
1. Berdasarkan string-string yang dikonstruksi di dalamnya.
Contoh: L1 = {ab, bab}*  {b}{bb}*
2. Sifat atau karakteristik dari string dalam L,
Contoh: L = {byb y  {a, b}*}.
3. Definisi rekursif
Contoh: Definisi rekursif dari L*:
   L*
 Untuk suatu x  L* dan suatu y  L, xy  L*
 Tidak ada string dalam L* selain yang diperoleh
menggunakan aturan 1 dan 2.
Notasi lain dari Bahasa (2)
Definisi rekursif untuk bahasa pal dari string-string
palindrom pada :
   pal
 Untuk suatu a  , a  pal
 Untuk suatu x  pal, dan suatu a  , axa  pal
 Tidak ada string dalam pal selain yang diperoleh
menggunakan aturan 1, 2 dan 3.
Notasi lain dari Bahasa (3)
Definisi rekursif dari bahasa (LAE) yang string-string di dalamnya
berupa ekspresi aljabar dengan tanda kurung penuh (sepasang)
untuk setiap operator dengan
 = {i, (, ), +, −}.
• i  LAE
• Untuk suatu x, y  LAE, (x+y) dan (x−y) adalah anggota dari LAE.
• Tidak ada string dalam LAE selain yang diperoleh menggunakan
aturan 1 dan 2.
Contoh string dalam bahasa tersebut: i, (i+i), (i−i), ((i+i)−i),
((i−(i−i))+i).
Perangkaian Bahasa
 Jika L1 dan L2 adalah bahasa, L1 dan L2  *.
Perangkaian dari L1 dan L2 dinotasikan
L1L2 = {xy | x  L1 dan y  L2}.
 Sebagai contoh, {hope, fear}{less, fully} = {hopeless,
hopefully, fearless, fearfully}.
 Untuk L adalah bahasa, L{} = {}L karena untuk setiap x
 L, x = x = x.
Daftar Pustaka
• John E. Hopcroft, Rajeev Motwani, Jeffrey D. Ullman. 2001.
Introduction to Automata Theory, Languange, and Computation.
Edisi ke-2. Addison-Wesley.
Thank you
Computer Science Departement
FMIPA-IPB Kampus Darmaga
Jl. Meranti Wing 20 Level V, Bogor, Indonesia
Phone/Fax: +62 251 8625584
http://cs.ipb.ac.id/
29
Department of
Computer Science
http://cs.ipb.ac.id/
Deterministic Finite Automata dan
Nondeterministic Finite Automata
1
Struktur Diskret (KOM209)
Imas Sukaesih Sitanggang
Pertemuan 10
Finite Automata
• Sebuah Finite Automata (FA) memiliki sebuah himpunan dari state dan
kontrolnya yang bergerak dari state ke state sebagai respon dari adanya
input eksternal.
• FA dibedakan ke dalam dua kelas, yaitu
• Deterministic FA (DFA), yaitu FA yang tidak dapat berada pada lebih
dari satu state pada suatu waktu.
• Non Deterministic FA (NFA), yaitu FA yang dapat berada pada
beberapa state pada waktu yang bersamaan.
• Pada DFA, dari suatu state ada tepat satu state berikutnya untuk setiap
input eksternal yang diterima.
• Sedangkan pada NFA, untuk setiap pasangan state input kita bisa memiliki
0 atau lebih pilihan ke state berikutnya.
Deterministic Finite Automata (DFA)
• Deterministic Finite Automata (DFA) akan berada pada suatu state tunggal
setelah pembacaan dari serangkaian input.
• Istilah “deterministic” menunjuk kepada fakta bahwa pada setiap input
terdapat satu dan hanya satu state yang dituju oleh automata dari state
tertentu.
Definisi DFA
Suatu DFA terdiri dari :
1. Sebuah himpunan berhingga dari state dinotasikan Q.
2. Sebuah himpunan berhingga dari simbol input, dinotasikan .
3. Fungsi transisi yang memiliki argumen sebuah state dan sebuah simbol
input, serta mengembalikan sebuah state, biasanya dinotasikan sebagai .
Untuk q  Q dan a  
: Q   → Q
dan (q,a) menyatakan state kemana DFA bergerak. Dalam bentuk graf, 
direpresentasikan oleh arc antara state dan label pada arc.
Jika q adalah state, dan a adalah simbol input, maka (q,a) adalah state p
sedemikian sehingga terdapat sebuah arc yang diberi label a dari q ke p.
Definisi DFA (2)
4. Sebuah state awal (start state), merupakan salah satu dari state-
state dalam Q.
5. Sebuah himpunan dari final state F.
Himpunan F adalah subset dari Q.
DFA seringkali dinotasikan sebagai sebuah tuple 5 elemen A = (Q,
, , q0, F), dimana
A : Nama dari DFA
Q : Himpunan state
 : Simbol-simbol input
 : Fungsi transisi
q0: Start state
F : Himpunan accepting state.
Pemrosesan String oleh DFA
 Anggaplah a1, a2, ..., an adalah sebuah rangkaian dari simbol input.
 Dengan berawal dari start state , dengan dibacanya simbol input a1, DFA
menuju state q1. Sehingga
(q0, a1) = q1.
 Selanjutnya DFA memproses simbol input selanjutnya, yaitu a2, dengan
mengevaluasi (q1, a2) = q2.
 Dengan cara yang sama DFA akan memasuki state q3, q4, ..., qn, sehingga
(qi-1, ai) = qi untuk setiap i.
 Jika qn  F maka input a1, a2, ..., an diterima dan jika qn  F maka input a1,
a2, ..., an ditolak.
 Bahasa dari DFA adalah semua string yang diterima oleh DFA tersebut.
Contoh 1
• DFA berikut menerima semua string dari para 0 dan para 1
yang memiliki urutan 01 pada suatu tempat dalam string:
A = ({q0, q1, q2}, {0, 1}, , q0, {q1})
dimana 
(q0, 0) = q2 (q0, 1) = q0
(q2, 0) = q2 (q2, 1) = q1
(q1, 0) = (q1, 1) = q1
Notasi untuk DFA
• Selain dinyatakan dalam tuple 5-elemen, DFA dapat dinyatakan
menggunakan
• Diagram transisi, yaitu graf yang terdiri dari node dan arc
• Tabel transisi, yaitu daftar tabular dari fungsi .
Tabel Transisi
• Tabel transisi menyatakan himpunan dari state dan alphabet input. Sebuah
diagram transisi untuk suatu DFA A = (Q, , , q0, F) adalah sebuah graf yang
didefinisikan sebagai berikut:
1. Untuk setiap state dalam Q, terdapat sebuah node.
2. Untuk setiap q  Q dan setiap simbol input a  , misalkan (q,a) = p. Maka
diagram transisi memiliki sebuah arc dari node q ke node p, diberi label a.
Jika terdapat beberapa simbol input yang menyebabkan transisi dari q ke p, maka
diagram transisi dapat memiliki suatu arc, yang diberi label berupa daftar dari
simbol-simbol input tersebut.
3. Terdapat sebuah tanda panah menuju start state q0, yang diberi label start. Tanda
panah tersebut tidak berasal dari state-state lain.
4. Node yang menyatakan final state (yaitu dalam F) diberi tanda oleh lingkaran
ganda. State yang bukan dalam F memiliki sebuah lingkaran tunggal.
Contoh 2
• Diagram transisi untuk DFA dalam Contoh 6 adalah
1
q
2
q
1
0
0,1
0 1
0
q
start
Contoh 3
• Tabel transisi untuk fungsi  pada Contoh 7 adalah
0 1
→ q0 q2 q0
* q1 q1 q1
q2 q2 q1
Start state diberi tanda dengan sebuah arah panah, dan final state
diberi tanda dengan sebuah tanda bintang.
Perluasan Fungsi Transisi untuk String (1)
• Secara informal DFA menyatakan sebuah bahasa, yaitu himpunan string
yang diperoleh dalam urutan transisi state dari start state ke final state.
• Dalam diagram transisi, bahasa dari sebuah DFA adalah himpunan label
sepanjang semua path dari start state ke final state.
• Fungsi transisi yang diperluas menjelaskan apa yang terjadi pada DFA
ketika proses berawal pada suatu state dan mengikuti rangkaian input.
Perluasan Fungsi Transisi untuk String (2)
• Jika  adalah fungsi transisi, maka fungsi transisi yang
diperluas yang di konstruksi dari  dinotasikan
• Fungsi transisi yang diperluas dari sebuah fungsi yang
mengambil state q dan sebuah string w dan
mengembalikan state p.
• State p adalah state yang dicapai oleh FA ketika berawal
dari state q dan memproses rangkaian input w.
ˆ
Perluasan Fungsi Transisi untuk String (3)
• Definisikan dengan induksi pada panjang string input
sebagai berikut
• Basis : yang berarti jika FA berada dalam state
q dan membaca tidak ada input, FA tetap dalam state q.
• Induksi : Anggap w adalah string dengan bentuk xa, a
adalah simbol terakhir dari w, dan x adalah string yang
berisi semua simbol, kecuali simbol terakhir.
• Contoh : w= 1101 dipisahkan ke dalam x = 110 dan a = 1,
maka

ˆ
( ) q
q, =



( ) ( ) 





=


a
,
q,
w
q, x



Perluasan Fungsi Transisi untuk String (4)
• Untuk menghitung pertama hitung (adalah
state dimana FA selesai memproses semua simbol kecuali
simbol terakhir dalam w).
• Anggaplah state tersebut adalah p, = p
Maka adalah state yang diperoleh dengan membuat
transisi dari state p pada input a (simbol terakhir dari w).
Bahwa
( )
w
q,

 ( )
x
q,


( )
x
q,


( )
w
q,


( ) ( )
a
p,
w
q, 
 =

Contoh 4
• DFA berikut menerima bahasa berikut
L = ww memiliki jumlah para 0 dan para 1 yang masing-
masing adalah genap
2
q
1
q
3
q
0
q
start
0 0
0
0
1
1
1
1
Contoh 4 (lanjutan)
• Pemrosesan input 110101:
Bahasa dari Sebuah DFA
• Bahasa dari sebuah DFA, A = (Q, , , q0, F),
dinotasikan L(A) didefinisikan oleh
( ) ( )






=

F
dalam
w
,
q
w
A
L 0

( ) 


A
L
• Dengan demikian bahasa dari A adalah himpunan string w
yang berawal dari state awal q0 ke suatu accepting state.
• Jika L adalah L(A) untuk suatu DFA A, maka dikatakan L
adalah bahasa regular.
Contoh 5
• Diberikan DFA dengan diagram transisi berikut
0
q 1
q 2
q
a
b
a
b
b
a
start
• Buatlah diagram transisi untuk
DFA
• String w1 = abb diterima oleh
DFA melalui kalkulasi berikut:
• Karena q2 dalam F = {q2},
maka string w1 = abb dalam
L(A).
Subtopik
• DFA: Definisi DFA, Bagimana DFA memproses string, Notasi-notasi untuk
DFA, Fungsi transisi yang diperluas, Bahasa dari DFA
• NFA: Definisi NFA, Bagimana NFA memproses string, Fungsi transisi yang
diperluas, Bahasa dari NFA, Ekuivalensi DFA dan NFA
• ε-NFA: Penggunaan transisi-ε, Notasi formal untuk ε-NFA, Epsilon-
Closure, Fungsi transisi yang diperluas dan bahasa untuk ε-NFA,
Mengeliminasi Transisi -
Nondeterministic Finite Automata
• Perbedaan antara DFA dan NFA adalah dalam bentuk .
• Untuk NFA,  adalah fungsi yang memiliki argumen sebuah state dan
sebuah simbol (seperti dalam DFA), tetapi mengembalikan himpunan
dari nol, satu atau lebih state.
Contoh 6
• Gambar berikut adalah sebuah NFA yang menerima string yang
terdiri dari para 0 dan para 1 dan diakhiri oleh 01.
0
q 1
q
0 1
0,1
start
2
q
Definisi NFA
Sebuah NFA dinyatakan sebagai sebuah tuple 5 elemen,
yaitu A = (Q, , , q0, F), dimana :
1. Q : Sebuah himpunan berhingga dari state-state
2.  : Sebuah himpunan berhingga dari simbol-simbol input
3. q0 : Sebuah start state q0  Q
4. F : Sebuah himpunan final state, F  Q
5.  : Fungsi transisi yang memiliki argumen sebuah state
dalam Q dan sebuah simbol input dalam  dan
mengembalikan sebuah himpunan bagian dari Q.
• NFA dalam Contoh 6 dapat dinyatakan
A = ({q0, q1, q2}, {0, 1}, , q0, {q2})
dengan fungsi transisi :
0 1
→ q0 {q0, q1} {q0}
q1  {q2}
* q2  
Jika tidak terdapat transisi dari
state tertentu untuk simbol input
yang diberikan, fungsi transisi
mengembalikan himpunan kosong,
dinotasikan 
Latihan
• Buatlah tabel transisi untuk NFA berikut
q0
q1
q2
q3
1 0
1 1
0
0
start
q0
start a,b
q1
b
a b
NFA A
NFA B
Fungsi Transisi yang Diperluas
• Definisi fungsi transisi yang diperluas ( ) untuk sebuah fungsi transisi ()
dari NFA:
• Basis: (q,) = {q}. Bahwa, tanpa membaca simbol input, NFA tidak
berubah. NFA berada dalam state pada saat mulai membaca input.
• Induksi: Anggap bahwa w berbentuk w = xa, dimana a adalah simbol
terakhir dari w dan x adalah simbol-simbol lain dalam w selain simbol
terakhir. Anggap bahwa (q,x) = {p1, p2, ..., pk}, dan misalkan
ራ
𝑖=1
𝑘
𝛿 𝑝𝑖, 𝑎 = {𝑟1, 𝑟2, … , 𝑟𝑚}
• Maka (q,w) = {r1, r2, ..., rm}








Contoh 7
• Fungsi digunakan
untuk menjelaskan
pemrosesan input
00101 oleh NFA
dalam Contoh 1.
Langkah-langkahnya
adalah sebagai
berikut :


Contoh 7 (lanjutan)
• String w dikatakan diterima oleh NFA A = (Q, , , q0,
F), apabila
(q0,w)  F  
• Sehingga
(q0,00101) = {q0, q2}
• Karena F = {q2} sehingga 00101 diterima oleh NFA
dalam Contoh 1.




Latihan
• Tentukan apakah string berikut diterima oleh NFA A dan B?
q0
q1
q2
q3
1 0
1 1
0
0
start
q0
start a,b
q1
b
a b
NFA A
NFA B
String aaab
String 100
Bahasa dari NFA
• Jika A = (Q, , , q0, F) adalah sebuah NFA, maka
• Artinya bahwa, L(A) adalah himpunan dari string-string
dalam * sedemikian sehingga
(q0,w) mengandung sedikitnya satu accepting state.


( ) ( )












=


 F
w
,
q
w
A
L 0
Latihan
• Diberikan tabel transisi untuk sebuah NFA. Apakah string w =
0100 diterima oleh NFA tersebut.
δ 0 1
→q0 {q0} {q0, q1}
*q1 {q2} {q2}
q2 {q3} {q3}
*q3 { } { }
Ekuivalensi dari DFA dan NFA (1)
• Dalam banyak kasus lebih mudah membuat NFA yang
menerima bahasa tertentu daripada DFA yang
menerima bahasa yang sama.
• Akan tetapi semua bahasa yang dapat dijelaskan oleh
NFA juga dapat dijelaskan oleh DFA.
• Bukti bahwa DFA dapat mengerjakan apa yang
dikerjakan oleh NFA melibatkan “ konstruksi subset”,
yaitu mengkonstruksi semua subset dari state-state
NFA.
Ekuivalensi dari DFA dan NFA (2)
• Konstruksi subset bermula dari sebuah NFA, N = (QN,
, N, q0, FN).
• Tujuannya adalah ingin ditentukan deskripsi dari DFA
D = (QD, , D, {q0}, FD) sedemikian sehingga L(D) =
L(N).
• Perhatikan bahwa alphabet input untuk N dan D sama
yaitu , dan start state dari D adalah himpunan yang
hanya mengandung start state dari N.
Ekuivalensi dari DFA dan NFA (3)
• Komponen/elemen lain dikonstruksi sebagai berikut:
• QD adalah himpunan dari himpunan bagian (subset) dari
QN, yaitu QD adalah himpunan kuasa (power set) dari QN.
Jika QN memiliki n state, maka QD mempunyai 2n state.
• Seringkali tidak semua dari state-state ini dapat diakses
dari start state dari QD.
• State-state yang tidak dapat diakses dapat dibuang,
sehingga banyaknya state-state dari D dapat lebih sedikit
dari 2n.
Ekuivalensi dari DFA dan NFA (4)
• FD adalah himpunan dari subset-subset S dari QN sedemikian
sehingga S  FN  , bahwa FD adalah semua himpunan-
himpunan dari state-state N yang mengandung sedikitnya
accepting state dari N.
• Untuk setiap S  QN dan untuk setiap simbol input a,
• bahwa untuk menghitung D(S, a), kita lihat semua state-state p
dalam S, selanjutnya ditentukan state yang dituju state N dari p
pada input a, dan ambil union dari semua state-state tersebut.
𝛿𝐷 𝑆, 𝑎 = ራ
𝑃 𝑑𝑎𝑙𝑎𝑚 𝑆
𝛿𝑁 𝑝, 𝑎
Contoh 8
• Misal N adalah NFA dalam Contoh 1 yang menerima semua string
yang diakhiri oleh 01.
N = ({q0, q1, q2}, {0, 1}, N, q0, {q2})
konstruksi subset dilakukan sebagai berikut:
Karena QN = {q0 , q1 , q2}, maka banyaknya state dalam QD adalah
23 = 8, yaitu semua subset-subset dari ketiga state tersebut.
0
q 1
q
0 1
0,1
start
2
q
Contoh 8 (lanjutan)
• Tabel transisi
dari kedelapan
state:
D 0 1
  
→ {q0} {q0, q1} {q0}
{q1}  {q2}
*{q2}  
{q0, q1} {q0, q1} {q0, q2}
*{q0, q2} {q0, q1} {q0}
*{q1, q2}  {q2}
*{q0, q1, q2} {q0, q1} {q0, q2}
Contoh 8 (lanjutan)
• Fungsi transisi N
N 0 1
→ {q0} {q0, q1} {q0}
{q1}  {q2}
*{q2}  
• Untuk menghitung entri-
entri dalam tabel transisi
D, perhatikan bahwa
untuk setiap S  QN dan
setiap a,
𝛿𝐷 𝑆, 𝑎 = ራ
𝑃 𝑑𝑎𝑙𝑎𝑚 𝑆
𝛿𝑁 𝑝, 𝑎
Contoh 8 (lanjutan)
sehingga
Contoh 8 (lanjutan)
• Cara yang sama dapat digunakan untuk menentukan
elemen lain dalam tabel transisi D.
• Start state dari N adalah q0 sehingga start state dari D
adalah {q0}.
• Himpunan final state dari N adalah FN = {q2} sehingga
himpunan final state, FD, dari A adalah himpunan dari
subset-subset dari QN = {q0, q1, q2} sedemikian
sehingga
S  FN  
dengan demikian
FD = ({q2}, {q0, q2}, {q1, q2}, {q0, q1, q2}).
Contoh 8 (lanjutan)
• Perhatikan bahwa elemen-elemen
dalam tabel N adalah himpunan,
bahwa state-state dari DFA yang telah
dikonstruksi adalah himpunan.
• Ganti nama-nama state ini, sebagai
contoh A untuk , B untuk {q0}, H
untuk {q0, q1, q2} dan seterusnya.
D 0 1
A A A
→B E B
C A D
*D A A
E E F
*F E B
*G A D
*H E F
Lazy evaluation (1)
• Untuk menghindari langkah untuk membuat elemen-elemen dari
tabel transisi yang memerlukan waktu eksponensial untuk setiap
subset dari state-state.
• Caranya:
• Basis: singleton set yang hanya berisi start state dari N dapat
diakses.
• Induksi: anggaplah kita telah menentukan bahwa himpunan S
dari state-state dapat diakses.
Kemudian untuk setiap simbol input a, hitung himpunan dari
state-state D(S, a), himpunan-himpunan dari state ini juga dapat
diakses.
Lazy evaluation (2)
• Dengan menggunakan lazy evaluation, diperoleh DFA yang
ekuivalen dengan NFA pada Contoh 6:
Start
 
0
q  
2
0 q
,
q
 
1
0 q
,
q
1
1
1
0
0
0
Teorema
Teorema 1:
• Jika D = (QD, , D, {q0}, FD) adalah DFA yang dibuat dari
NFA N = (QN, , N, q0, FN) dengan konstruksi subset, maka
L(D) = L(N).
Teorema 2:
• Sebuah bahasa L diterima oleh suatu DFA jika dan hanya
jika L diterima oleh suatu NFA.
Bukti : dapat dilihat pada buku rujukan.
Latihan
• Diberikan diagram dan tabel transisi untuk sebuah NFA
berikut. Tentukan DFA yang ekuivalen dengan NFA
tersebut.
• Tabel transisi
δ 0 1
→q0 {q0, q1} {q0 }
q1 { } {q2}
*q2 {q2} {q2}
45
Referensi
• John E. Hopcroft, Rajeev Motwani, Jeffrey D. Ullman. 2001.
Introduction to Automata Theory, Languange, and Computation.
Edisi ke-2. Addison-Wesley.
Thank you
Computer Science Departement
FMIPA-IPB Kampus Darmaga
Jl. Meranti Wing 20 Level V, Bogor, Indonesia
Phone/Fax: +62 251 8625584
http://cs.ipb.ac.id/
46
Department of
Computer Science
http://cs.ipb.ac.id/
Epsilon NFA dan Ekspresi Regular
1
Struktur Diskret (KOM209)
Imas Sukaesih Sitanggang
Pertemuan 12
Ekspresi Reguler
Subtopik:
• ε-NFA:
• Penggunaan transisi-ε,
• Notasi formal untuk ε-NFA,
• Epsilon-Closure,
• Fungsi transisi yang diperluas
• Bahasa untuk ε-NFA, Mengeliminasi Transisi -
• Ekspresi regular
• Operator dari ekspresi regular
• Pembuatan ekspresi regular
• Konversi DFA ke ekspresi regular
• Konversi Ekspresi regular ke Otomata
Finite Automata
• Sebuah Finite Automata (FA) memiliki sebuah himpunan dari state dan
kontrolnya yang bergerak dari state ke state sebagai respon dari adanya
input eksternal.
• FA dibedakan ke dalam dua kelas, yaitu
• Deterministic FA (DFA), yaitu FA yang tidak dapat berada pada lebih
dari satu state pada suatu waktu.
• Non Deterministic FA (NFA), yaitu FA yang dapat berada pada
beberapa state pada waktu yang bersamaan.
• Pada DFA, dari suatu state ada tepat satu state berikutnya untuk setiap
input eksternal yang diterima.
• Sedangkan pada NFA, untuk setiap pasangan state input kita bisa memiliki
0 atau lebih pilihan ke state berikutnya.
Finite Automata dengan Transisi-
• FA dengan transisi- adalah FA yang memungkinkan sebuah
transisi pada  (string kosong).
• Dengan kata lain, sebuah NFA dimungkinkan membuat transisi
tanpa menerima sebuah simbol input.
• NFA dengan transisi- dinotasikan -NFA
Contoh 1
Sebuah -NFA menerima bilangan desimal yang terdiri dari:
1. Tanda  atau  (optional)
2. Sebuah string dari digit-digit
3. Sebuah titik desimal
4. Sebuah string yang lain dari digit-digit. String dari digit-digit ini atau string
(2) dapat kosong, tetapi sedikitnya satu dari 2 string dari digit harus tak
kosong.
Contoh 1 (lanjutan)
Diagram transisi -NFA yang dimaksud:
Start
0
q 1
q 2
q 3
q 5
q
4
q


 ,
,
0,1,...,9 0,1,...,9 0,1,...,9
0,1,...,9

.
.
Notasi Formal untuk sebuah -NFA
Secara formal, kita menyatakan -NFA A oleh
A = (Q, , , q0, F)
dimana semua elemen merepresentasikan hal yang sama dengan NFA,
kecuali adalah fungsi dengan argumen sebagai berikut:
1. Sebuah state dalam Q, dan
2. Sebuah elemen dari   {}, yaitu simbol input atau .
3. Simbol untuk string kosong, , tak dapat manjadi anggota dari ,
sehingga tidak ada hasil-hasil yang membingungkan.
Contoh 2
-NFA dalam Contoh 1 direpresentasikan secara formal sebagai berikut :
E = ({q0, q1, q2, q3, q4, q5}, {., +, , 0, 1, ...,9}, , q0 , {q5})
dimana  didefinisikan dalam tabel transisi berikut:
  +, . 0,1,2,...,9
q0 {q1} {q1}  
q1   {q2} {q1, q4}
q2    {q3}
q3 {q5}   {q3}
q4   {q3} 
*q5    
Epsilon-Closure (ECLOSE) (1)
• ECLOSE digunakan dalam menentukan fungsi transisi yang diperluas untuk
-NFA.
• ECLOSE dari state q ditentukan dengan mengikuti semua transisi yang
keluar dari q yang diberi label .
• Ketika mendapat state lain, dengan mengikuti  kita mengikuti transisi 
keluar dari state-state tersebut, dan seterusnya, akhirnya menemukan
setiap state yang dapat dicapai dari q sepanjang path yang memiliki arc-arc
yang semuanya diberi label .
Epsilon-Closure (ECLOSE) (2)
• Definisi formal -closure ECLOSE(q)
• Basis: state q adalah dalam ECLOSE(q)
• Induksi: Jika state p adalah dalam ECLOSE(q), dan terdapat
sebuah transisi dari state p ke state r yang diberi label , maka r
adalah dalam ECLOSE(q).
• Dapat dinyatakan bahwa jika  adalah fungsi transisi dari -NFA, dan
p adalah dalam ECLOSE(q), maka ECLOSE(q) juga mengandung
semua state dalam (p, ).
Contoh 3
• Untuk -NFA pada Contoh 1, setiap state adalah -closure-nya
sendiri, kecuali
• ECLOSE(q0) = {q0, q1}
• ECLOSE(q3) = {q3, q5}
• Perhatikan bahwa hanya dua transisi , salah satu yang
menambahkan ke ECLOSE(q0) dan yang lain menambahkan q5 ke
ECLOSE(q3).
Contoh 4
Untuk -NFA sebagai berikut ECLOSE(1) = {1,2,3,4,6}
1
5
3
2
4
6
7


 

a
b
Fungsi Transisi yang Diperluas dan
Bahasa untuk -NFA
Anggaplah E = (Q, , , q0, F) adalah -NFA. Definisi untuk fungsi
transisi yang diperluas ( መ
𝛿) pada -NFA adalah
• Basis:෡
𝛿 𝑞, 𝜀 = 𝐸𝐶𝐿𝑂𝑆𝐸 𝑞 bahwa, jika label dari path adalah ,
maka kita hanya dapat mengikuti arc perluasan yang diberi label 
dari state q.
• Induksi: Anggap bahwa w adalah bentuk xa dimana a adalah simbol
terakhir dari w.
Perhatikan bahwa a adalah anggota dari ; a bukanlah  yang tidak
dalam .
Menghitung መ
𝛿(𝑞, 𝑤)
1. Misal {p1, p2, ..., pk} adalah መ
𝛿(𝑞, 𝑥). Bahwa pi untuk semua i adalah state-
state dan hanya state-state yang dapat dicapai dari q mengikuti path yang
diberi label x.
Path ini dapat berakhir dengan 1 atau lebih transisi yang diberi label  dan
juga dapat memiliki transisi-transisi  yang lain.
2. Misalkan ‫ڂ‬𝑖=1
𝑘
𝛿(𝑝𝑖, 𝑎) adalah himpunan {r1, r2, ..., rm}. Artinya bahwa ikuti
semua transisi yang diberi label a dari state-state yang dapat dicapai dari
q sepanjang path yang diberi label x.
• rj adalah state-state yang dapat dicapai dari q sepanjang path yang
diberi label w.
• State-state tambahan yang dapat dicapai ditemukan dari rj dengan
mengikuti arc-arc yang diberi label  pada langkah (3) berikut.
Menghitung መ
𝛿(𝑞, 𝑤)
3. ෠
δ q, w = ‫ڂ‬j=1
m
ECLOSE(rj)
Langkah closure tambahan ini meliputi semua path dari q
yang diberi label w, dengan mempertimbangkan
kemungkinan bahwa terdapat arc-arc tambahan berlabel 
yang dapat kita ikuti setelah membuat sebuah transisi
pada simbol final a.
Karena
Sehingga 5.6 diterima oleh -NFA pada Contoh 1.
   
5
3
0 q
,
q
6
.
5
,
q 


16
Contoh 5
Apakah 5.6 diterima oleh -NFA pada
Contoh 1? Akan dihitung
  +, . 0,1,2,...,9
q0 {q1} {q1}  
q1   {q2} {q1, q4}
q2    {q3}
q3 {q5}   {q3}
q4   {q3} 
*q5    
 
6
.
5
,
0
q


17
Contoh 5   +, . 0,1,2,...,9
q0 {q1} {q1}  
q1   {q2} {q1, q4}
q2    {q3}
q3 {q5}   {q3}
q4   {q3} 
*q5    
18
Contoh 5   +, . 0,1,2,...,9
q0 {q1} {q1}  
q1   {q2} {q1, q4}
q2    {q3}
q3 {q5}   {q3}
q4   {q3} 
*q5    
Bahasa dari sebuah -NFA
Bahasa dari sebuah -NFA E = (Q, , , q0, F), adalah
   












 F
w
,
q
w
E
L 0
Mengeliminasi Transisi - (1)
Misalkan E = (QE, , E, q0, FE). Maka DFA yang ekuivalen D = (QD, , D, qD,
FD) didefinisikan sebagai berikut:
1. QD adalah himpunan dari subset-subset dari QE.
• Akan ditentukan bahwa semua state yang dapat diakses dari D adalah
subset-subset -closed dari QE, bahwa himpunan-himpunan S  QE
sedemikian sehingga S = ECLOSE(S).
• Himpunan-himpunan -closed dari state-state S adalah himpunan-
himpunan sedemikian sehingga suatu transisi- yang keluar dari satu
state dalam S menuju ke sebuah state yang juga dalam S.
•  adalah himpunan -closed.
Mengeliminasi Transisi - (2)
2. qD = ECLOSE(q0), bahwa kita mendapatkan start state dari D
dengan menutup himpunan yang mengandung hanya start state
dari E.
Hal ini berbeda dengan konstruksi start state dalam NFA.
3. FD adalah himpunan-himpunan dari state yang mengandung
sedikitnya satu accepting state dari E. Bahwa FD = {S | S adalah
dalam QD dan SFE  }.
Mengeliminasi Transisi - (3)
4. D(S, a) dihitung sebagai berikut, untuk semua a dan himpunan-
himpunan S  QD
a. Misal S = {p1, p2, ..., pk}
b. Hitung
Misalkan himpunan tersebut adalah
{r1, r2, ..., rm}.
c. Maka
 

k
i
i
E a
p
1
,


   

m
1
j
j
D r
ECLOSE
a
,
S



Contoh 6
Diperoleh DFA yang mengeliminasi transisi  dari NFA pada
Contoh 1:
 
4
1 q
,
q
}
{q1
 
5
3
2 q
,
q
,
q
 
5
3 q
,
q
}
{q2
 
1
0 q
,
q
Start
+,-
0,1,...,9
0,1,...,9
0,1,...,9
0,1,...,9
0,1,...,9
.
.
0,1,...,9
.
24
Contoh 6
• Untuk -NFA :
• Diketahui QE = {q0, q1, ..., q5}, E = , lihat Contoh
2.10, qE = q0, FE = {q5}.
• Akan ditentukan
  +, . 0,1,2,...,9
q0 {q1} {q1}  
q1   {q2} {q1, q4}
q2    {q3}
q3 {q5}   {q3}
q4   {q3} 
*q5    
    
 
5
0
5
1
0 ,
,
,
9
,...,
1
,
0
,
,
.,
,
,...,
, q
q
q
q
q
E 



 
D
D
D
D F
,
q
,
,
,
Q
D 


25
Contoh 6
• Untuk -NFA :
• Diketahui QE = {q0, q1, ..., q5}, E = , lihat Contoh
2.10, qE = q0, FE = {q5}.
• Akan ditentukan
  +, . 0,1,2,...,9
q0 {q1} {q1}  
q1   {q2} {q1, q4}
q2    {q3}
q3 {q5}   {q3}
q4   {q3} 
*q5    
    
 
5
0
5
1
0 ,
,
,
9
,...,
1
,
0
,
,
.,
,
,...,
, q
q
q
q
q
E 



 
D
D
D
D F
,
q
,
,
,
Q
D 


Contoh 6
Diperoleh DFA yang mengeliminasi transisi  dari NFA pada
Contoh 1:
 
4
1 q
,
q
}
{q1
 
5
3
2 q
,
q
,
q
 
5
3 q
,
q
}
{q2
 
1
0 q
,
q
Start
+,-
0,1,...,9
0,1,...,9
0,1,...,9
0,1,...,9
0,1,...,9
.
.
0,1,...,9
.
Ekspresi Regular (1)
• Dipandang sebagai notasi lain dari NFA.
• Memiliki aplikasi yang penting dalam aplikasi pencarian teks atau
komponen kompilator.
• Memberikan cara deklaratif untuk menyatakan string yang ingin
diterima.
• Menyatakan bahasa, sebagai contoh ekspresi 01* + 10*
menyatakan bahasa yang berisi semua string yang diawali
sebuah 0 dan diikuti oleh para 1 atau sebuah 1 diikuti oleh
sejumlah para 0.
Ekspresi Regular (2)
Operasi dalam bahasa dimana operator dari ekspresi regular
direpresentasikan:
1. Union dari dua bahasa L dan M, dinotasi, adalah himpunan dari
string yang ada dalam L atau dalam M.
Contoh: L = {001, 10, 111} dan M = {, 001}, maka = {, 10,
001, 111}.
2. Concatenation dari bahasa L dan M adalah himpunan dari
string yang dibentuk dengan mengambil string dalam L dan
merangkainya dengan string dalam M.
Notasinya menggunakan “dot” atau tidak ada operator yang
dituliskan.
Contoh 1:
Contoh concatenation:
L = {001, 10, 111} dan M = {, 001}, maka
LM = {001, 10, 111, 001001, 10001, 111001}.
Tiga string pertama dalam LM diperoleh dengan merangkaikan
string-string dalam L dengan , sedangkan sisanya diperoleh
dengan merangkaikan string-string dalam L dengan 001.
Ekspresi Regular (3)
3. Closure (atau star, atau Kleene Closure) dari bahasa L
Dinotasikan L* dan menyatakan himpunan dari string-string yang
dapat dibentuk dengan mengambil sejumlah string dari L, mungkin
dengan pengulangan (yaitu string yang sama dipilih lebih dari sekali),
dan merangkai semua string tersebut.
Contoh : L = {0, 1} maka L* adalah semua string dari para 0 dan para
1.
L = {0, 11} maka L* berisi semua string dari para 0 dan para 1
sedemikian sehingga para 1 muncul berpasangan.
Perhatikan bahwa 011, 11110  L* tapi 01011, 101  L*.
Secara lebih formal, L* adalah union tak berhingga  Li, i  0 dimana
L0 = {}, L1 = L, dan Li untuk i  1 adalah LL...L, yaitu perangkaian
dari i salinan dari L.
Contoh 2:
• L = {0,11}. L0 = {} (tidak bergantung pada bahasa L).
• L1 = L menyatakan pemilihan 1 string dari L.
• L2 ={00, 011, 110, 1111} yaitu mengambil dua string dalam L,
pengulangan diperbolehkan sehingga terdapat 4 string.
• L3 merupakan himpunan string yang dapat dibentuk dengan
membuat 3 pilihan dari 2 string dalam L,
L3 = {000, 0011, 0110, 1100, 01111, 11011, 11110, 111111}.
Contoh 2 (lanjutan)
• Untuk menghitung L*, harus dihitung Li untuk setiap i, dan
mengambil semua union dari bahasa-bahasa ini.
• Li memiliki 2i anggota, setiap Li berhingga, union dari
sejumlah tak berhingga Li umumnya merupakan bahasa
tak berhingga,
L* = L0  L1  L2  ...
• * = {} dan 0 = {}
Membuat Ekspresi Regular (1)
• Ekspresi regular terdiri dari konstanta, variabel-variabel
yang menyatakan bahasa dan operator union, dot dan star.
• Ekspresi regular dapat dinyatakan secara rekursif.
• Definisi ekspresi regular, E, dan bahasa yang
direpresentasikan oleh E yaitu L(E) terdiri dari basis dan
langkah induktif
Membuat Ekspresi Regular (2)
Basis: terdiri dari 3 bagian :
1. Konstanta  dan  adalah ekspresi regular, berturut-
turut menyatakan bahasa {} dan . Bahwa L() ={},
dan L() = .
2. Jika a adalah simbol, maka a adalah ekspresi regular.
Ekspresi ini menyatakan bahasa {a}, bahwa L(a) = {a}
3. Sebuah variabel, biasanya dicetak tebal dan miring
seperti L, merepresentasikan suatu bahasa.
Membuat Ekspresi Regular (3)
Induksi: Langkah induktif terdiri dari 4 langkah:
1. Jika E dan F adalah ekspresi regular, maka E + F adalah ekspresi
regular yang menyatakan union dari L(E) dan L(F).
Bahwa L(E + F) = L(E)  L(F).
2. Jika E dan F adalah ekspresi regular, maka EF adalah ekspresi regular
yang menyatakan perangkaian dari L(E) dan L(F).
Bahwa L(EF) = L(E).L(F).
Simbol ‘dot’ bisa digunakan atau tidak untuk menotasikan operator
perangkaian baik dalam bahasa atau dalam ekspresi regular.
Contoh: 0.1 adalah ekspresi regular yang artinya sama dengan 01 dan
merepresentasikan bahasa {01}.
Membuat Ekspresi Regular (4)
3. Jika E adalah sebuah ekspresi regular, maka E* adalah ekspresi regular
menyatakan closure dari L(E).
Bahwa L(E*) = (L(E))*.
4. Jika E adalah ekspresi regular, maka (E), E dengan tanda kurung juga
ekspresi regular yang menyatakan bahasa yang sama dengan E.
Bahwa L((E)) = L(E).
Contoh 3
• Akan dibuat ekspresi regular untuk himpunan string yang terdiri
dari para 0 dan para 1 secara bergantian.
• Langkah-langkah untuk membuat ekspresi regular tersebut
adalah
• Pertama dibuat ekspresi regular untuk bahasa yang terdiri dari string
tunggal 01.
• Gunakan operator star untuk mendapat sebuah ekspresi untuk semua
string dengan bentuk 0101...01
Contoh 3 (lanjutan)
Basis: 0 dan 1 adalah ekspresi regular yang berturut-turut
menyatakan bahasa {0} dan {1}.
Induksi:
• Perangkaian dari 0 dan 1 yaitu 01 adalah ekspresi regular
yang menyatakan bahasa {01}.
• Untuk mendapat semua string yang terdiri dari nol atau
lebih kemunculan 01 digunakan ekspresi regular (01)*.
• Perhatikan bahwa (01)*  01*. 01* menyatakan bahasa
yang terdiri dari sebuah 0 dan sejumlah para 1.
Contoh 3 (lanjutan)
• Tetapi, L((01)*) bukan bahasa yang tepat yang diinginkan.
• Bahasa ini hanya mencakup string-string dari para 0 dan para 1 secara
bergantian dimulai dengan 0 dan diakhiri dengan 1
 diperlukan kemungkinan terdapat 1 diawal dan 0 diakhir string. Ekspresi
regular yang mungkin adalah
• (10)* yang terdiri dari para 0 dan para 1 secara bergantian, diawali 1 dan
diakhiri 0.
• 0(10)* yang diawali dan diakhiri 0.
• 1(01)* yang diawali dan diakhiri 1.
• Sehingga keseluruhan ekspresi adalah
(01)* + (10)* + 0(10)* + 1(01)*
dengan + adalah operator union.
Contoh 3 (lanjutan), cara Lain
• Mulai dengan (01)*, tambahkan 1 (optional) diawal jika kita
merangkai pada bagian kiri dengan ekspresi +1.
• Bisa juga ditambah 0 (optional) diakhir jika kita merangkai
pada bagian kanan dengan ekspresi +0.
• Dengan menggunakan operator +, diperoleh
L( + 1) = L( )  L(1) = {}  {1} = {,1}
• Ekspresi yang dimaksud adalah (+1)(01)*(+0).
• Jika 1 yang dipilih dalam (+1) didapat string 1w.
• Jika 0 yang dipilih dalam (+0) didapat string w0.
Urutan prioritas operator dalam
ekspresi regular:
1. Operator star
2. Operator dot (concatenation)
Concatenation bersifat asosiatif sehingga 012 dapat
dikelompokkan (01)2.
3. Operator + (union) yang bersifat asosiatif.
Contoh, ekspresi 01*+1 dikelompokkan menjadi
(0(1*))+1.
Finite Automata dan Ekspresi Regular (1)
• Sebuah ekspresi regular dapat merepresentasikan sebuah
bahasa yang diterima oleh finite automata.
• Untuk membuktikan pernyataan tersebut, perlu dibuktikan
bahwa:
• Setiap bahasa yang didefinisikan oleh salah satu dari
automata juga didefinisikan oleh sebuah ekspresi regular.
Dalam hal ini, asumsikan bahwa bahasa tersebut diterima
oleh DFA.
• Setiap bahasa yang didefinisikan oleh suatu ekspresi regular
didefinisikan oleh salah satu dari automata.
Dalam hal ini, asumsikan terdapat NFA dengan transisi 
yang menerima bahasa yang sama.
Skema pembuktian ekuivalensi notasi-
notasi untuk bahasa regular:
• Misalkan x dan y adalah node
dalam gambar di samping.
• Edge dari node x ke y berarti
bahwa dapat dibuktikan setiap
bahasa yang didefinisikan
oleh kelas x juga didefinisikan
oleh kelas y.
NFA
-

DFA
NFA
RE
Konversi Ekspresi Regular ke Automata
Teorema 1:
Setiap bahasa yang didefinisikan oleh sebuah ekspresi regular juga
didefinisikan oleh sebuah FA.
Bukti:
Anggap L = L(R) untuk ekspresi regular R. Kita tunjukkan bahwa L
= L(E) untuk -NFA E dengan
1.Tepat satu accepting state.
2.Tidak ada arc ke dalam initial state.
3.Tidak ada arc yang keluar dari accepting state.
Konversi Ekspresi Regular ke Automata
Basis: Terdapat 3 bagian dalam basis:
a. Konstruksi automaton yang menangani ekspresi . Automaton
tersebut menyatakan bahasa {} karena hanya ada 1 path dari
start state ke accepting state yang diberi label .
b. Konstruksi untuk . Tidak ada path dari start state ke accepting
state, sehingga  adalah bahasa untuk automaton ini.
c. Konstruksi automaton untuk ekspresi regular a. Bahasa dari
automaton ini hanya berisi satu string a, yaitu L(a).
Konversi Ekspresi Regular ke Automata
Basis
a.Konstruksi automaton yang menangani ekspresi 
b. Konstruksi untuk 
c. Konstruksi automaton untuk ekspresi r egular a

a
Konversi Ekspresi Regular ke Automata
Induksi
Diasumsikan bahwa teorema benar untuk sub ekspresi dari sebuah
ekspresi regular yang diberikan. Terdapat 4 kasus dalam induksi
1.Ekspresi adalah R + S untuk ekspresi yang lebih kecil R dan S
bahasa dari automaton adalah L(R)  L(S).
R
S




Konversi Ekspresi Regular ke Automata
2. Ekspresi adalah RS untuk ekspresi R dan S yang lebih kecil.
start state dari automaton yang pertama menjadi start state dari
automaton keseluruhan, dan final state dari automaton kedua
adalah final state dari automaton keseluruhan
semua path dalam automaton secara keseluruhan diberi label
oleh string dalam L(R)L(S)
R

S
Konversi Ekspresi Regular ke Automata
3. Ekspresi adalah R* untuk ekspresi yang lebih kecil R
Kemungkinan dalam automaton tersebut:
• Secara langsung dari start state ke accepting state sepanjang sebuah path
yang diberi label . ( dalam L(R*))
• Untuk start state, melalui sekali atau beberapa kali automaton tersebut, dan
kemudian ke accepting state.
 menerima string-string dalam L(R), L(R)L(R), L(R)L(R)L(R) dan seterusnya
4. Ekspresi adalah (R) untuk ekspresi yang lebih kecil R.

R



Contoh 5




start
0
1







 1
1
0


Konversi ekspresi regular (0+1)*1(0+1) ke sebuah -NFA.
Jawab:
51
Referensi
• John E. Hopcroft, Rajeev Motwani, Jeffrey D. Ullman. 2001.
Introduction to Automata Theory, Languange, and Computation.
Edisi ke-2. Addison-Wesley.
Thank you
Computer Science Departement
FMIPA-IPB Kampus Darmaga
Jl. Meranti Wing 20 Level V, Bogor, Indonesia
Phone/Fax: +62 251 8625584
http://cs.ipb.ac.id/
52
Department of
Computer Science
http://cs.ipb.ac.id/
Ekspresi Regular
1
Struktur Diskret (KOM20I)
Imas Sukaesih Sitanggang
Pertemuan 13
Ekspresi Reguler
Subtopik:
• Operator dari ekspresi regular
• Pembuatan ekspresi regular
• Konversi Ekspresi regular ke Otomata
Ekspresi Regular (1)
• Dipandang sebagai notasi lain dari NFA.
• Memiliki aplikasi yang penting dalam aplikasi pencarian teks atau
komponen kompilator.
• Memberikan cara deklaratif untuk menyatakan string yang ingin
diterima.
• Menyatakan bahasa, sebagai contoh ekspresi 01* + 10*
menyatakan bahasa yang berisi semua string yang diawali
sebuah 0 dan diikuti oleh para 1 atau sebuah 1 diikuti oleh
sejumlah para 0.
Ekspresi Regular (2)
Operasi dalam bahasa dimana operator dari ekspresi regular
direpresentasikan:
1. Union dari dua bahasa L dan M, dinotasi, adalah himpunan dari
string yang ada dalam L atau dalam M.
Contoh: L = {001, 10, 111} dan M = {, 001}, maka = {, 10,
001, 111}.
2. Concatenation dari bahasa L dan M adalah himpunan dari
string yang dibentuk dengan mengambil string dalam L dan
merangkainya dengan string dalam M.
Notasinya menggunakan “dot” atau tidak ada operator yang
dituliskan.
Contoh 1:
Contoh concatenation:
L = {001, 10, 111} dan M = {, 001}, maka
LM = {001, 10, 111, 001001, 10001, 111001}.
Tiga string pertama dalam LM diperoleh dengan merangkaikan
string-string dalam L dengan , sedangkan sisanya diperoleh
dengan merangkaikan string-string dalam L dengan 001.
Ekspresi Regular (3)
3. Closure (atau star, atau Kleene Closure) dari bahasa L
Dinotasikan L* dan menyatakan himpunan dari string-string yang
dapat dibentuk dengan mengambil sejumlah string dari L, mungkin
dengan pengulangan (yaitu string yang sama dipilih lebih dari sekali),
dan merangkai semua string tersebut.
Contoh : L = {0, 1} maka L* adalah semua string dari para 0 dan para
1.
L = {0, 11} maka L* berisi semua string dari para 0 dan para 1
sedemikian sehingga para 1 muncul berpasangan.
Perhatikan bahwa 011, 11110  L* tapi 01011, 101  L*.
Secara lebih formal, L* adalah union tak berhingga  Li, i  0 dimana
L0 = {}, L1 = L, dan Li untuk i  1 adalah LL...L, yaitu perangkaian
dari i salinan dari L.
Contoh 2:
• L = {0,11}. L0 = {} (tidak bergantung pada bahasa L).
• L1 = L menyatakan pemilihan 1 string dari L.
• L2 ={00, 011, 110, 1111} yaitu mengambil dua string dalam L,
pengulangan diperbolehkan sehingga terdapat 4 string.
• L3 merupakan himpunan string yang dapat dibentuk dengan
membuat 3 pilihan dari 2 string dalam L,
L3 = {000, 0011, 0110, 1100, 01111, 11011, 11110, 111111}.
Contoh 2 (lanjutan)
• Untuk menghitung L*, harus dihitung Li untuk setiap i, dan
mengambil semua union dari bahasa-bahasa ini.
• Li memiliki 2i anggota, setiap Li berhingga, union dari
sejumlah tak berhingga Li umumnya merupakan bahasa
tak berhingga,
L* = L0  L1  L2  ...
• * = {} dan 0 = {}
Membuat Ekspresi Regular (1)
• Ekspresi regular terdiri dari konstanta, variabel-variabel
yang menyatakan bahasa dan operator union, dot dan star.
• Ekspresi regular dapat dinyatakan secara rekursif.
• Definisi ekspresi regular, E, dan bahasa yang
direpresentasikan oleh E yaitu L(E) terdiri dari basis dan
langkah induktif
Membuat Ekspresi Regular (2)
Basis: terdiri dari 3 bagian :
1. Konstanta  dan  adalah ekspresi regular, berturut-
turut menyatakan bahasa {} dan . Bahwa L() ={},
dan L() = .
2. Jika a adalah simbol, maka a adalah ekspresi regular.
Ekspresi ini menyatakan bahasa {a}, bahwa L(a) = {a}
3. Sebuah variabel, biasanya dicetak tebal dan miring
seperti L, merepresentasikan suatu bahasa.
Membuat Ekspresi Regular (3)
Induksi: Langkah induktif terdiri dari 4 langkah:
1. Jika E dan F adalah ekspresi regular, maka E + F adalah ekspresi
regular yang menyatakan union dari L(E) dan L(F).
Bahwa L(E + F) = L(E)  L(F).
2. Jika E dan F adalah ekspresi regular, maka EF adalah ekspresi regular
yang menyatakan perangkaian dari L(E) dan L(F).
Bahwa L(EF) = L(E).L(F).
Simbol ‘dot’ bisa digunakan atau tidak untuk menotasikan operator
perangkaian baik dalam bahasa atau dalam ekspresi regular.
Contoh: 0.1 adalah ekspresi regular yang artinya sama dengan 01 dan
merepresentasikan bahasa {01}.
Membuat Ekspresi Regular (4)
3. Jika E adalah sebuah ekspresi regular, maka E* adalah ekspresi regular
menyatakan closure dari L(E).
Bahwa L(E*) = (L(E))*.
4. Jika E adalah ekspresi regular, maka (E), E dengan tanda kurung juga
ekspresi regular yang menyatakan bahasa yang sama dengan E.
Bahwa L((E)) = L(E).
Contoh 3
• Akan dibuat ekspresi regular untuk himpunan string yang terdiri
dari para 0 dan para 1 secara bergantian.
• Langkah-langkah untuk membuat ekspresi regular tersebut
adalah
• Pertama dibuat ekspresi regular untuk bahasa yang terdiri dari string
tunggal 01.
• Gunakan operator star untuk mendapat sebuah ekspresi untuk semua
string dengan bentuk 0101...01
Contoh 3 (lanjutan)
Basis: 0 dan 1 adalah ekspresi regular yang berturut-turut
menyatakan bahasa {0} dan {1}.
Induksi:
• Perangkaian dari 0 dan 1 yaitu 01 adalah ekspresi regular
yang menyatakan bahasa {01}.
• Untuk mendapat semua string yang terdiri dari nol atau
lebih kemunculan 01 digunakan ekspresi regular (01)*.
• Perhatikan bahwa (01)*  01*. 01* menyatakan bahasa
yang terdiri dari sebuah 0 dan sejumlah para 1.
Contoh 3 (lanjutan)
• Tetapi, L((01)*) bukan bahasa yang tepat yang diinginkan.
• Bahasa ini hanya mencakup string-string dari para 0 dan para 1 secara
bergantian dimulai dengan 0 dan diakhiri dengan 1
→ diperlukan kemungkinan terdapat 1 diawal dan 0 diakhir string. Ekspresi
regular yang mungkin adalah
• (10)* yang terdiri dari para 0 dan para 1 secara bergantian, diawali 1 dan
diakhiri 0.
• 0(10)* yang diawali dan diakhiri 0.
• 1(01)* yang diawali dan diakhiri 1.
• Sehingga keseluruhan ekspresi adalah
(01)* + (10)* + 0(10)* + 1(01)*
dengan + adalah operator union.
Contoh 3 (lanjutan), cara Lain
• Mulai dengan (01)*, tambahkan 1 (optional) diawal jika kita
merangkai pada bagian kiri dengan ekspresi +1.
• Bisa juga ditambah 0 (optional) diakhir jika kita merangkai
pada bagian kanan dengan ekspresi +0.
• Dengan menggunakan operator +, diperoleh
L( + 1) = L( )  L(1) = {}  {1} = {,1}
• Ekspresi yang dimaksud adalah (+1)(01)*(+0).
• Jika 1 yang dipilih dalam (+1) didapat string 1w.
• Jika 0 yang dipilih dalam (+0) didapat string w0.
Urutan prioritas operator dalam
ekspresi regular:
1. Operator star
2. Operator dot (concatenation)
Concatenation bersifat asosiatif sehingga 012 dapat
dikelompokkan (01)2.
3. Operator + (union) yang bersifat asosiatif.
Contoh, ekspresi 01*+1 dikelompokkan menjadi
(0(1*))+1.
Finite Automata dan Ekspresi Regular (1)
• Sebuah ekspresi regular dapat merepresentasikan sebuah
bahasa yang diterima oleh finite automata.
• Untuk membuktikan pernyataan tersebut, perlu dibuktikan
bahwa:
• Setiap bahasa yang didefinisikan oleh salah satu dari
automata juga didefinisikan oleh sebuah ekspresi regular.
Dalam hal ini, asumsikan bahwa bahasa tersebut diterima
oleh DFA.
• Setiap bahasa yang didefinisikan oleh suatu ekspresi regular
didefinisikan oleh salah satu dari automata.
Dalam hal ini, asumsikan terdapat NFA dengan transisi 
yang menerima bahasa yang sama.
Skema pembuktian ekuivalensi notasi-
notasi untuk bahasa regular:
• Misalkan x dan y adalah node
dalam gambar di samping.
• Edge dari node x ke y berarti
bahwa dapat dibuktikan setiap
bahasa yang didefinisikan
oleh kelas x juga didefinisikan
oleh kelas y.
NFA
-

DFA
NFA
RE
Konversi Ekspresi Regular ke Automata
Teorema 1:
Setiap bahasa yang didefinisikan oleh sebuah ekspresi regular juga
didefinisikan oleh sebuah FA.
Bukti:
Anggap L = L(R) untuk ekspresi regular R. Kita tunjukkan bahwa L
= L(E) untuk -NFA E dengan
1.Tepat satu accepting state.
2.Tidak ada arc ke dalam initial state.
3.Tidak ada arc yang keluar dari accepting state.
Konversi Ekspresi Regular ke Automata
Basis: Terdapat 3 bagian dalam basis:
a. Konstruksi automaton yang menangani ekspresi . Automaton
tersebut menyatakan bahasa {} karena hanya ada 1 path dari
start state ke accepting state yang diberi label .
b. Konstruksi untuk . Tidak ada path dari start state ke accepting
state, sehingga  adalah bahasa untuk automaton ini.
c. Konstruksi automaton untuk ekspresi regular a. Bahasa dari
automaton ini hanya berisi satu string a, yaitu L(a).
Konversi Ekspresi Regular ke Automata
Basis
a.Konstruksi automaton yang menangani ekspresi 
b. Konstruksi untuk 
c. Konstruksi automaton untuk ekspresi r egular a

a
Konversi Ekspresi Regular ke Automata
Induksi
Diasumsikan bahwa teorema benar untuk sub ekspresi dari sebuah
ekspresi regular yang diberikan. Terdapat 4 kasus dalam induksi
1.Ekspresi adalah R + S untuk ekspresi yang lebih kecil R dan S
bahasa dari automaton adalah L(R)  L(S).
R
S




Konversi Ekspresi Regular ke Automata
2. Ekspresi adalah RS untuk ekspresi R dan S yang lebih kecil.
start state dari automaton yang pertama menjadi start state dari
automaton keseluruhan, dan final state dari automaton kedua
adalah final state dari automaton keseluruhan
semua path dalam automaton secara keseluruhan diberi label
oleh string dalam L(R)L(S)
R

S
Konversi Ekspresi Regular ke Automata
3. Ekspresi adalah R* untuk ekspresi yang lebih kecil R
Kemungkinan dalam automaton tersebut:
• Secara langsung dari start state ke accepting state sepanjang sebuah path
yang diberi label . ( dalam L(R*))
• Untuk start state, melalui sekali atau beberapa kali automaton tersebut, dan
kemudian ke accepting state.
→ menerima string-string dalam L(R), L(R)L(R), L(R)L(R)L(R) dan seterusnya
4. Ekspresi adalah (R) untuk ekspresi yang lebih kecil R.

R



Contoh 5




start
0
1







 1
1
0


Konversi ekspresi regular (0+1)*1(0+1) ke sebuah -NFA.
Jawab:
27
Referensi
• John E. Hopcroft, Rajeev Motwani, Jeffrey D. Ullman. 2001.
Introduction to Automata Theory, Languange, and Computation.
Edisi ke-2. Addison-Wesley.
Thank you
Computer Science Departement
FMIPA-IPB Kampus Darmaga
Jl. Meranti Wing 20 Level V, Bogor, Indonesia
Phone/Fax: +62 251 8625584
http://cs.ipb.ac.id/
28
Department of
Computer Science
http://cs.ipb.ac.id/
T
ataBahasa Bebas Konteks
1
Struktur Diskret (KOM20I)
TataBahasaBebasKonteks(CFG)
Subtopik:
• Tata Bahasa Bebas Konteks
• Definisi dari tata bahasa bebas konteks
• Penurunan menggunakan tata bahasa
• Bahasa dari sebuah tata bahasa
Pendahuluan (1)
• Grammar merupakan alat untuk menjelaskan dan menganalisis
bahasa.
• Aplikasinya:
• CFGmemiliki peranan penting dalam teknologi kompilator
sejak tahun 1960-an.
• CFGjuga telah digunakan untuk menjelaskan format
dokumen, menggunakan document-type definition (DTD)
yang digunakan dalam komunitas XML(extensible markup
language) untuk pertukaran informasi pada web.
Pendahuluan (2)
• Contoh, misal  = {0,1}. Bahasa Lpal dari polindrom-
polindrom pada  didefinisikan secara rekursif sebagai
berikut:
Basis: , 0, 1 adalah polindrom.
Induksi : Jika w adalah sebuah polindrom, begitu juga
0w0 dan 1w1.
Tidak ada string lain dalam Lpal selain string yang diperoleh
dari basis dan induksi.
Pendahuluan (3)
• CFG adalah sebuah notasi formal untuk menyatakan definisi rekursif dari
bahasa.
• Sebuah grammar terdiri dari satu atau lebih variabel yang merupakan kelas-
kelas dari string yaitu bahasa.
• Dalam contoh bahasa Lpal, terdapat hanya satu variabel p yang menyatakan
himpunan dari polindrom-polindrom yaitu kelas-kelas dari string-string yang
membentuk bahasa Lpal.
• Terdapat aturan-aturan yang menyatakan bagaimana string dalam setiap
kelas dikonstruksi.
• Konstruksi dapat menggunakan simbol-simbol dari alphabet, string yang
diketahui ada dalam satu kelas tertentu atau keduanya.
Contoh 1
CFG untuk polindrom adalah
1. P  
2. P  0
3. P  1
4. P  0P0
5. P  1P1
Definisi CFG(1)
Komponen-komponen dalam deskripsi gramatikal dari sebuah bahasa adalah
sebagai berikut:
1. Himpunan berhingga dari simbol yang membentuk string dari bahasa yang
didefinisikan.
Alphabet ini dinamakan terminal-terminal atau simbol-simbol terminal.
Dalam Contoh 1, simbol terminal adalah 0 dan 1.
2. Himpunan berhingga dari variabel-variabel. Variabel-variabel tersebut
dinamakan nonterminal atau kategori syntactic.
Setiap variabel menyatakan sebuah bahasa.
Dalam Contoh 1, hanya terdapat 1 variabel, yaitu P,yang menyatakan
kelas dari polindrom-polindrom pada alphabet {0,1}.
Definisi CFG(2)
3. Salah satu dari variabel-variabel menyatakan bahasa
yang sedang didefinisikan.
Variabel tersebut dinamakan start symbol.
Variabel-variabel lain menyatakan kelas-kelas
pembantu dari string-string yang digunakan untuk
mendefinisikan bahasa dari start symbol.
Dalam Contoh1, hanya terdapat 1 variabel, yaitu P,
yang dinamakan start symbol.
Definisi CFG(3)
4. Himpunan berhingga dari produksi-produksi atau aturan-aturan yang
menyatakan definisi rekursif dari sebuah bahasa. Setiap produksi terdiri
dari:
• Sebuah variabel yang didefinisikan (secara parsial) oleh produksi. Variabel ini
sering kali dinamakan head dari produksi.
• Simbol produksi 
• Sebuah string dari nol atau lebih terminal dan variabel. String ini dinamakan body
dari produksi, yang menyatakan salah satu cara untuk membentuk string dalam
bahasa dari variabel dari head.
• Terminal-terminal tidak diubah dan setiap variabel dari body disubstitusi
dengan string yang diketahui dalam bahasa dari variabel tersebut.
• Dalam Contoh 1 terdapat 5 produksi.
Komponen CFG
• Keempat komponen membentuk sebuah CFG atau
hanya grammar, notasinya adalah G = (V, T, P,S),
dengan
• V : Himpunan variabel-variabel
• T : Terminal
• P : Himpunan produksi
• S : Start symbol.
Contoh2
• Grammar Gpal untuk polindrom-polindrom dinyatakan
oleh
Gpal = ({P}, {0,1}, A, P)
dengan A adalah himpunan dari 5 produksi seperti
dalam Contoh 1
Contoh3
• Sebuah CFG menyatakan ekspresi dalam bahasa
pemrograman, dengan ketentuan berikut:
1. Ekspresi dibatasi hanya mengandung operator + dan *
(penjumlahan dan perkalian).
2. Argumen juga dapat berupa identifier yang dibatasi hanya
untuk huruf a dan b, dan digit 0 dan 1.
3. Setiap identifier haruslah diawali dengan a atau b dan dapat
diikuti oleh string dalam {a, b, 0, 1}*.
Contoh3 (Lanjutan)
Terdapat dua variabel dalam grammar ini yaitu:
1. E menyatakan ekspresi yang juga merupakan start symbol
dan merepresentasikan bahasa dari ekspresi yang
didefinisikan.
2. I menyatakan identifier.
Contoh3 (Lanjutan)
1. E  I
2. E  E + E
3.E  E*E
4. E (E)
5. I  a
6. I  b
7. I  Ia
8. I  Ib
9. I  I0
10.I  I1
Secara formal CFG yang dimaksud adalah
G = ({E,I}, T, P, E)
dimana T adalah himpunan simbol- simbol
{+, *, (, ), a, b, 0, 1} dan P adalah himpunan
produksi- produksi.
Notasi untuk produksi
• Produksi-produksi A1, A2, …, An dapat
digantikan dengan notasi
A  1| 2,|…| n
• Dalam Contoh 1, grammar untuk polindrom dapat
ditulis sebagai
P  | 0 | 1 | 0P0 | 1P1.
Latihan 1
• Tuliskan definisi rekursif dari L1 = {anbn | n≥1}.
Tentukan grammar G1 untuk L1. Tuliskan komponen-
komponen dari grammar tsb
• Diberikan L2 = {a, a+a, a*a, (a)+a, (a*a), a+a*a,… }
yang merupakan contoh ekspresi aritmatika. T
entukan
komponen-komponen grammar G2 untuk L2
PenurunanMenggunakan Sebuah Grammar
• Produksi-produksi dari sebuah CFG dapat digunakan
untuk menyimpulkan bahwa string-string tertentu
dalam bahasa dari sebuah variabel.
• Terdapat 2 pendekatan untuk inferensi tersebut, yaitu
1. Inferensi rekursif, menggunakan aturan dari body ke
head
2. Derivation, menggunakan aturan dari head ke body
Langkah-langkah Inferensi rekursif
1. Ambil string-string yang diketahui ada dalam bahasa
dari setiap variabel dari body.
2. Rangkai string-string tersebut, dalam urutan yang
sesuai, dengan terminal-terminal muncul dalam body.
3. Simpulkan bahwa string yang dihasilkan adalah
dalam bahasa dari variabel pada head.
Langkah-langkah derivation
1. Perluas start symbol menggunakan salah satu produksinya (yaitu
gunakan salah satu produksi yang memiliki head adalah start
symbol).
2. Perluas string yang dihasilkan dengan mengganti salah satu dari
variabel dengan body dari salah satu produksi-produksinya, dan
seterusnya sampai diperoleh sebuah string yang mengandung
terminal-terminal saja.
3. Bahasa dari grammar adalah semua string-string dari terminal-
terminal yang dapat diperoleh dengan cara ini.
Contoh 4: Inferensi rekursif
Tabel berikut menyatakan proses inferensi untuk a*(a + b00)
menggunakan grammar pada Contoh 3:
Baris
String yang
diperoleh
Untuk
Bahasa dari
Produksi
yang
digunakan
String-string
yang
digunakan
(i) a I 5 -
(ii) b I 6 -
(iii) b0 I 9 (ii)
(iv) b00 I 9 (iii)
(v) a E 1 (i)
(vi) b00 E 1 (iv)
(vii) a + b00 E 2 (v), (vi)
(viii) (a + b00) E 4 (vii)
(ix) a*(a + b00) E 3 (v), (viii)
Contoh 4: Inferensi rekursif
Tabel berikut menyatakan proses inferensi untuk aa*(a+b) dan 1a+b
menggunakan grammar pada Contoh 3:
Baris
String yang
diperoleh
Untuk
Bahasa dari
Produksi
yang
digunakan
String-string
yang
digunakan
1. E  I
2. E  E + E
3.E  E*E
4. E (E)
5. I  a
6. I  b
7. I  Ia
8. I  Ib
9. I  I0
10.I  I1
Latihan 2
• Untuk grammar dalam Latihan 1
• Tentukan inferensi rekursif untuk string aabb menggunakan
produksi-produksi pada grammar G1
• Tentukan inferensi rekursif untuk string (a)*a menggunakan
produksi-produksi pada grammar G2
Definisi simbolrelasi 
• Anggap G = (V,T,P,S) adalah sebuah CFG.
• Misalkan A adalah sebuah string dari terminal-
terminal dan variabel-variabel dengan A adalah sebuah
variabel.
Bahwa  dan  adalah string dalam (VT), dan A  V.
• Misalkan A   adalah sebuah produksi dari G. Maka
kita katakan
A 
G
• Jika G dimengerti, kita hanya mengatakan A 
.
Definisi simbolrelasi  (lanjutan)
• Perhatikan bahwa satu langkah derivation mengganti
suatu variabel dalam string dengan body dari salah satu
produksinya.
• Kita dapat memperluas hubungan  untuk menyatakan
0, 1 atau banyak langkah penurunan.
Definisi untuk notasi *
• Notasi * menyatakan 0 atau banyak langkah dengan
definisi sebagai berikut:
Basis:
• Untuk suatu string  dari terminal-terminal dan
variabel-variabel kita katakan 

G
artinya suatu string menurunkan dirinya sendiri.
Definisi untuk notasi * (lanjutan)
Induksi:
Bahwa jika  dapat menjadi  dengan 0 atau lebih langkah,
dan satu langkah lagi mengambil  ke , maka  dapat menjadi
. 
• Dalam pernyataan lain, notasi  
G
berarti bahwa terdapat serangkaian string-string 1,2,..., n,
untuk n≥1 sedemikian sehingga
 = 1
 = n
Untuk i = 1, 2, ... , n1, diperoleh i  i +1.

• Jika   
G
dan  

maka 
G G
Contoh5
• Tunjukkan bahwa a*(a+b00) adalah dalam bahasa dari
variabel E pada Contoh 3.
• Berikut adalah salah satu penurunan tersebut :
E  E*E  I*E  a*E  a*(E)  a*(E+E)  a*(I+E) 
a*(a+E)  a*(a+I)  a*(a+I0)  a*(a+I00)  a*(a+b00)
Notasi *
Notasi * digunakan untuk menyingkat penurunan.
• Dari basis bisa diperoleh E * E
• Penggunaan berulang bagian induksi menghasilkan
E * E*E
E * I*E
dan seterusnya sampai diperoleh
E * a*(a+b00)
Latihan 3
• Untuk grammar dalam Latihan 1
• Dengan menggunakan penurunan, tunjukkan bahwa string
aabb ada dalam L1
• Dengan menggunakan penurunan, tunjukkan bahwa string
(a)*a ada dalam L2
Leftmost dan Rightmost Derivation
• Leftmost derivation pada setiap langkah digantikan
leftmost variable dengan salah satu dari body-body
produksinya.
Notasi: lm untuk satu langkah dan *
lm untuk banyak
langkah.
• Righmost derivation, rightmost variable diganti oleh
salah satu dari body-nya.
Notasi: rm untuk satu langkah dan *
rm untuk banyak
langkah.
Contoh6
• Penurunan dari Contoh 5 merupakan leftmost
derivation
E lm E*E lmI*E lm a*E lm a*(E) lm a*(E+E)lm
a*(I+E) lm a*(a+E) lm a*(a+I) lm a*(a+I0)
lm a*(a+I00) lm a*(a+b00)
Secara singkat dapat dinyatakan
E *
lm a*(a+b00).
Contoh 6 (lanjutan)
• Sedangkan rightmost derivation a*(a+b00):
E rm E*E rm E*(E) rm E*(E+E) rm E*(E+I) rm
E*(E+I0) rm E*(E+I00) rm E*(E+b00)
E*(I+b00) rm E*(a+b00) rm I*(a+b00)
a*(a+b00)
rm
rm
Secara singkat dapat dinyatakan
E *
rm a*(a+b00).
Leftmost atau rightmost derivation
• Baik menggunakan leftmost atau rightmost derivation:
“jika w adalah terminal string dan A adalah variabel
maka
A * w jika dan hanya jika A *
lm w dan
A * w jika dan hanya jika A*
rm w”.
Latihan 4
• Tata bahasa G untuk bahasa L terdiri dari ekspresi-ekspresi
aljabar yang legal, yang muncul dalam bahasa pemrograman.
Operatornya terdiri dari: + , – , * , / . Identifier hanya identifier
tunggal a. Ekspresi boleh menggunakan tanda kurung ( ).
• Tuliskan komponen-komponen dari G termasuk produksi-
produksinya
• Tuliskan leftmost derivation dan rightmost derivation untuk
string (a – a) * a + a menggunakan tata bahasa G
Bahasa dari Sebuah Grammar
• Jika G = (V,T,P,S) adalah sebuah CFG, bahasa dari G
dinotasikan L(G) adalah himpunan dari string-string
terminal yang memiliki penurunan dari start symbol.
Bahwa
L(G) = {w dalam T* | S * w}
• Jika sebuah bahasa L adalah bahasa dari CFG, maka L
dikatakan CFL (Context Free Language).
• Sebagai contoh, himpunan dari polindrom-polindrom
adalah CFL (Bukti dapat dilihat pada buku rujukan).
Bentuk-Bentuk Sentential
• Penurunan dari start symbol menghasilkan string-string yang
memiliki aturan khusus  dinamakan bentuk-bentuk sentential.
• Bahwa, jika G = (V,T,P,S) adalah sebuah CFG, maka string 
dalam (VT)* sedemikian sehingga S *  adalah bentuk
sentential
• Jika S *
lm  maka  adalah bentuk left sentential
• Jika S *
rm  maka  adalah bentuk right sentential
• Bahasa L(G) adalah bentuk-bentuk sentential yang ada dalam
T*; yaitu hanya terdiri dari terminal
Contoh7
• Dari Contoh 3: E*(I+E) adalah sebuah bentuk sentential
karena terdapat sebuah penurunan
E  E*E  E*(E)  E*(E+E)  E*(I+E)
• Contoh bentuk left sentential adalah a*E, karena
terdapat penurunan berikut
E lm E*E lm I*E lm a*E
• Contoh bentuk right sentential adalah E*(E+E), karena
terdapat penuruan berikut
E rm E*E rm E*(E) rm E*(E+E)
Latihan 5
• Buatlah tata bahasa yang membentuk bahasa L1 = {x 
{0,1}* | banyaknya para 0 sama dengan banyaknya para 1}.
• Dengan menggunakan penurunan menggunakan tata
bahasa, tentukan bahwa string 010110 diterima oleh bahasa
L1
48
Referensi
• John E. Hopcroft, Rajeev Motwani, Jeffrey D. Ullman. 2001.
Introduction to Automata Theory, Languange, and Computation.
Edisi ke-2. Addison-Wesley.
Thank you
Computer Science Departement
FMIPA-IPB Kampus Darmaga
Jl. Meranti Wing 20 Level V,Bogor, Indonesia Phone/Fax: +62 251 8625584
http://cs.ipb.ac.id/
49

More Related Content

Similar to Stuktur Diskrit qwertyuiopasdfghjklzxcvb

Matematika Diskrit - 10 pohon - 02
Matematika Diskrit - 10 pohon - 02Matematika Diskrit - 10 pohon - 02
Matematika Diskrit - 10 pohon - 02KuliahKita
 
Pencarian Rute Terpendek Dengan Menggunakan Algoritma Djikstrak
Pencarian Rute Terpendek Dengan Menggunakan Algoritma DjikstrakPencarian Rute Terpendek Dengan Menggunakan Algoritma Djikstrak
Pencarian Rute Terpendek Dengan Menggunakan Algoritma DjikstrakArinten Hidayat
 
Bahan ajar
Bahan ajarBahan ajar
Bahan ajarevaFN
 
Bahan ajar
Bahan ajarBahan ajar
Bahan ajarevaFN
 
Bahan ajar
Bahan ajarBahan ajar
Bahan ajarevaFN
 
Bahan ajar
Bahan ajarBahan ajar
Bahan ajarevaFN
 
Bahan ajar
Bahan ajarBahan ajar
Bahan ajarevaFN
 
Bahan ajar
Bahan ajarBahan ajar
Bahan ajarevaFN
 
Bab 9. Teknik Pengintegralan ( Kalkulus 1 )
Bab 9. Teknik Pengintegralan ( Kalkulus 1 )Bab 9. Teknik Pengintegralan ( Kalkulus 1 )
Bab 9. Teknik Pengintegralan ( Kalkulus 1 )Kelinci Coklat
 
STRATEGI OPTIMASI DALAM MENENTUKAN LINTASAN TERPENDEK UNDIVIDED RAGNAROK ASSA...
STRATEGI OPTIMASI DALAM MENENTUKAN LINTASAN TERPENDEK UNDIVIDED RAGNAROK ASSA...STRATEGI OPTIMASI DALAM MENENTUKAN LINTASAN TERPENDEK UNDIVIDED RAGNAROK ASSA...
STRATEGI OPTIMASI DALAM MENENTUKAN LINTASAN TERPENDEK UNDIVIDED RAGNAROK ASSA...faisalpiliang1
 

Similar to Stuktur Diskrit qwertyuiopasdfghjklzxcvb (20)

207 p13
207 p13207 p13
207 p13
 
Algoritma Dijstra
Algoritma DijstraAlgoritma Dijstra
Algoritma Dijstra
 
or
oror
or
 
Algoritma Djikstra-1.pptx
Algoritma Djikstra-1.pptxAlgoritma Djikstra-1.pptx
Algoritma Djikstra-1.pptx
 
Matlab 8
Matlab 8Matlab 8
Matlab 8
 
Matematika Diskrit - 10 pohon - 02
Matematika Diskrit - 10 pohon - 02Matematika Diskrit - 10 pohon - 02
Matematika Diskrit - 10 pohon - 02
 
Ta
TaTa
Ta
 
Pencarian Rute Terpendek Dengan Menggunakan Algoritma Djikstrak
Pencarian Rute Terpendek Dengan Menggunakan Algoritma DjikstrakPencarian Rute Terpendek Dengan Menggunakan Algoritma Djikstrak
Pencarian Rute Terpendek Dengan Menggunakan Algoritma Djikstrak
 
Teori graph-1
Teori graph-1Teori graph-1
Teori graph-1
 
Bahan ajar
Bahan ajarBahan ajar
Bahan ajar
 
SAMBUNGAN.ppt
SAMBUNGAN.pptSAMBUNGAN.ppt
SAMBUNGAN.ppt
 
Bahan ajar
Bahan ajarBahan ajar
Bahan ajar
 
Bahan ajar
Bahan ajarBahan ajar
Bahan ajar
 
Bahan ajar
Bahan ajarBahan ajar
Bahan ajar
 
Bahan ajar
Bahan ajarBahan ajar
Bahan ajar
 
Bahan ajar
Bahan ajarBahan ajar
Bahan ajar
 
Bab 9. Teknik Pengintegralan ( Kalkulus 1 )
Bab 9. Teknik Pengintegralan ( Kalkulus 1 )Bab 9. Teknik Pengintegralan ( Kalkulus 1 )
Bab 9. Teknik Pengintegralan ( Kalkulus 1 )
 
Exhaustive Search
Exhaustive SearchExhaustive Search
Exhaustive Search
 
STRATEGI OPTIMASI DALAM MENENTUKAN LINTASAN TERPENDEK UNDIVIDED RAGNAROK ASSA...
STRATEGI OPTIMASI DALAM MENENTUKAN LINTASAN TERPENDEK UNDIVIDED RAGNAROK ASSA...STRATEGI OPTIMASI DALAM MENENTUKAN LINTASAN TERPENDEK UNDIVIDED RAGNAROK ASSA...
STRATEGI OPTIMASI DALAM MENENTUKAN LINTASAN TERPENDEK UNDIVIDED RAGNAROK ASSA...
 
OR 11.pptx
OR 11.pptxOR 11.pptx
OR 11.pptx
 

Recently uploaded

AKSI NYATA NARKOBA ATAU OBAT TERLARANG..
AKSI NYATA NARKOBA ATAU OBAT TERLARANG..AKSI NYATA NARKOBA ATAU OBAT TERLARANG..
AKSI NYATA NARKOBA ATAU OBAT TERLARANG..ikayogakinasih12
 
421783639-ppt-overdosis-dan-keracunan-pptx.pptx
421783639-ppt-overdosis-dan-keracunan-pptx.pptx421783639-ppt-overdosis-dan-keracunan-pptx.pptx
421783639-ppt-overdosis-dan-keracunan-pptx.pptxGiftaJewela
 
Contoh Laporan Observasi Pembelajaran Rekan Sejawat.pdf
Contoh Laporan Observasi Pembelajaran Rekan Sejawat.pdfContoh Laporan Observasi Pembelajaran Rekan Sejawat.pdf
Contoh Laporan Observasi Pembelajaran Rekan Sejawat.pdfCandraMegawati
 
DEMONSTRASI KONTEKSTUAL MODUL 1.3 PENDIDIKAN GURU PENGGERAK
DEMONSTRASI KONTEKSTUAL MODUL 1.3 PENDIDIKAN GURU PENGGERAKDEMONSTRASI KONTEKSTUAL MODUL 1.3 PENDIDIKAN GURU PENGGERAK
DEMONSTRASI KONTEKSTUAL MODUL 1.3 PENDIDIKAN GURU PENGGERAKirwan461475
 
442539315-ppt-modul-6-pend-seni-pptx.pptx
442539315-ppt-modul-6-pend-seni-pptx.pptx442539315-ppt-modul-6-pend-seni-pptx.pptx
442539315-ppt-modul-6-pend-seni-pptx.pptxHendryJulistiyanto
 
REFLEKSI MANDIRI_Prakarsa Perubahan BAGJA Modul 1.3.pdf
REFLEKSI MANDIRI_Prakarsa Perubahan BAGJA Modul 1.3.pdfREFLEKSI MANDIRI_Prakarsa Perubahan BAGJA Modul 1.3.pdf
REFLEKSI MANDIRI_Prakarsa Perubahan BAGJA Modul 1.3.pdfirwanabidin08
 
tugas 1 tutorial online anak berkebutuhan khusus di SD
tugas 1 tutorial online anak berkebutuhan khusus di SDtugas 1 tutorial online anak berkebutuhan khusus di SD
tugas 1 tutorial online anak berkebutuhan khusus di SDmawan5982
 
Materi Pertemuan 6 Materi Pertemuan 6.pptx
Materi Pertemuan 6 Materi Pertemuan 6.pptxMateri Pertemuan 6 Materi Pertemuan 6.pptx
Materi Pertemuan 6 Materi Pertemuan 6.pptxRezaWahyuni6
 
2 KISI-KISI Ujian Sekolah Dasar mata pelajaranPPKn 2024.pdf
2 KISI-KISI Ujian Sekolah Dasar  mata pelajaranPPKn 2024.pdf2 KISI-KISI Ujian Sekolah Dasar  mata pelajaranPPKn 2024.pdf
2 KISI-KISI Ujian Sekolah Dasar mata pelajaranPPKn 2024.pdfsdn3jatiblora
 
Modul Ajar Pendidikan Pancasila Kelas 5 Fase C
Modul Ajar Pendidikan Pancasila Kelas 5 Fase CModul Ajar Pendidikan Pancasila Kelas 5 Fase C
Modul Ajar Pendidikan Pancasila Kelas 5 Fase CAbdiera
 
Materi Pertemuan Materi Pertemuan 7.pptx
Materi Pertemuan Materi Pertemuan 7.pptxMateri Pertemuan Materi Pertemuan 7.pptx
Materi Pertemuan Materi Pertemuan 7.pptxRezaWahyuni6
 
JAWAPAN BAB 1 DAN BAB 2 SAINS TINGKATAN 5
JAWAPAN BAB 1 DAN BAB 2 SAINS TINGKATAN 5JAWAPAN BAB 1 DAN BAB 2 SAINS TINGKATAN 5
JAWAPAN BAB 1 DAN BAB 2 SAINS TINGKATAN 5ssuserd52993
 
PPT Integrasi Islam & Ilmu Pengetahuan.pptx
PPT Integrasi Islam & Ilmu Pengetahuan.pptxPPT Integrasi Islam & Ilmu Pengetahuan.pptx
PPT Integrasi Islam & Ilmu Pengetahuan.pptxnerow98
 
Dampak Pendudukan Jepang.pptx indonesia1
Dampak Pendudukan Jepang.pptx indonesia1Dampak Pendudukan Jepang.pptx indonesia1
Dampak Pendudukan Jepang.pptx indonesia1udin100
 
Tugas 1 ABK di SD prodi pendidikan guru sekolah dasar.docx
Tugas 1 ABK di SD prodi pendidikan guru sekolah dasar.docxTugas 1 ABK di SD prodi pendidikan guru sekolah dasar.docx
Tugas 1 ABK di SD prodi pendidikan guru sekolah dasar.docxmawan5982
 
tugas 1 anak berkebutihan khusus pelajaran semester 6 jawaban tuton 1.docx
tugas 1 anak berkebutihan khusus pelajaran semester 6 jawaban tuton 1.docxtugas 1 anak berkebutihan khusus pelajaran semester 6 jawaban tuton 1.docx
tugas 1 anak berkebutihan khusus pelajaran semester 6 jawaban tuton 1.docxmawan5982
 
Dinamika Hidrosfer geografi kelas X genap
Dinamika Hidrosfer geografi kelas X genapDinamika Hidrosfer geografi kelas X genap
Dinamika Hidrosfer geografi kelas X genapsefrida3
 
Modul 1.2.a.8 Koneksi antar materi 1.2.pdf
Modul 1.2.a.8 Koneksi antar materi 1.2.pdfModul 1.2.a.8 Koneksi antar materi 1.2.pdf
Modul 1.2.a.8 Koneksi antar materi 1.2.pdfSitiJulaeha820399
 
ppt-modul-6-pend-seni-di sd kelompok 2 ppt
ppt-modul-6-pend-seni-di sd kelompok 2 pptppt-modul-6-pend-seni-di sd kelompok 2 ppt
ppt-modul-6-pend-seni-di sd kelompok 2 pptArkhaRega1
 
TUGAS GURU PENGGERAK Aksi Nyata Modul 1.1.pdf
TUGAS GURU PENGGERAK Aksi Nyata Modul 1.1.pdfTUGAS GURU PENGGERAK Aksi Nyata Modul 1.1.pdf
TUGAS GURU PENGGERAK Aksi Nyata Modul 1.1.pdfElaAditya
 

Recently uploaded (20)

AKSI NYATA NARKOBA ATAU OBAT TERLARANG..
AKSI NYATA NARKOBA ATAU OBAT TERLARANG..AKSI NYATA NARKOBA ATAU OBAT TERLARANG..
AKSI NYATA NARKOBA ATAU OBAT TERLARANG..
 
421783639-ppt-overdosis-dan-keracunan-pptx.pptx
421783639-ppt-overdosis-dan-keracunan-pptx.pptx421783639-ppt-overdosis-dan-keracunan-pptx.pptx
421783639-ppt-overdosis-dan-keracunan-pptx.pptx
 
Contoh Laporan Observasi Pembelajaran Rekan Sejawat.pdf
Contoh Laporan Observasi Pembelajaran Rekan Sejawat.pdfContoh Laporan Observasi Pembelajaran Rekan Sejawat.pdf
Contoh Laporan Observasi Pembelajaran Rekan Sejawat.pdf
 
DEMONSTRASI KONTEKSTUAL MODUL 1.3 PENDIDIKAN GURU PENGGERAK
DEMONSTRASI KONTEKSTUAL MODUL 1.3 PENDIDIKAN GURU PENGGERAKDEMONSTRASI KONTEKSTUAL MODUL 1.3 PENDIDIKAN GURU PENGGERAK
DEMONSTRASI KONTEKSTUAL MODUL 1.3 PENDIDIKAN GURU PENGGERAK
 
442539315-ppt-modul-6-pend-seni-pptx.pptx
442539315-ppt-modul-6-pend-seni-pptx.pptx442539315-ppt-modul-6-pend-seni-pptx.pptx
442539315-ppt-modul-6-pend-seni-pptx.pptx
 
REFLEKSI MANDIRI_Prakarsa Perubahan BAGJA Modul 1.3.pdf
REFLEKSI MANDIRI_Prakarsa Perubahan BAGJA Modul 1.3.pdfREFLEKSI MANDIRI_Prakarsa Perubahan BAGJA Modul 1.3.pdf
REFLEKSI MANDIRI_Prakarsa Perubahan BAGJA Modul 1.3.pdf
 
tugas 1 tutorial online anak berkebutuhan khusus di SD
tugas 1 tutorial online anak berkebutuhan khusus di SDtugas 1 tutorial online anak berkebutuhan khusus di SD
tugas 1 tutorial online anak berkebutuhan khusus di SD
 
Materi Pertemuan 6 Materi Pertemuan 6.pptx
Materi Pertemuan 6 Materi Pertemuan 6.pptxMateri Pertemuan 6 Materi Pertemuan 6.pptx
Materi Pertemuan 6 Materi Pertemuan 6.pptx
 
2 KISI-KISI Ujian Sekolah Dasar mata pelajaranPPKn 2024.pdf
2 KISI-KISI Ujian Sekolah Dasar  mata pelajaranPPKn 2024.pdf2 KISI-KISI Ujian Sekolah Dasar  mata pelajaranPPKn 2024.pdf
2 KISI-KISI Ujian Sekolah Dasar mata pelajaranPPKn 2024.pdf
 
Modul Ajar Pendidikan Pancasila Kelas 5 Fase C
Modul Ajar Pendidikan Pancasila Kelas 5 Fase CModul Ajar Pendidikan Pancasila Kelas 5 Fase C
Modul Ajar Pendidikan Pancasila Kelas 5 Fase C
 
Materi Pertemuan Materi Pertemuan 7.pptx
Materi Pertemuan Materi Pertemuan 7.pptxMateri Pertemuan Materi Pertemuan 7.pptx
Materi Pertemuan Materi Pertemuan 7.pptx
 
JAWAPAN BAB 1 DAN BAB 2 SAINS TINGKATAN 5
JAWAPAN BAB 1 DAN BAB 2 SAINS TINGKATAN 5JAWAPAN BAB 1 DAN BAB 2 SAINS TINGKATAN 5
JAWAPAN BAB 1 DAN BAB 2 SAINS TINGKATAN 5
 
PPT Integrasi Islam & Ilmu Pengetahuan.pptx
PPT Integrasi Islam & Ilmu Pengetahuan.pptxPPT Integrasi Islam & Ilmu Pengetahuan.pptx
PPT Integrasi Islam & Ilmu Pengetahuan.pptx
 
Dampak Pendudukan Jepang.pptx indonesia1
Dampak Pendudukan Jepang.pptx indonesia1Dampak Pendudukan Jepang.pptx indonesia1
Dampak Pendudukan Jepang.pptx indonesia1
 
Tugas 1 ABK di SD prodi pendidikan guru sekolah dasar.docx
Tugas 1 ABK di SD prodi pendidikan guru sekolah dasar.docxTugas 1 ABK di SD prodi pendidikan guru sekolah dasar.docx
Tugas 1 ABK di SD prodi pendidikan guru sekolah dasar.docx
 
tugas 1 anak berkebutihan khusus pelajaran semester 6 jawaban tuton 1.docx
tugas 1 anak berkebutihan khusus pelajaran semester 6 jawaban tuton 1.docxtugas 1 anak berkebutihan khusus pelajaran semester 6 jawaban tuton 1.docx
tugas 1 anak berkebutihan khusus pelajaran semester 6 jawaban tuton 1.docx
 
Dinamika Hidrosfer geografi kelas X genap
Dinamika Hidrosfer geografi kelas X genapDinamika Hidrosfer geografi kelas X genap
Dinamika Hidrosfer geografi kelas X genap
 
Modul 1.2.a.8 Koneksi antar materi 1.2.pdf
Modul 1.2.a.8 Koneksi antar materi 1.2.pdfModul 1.2.a.8 Koneksi antar materi 1.2.pdf
Modul 1.2.a.8 Koneksi antar materi 1.2.pdf
 
ppt-modul-6-pend-seni-di sd kelompok 2 ppt
ppt-modul-6-pend-seni-di sd kelompok 2 pptppt-modul-6-pend-seni-di sd kelompok 2 ppt
ppt-modul-6-pend-seni-di sd kelompok 2 ppt
 
TUGAS GURU PENGGERAK Aksi Nyata Modul 1.1.pdf
TUGAS GURU PENGGERAK Aksi Nyata Modul 1.1.pdfTUGAS GURU PENGGERAK Aksi Nyata Modul 1.1.pdf
TUGAS GURU PENGGERAK Aksi Nyata Modul 1.1.pdf
 

Stuktur Diskrit qwertyuiopasdfghjklzxcvb

  • 1. Department of Computer Science http://cs.ipb.ac.id/ Optimasi pada Graf 1 Mata Kuliah Struktur Diskret Pertemuan 9
  • 2. Optimasi pada Graf • Shortest Path Algorithm • Algoritme Djikstra • Minimum Spanning Tree • Algoritme Prim dan Kruskal
  • 3. Review Path dan Konektivitas • Misalkan G adalah suatu graf, 𝑣0 dan 𝑣𝑛 adalah 2 titik di dalam G • Terminologi: • Walk dari titik 𝑣0 ke titik 𝑣𝑛 adalah barisan verteks yang berhubungan dan sisi secara berselang-seling diawali dari titik 𝑣0 dan diakhiri pada titik 𝑣𝑛. • Path dari titik 𝑣0 ke titik 𝑣𝑛 adalah walk dari titik 𝑣0 ke titik 𝑣𝑛 yang semua sisinya berbeda • Panjang walk atau path = jumlah sisi yang dilalui
  • 4. Review Path • Contoh • 1,𝑒2,2, 𝑒1, 1, 𝑒3, 3, 𝑒5, 3, 𝑒3, 1, 𝑒1, 2, 𝑒4,3 • 1,𝑒2,2, 𝑒1, 1, 𝑒3, 3, 𝑒5, 3, 𝑒4,2 • Berapa panjang lintasannya? • Apa yang dimaksud dengan sirkuit?  Path  Walk
  • 5. Contoh • Gambar di bawah menyatakan peta kota A..G dan jalan-jalan yang menghubungkan kota-kota tsb. Seorang salesman akan mengunjungi tiap kota masing-masing 1 kali dari kota A kembali lagi ke kota A. • Dalam terminologi path, problem di atas menyatakan? • Carilah rute perjalanan yang harus dilalui salesman tsb ! A B C D E F G j1 j2 j 3 j4 j5 j6 j7 j8 j9 j10 j11
  • 6. Review Path • Shortest path adalah pencarian rute atau path terpendek antara verteks yang ada pada graf dengan nilai biaya (cost) pada sisi adalah minimum. • Lintasan terpendek (seperti pada contoh salesman problem) merupakan salah satu masalah yang dapat diselesaikan dengan menggunakan graf. • Jika diberikan sebuah graph berbobot, masalah lintasan terpendek adalah bagaimana kita mencari sebuah jalur pada graph yang meminimumkan jumlah bobot sisi pembentuk jalur tersebut.
  • 7. Algoritme Djikstra • Algoritme Dijkstra, dinamai menurut penemunya, Edsger Dijkstra, merupakan salah satu varian dari algoritme greedy, yaitu salah satu bentuk algoritme populer dalam pemecahan persoalan yang terkait dengan masalah optimasi. • Algoritme ini bertujuan untuk menemukan jalur terpendek berdasarkan bobot terkecil dari satu titik ke titik lainnya.
  • 8. Algoritme Djikstra V = {v1, v2, …, vn}  titik awal : v1, titik akhir : vn L(j) = jumlah bobot lintasan terpendek dari v1 ke vj w(i,j) = bobot garis dari titik v1 ke titik vj T = himpunan titik yang sudah terpilih dalam alur lintasan terpendek Algoritme 1. 𝑇 = { }; 𝐿(𝑣1) = 0 ; 𝐿(𝑣2) = 𝐿(𝑣3) = … = 𝐿(𝑣𝑛) = ∞ 2. Selama vn ∉ T lakukan : a. Pilih titik vk ∈ V – T dengan L(vk) terkecil T = T  { vk } b. Untuk setiap vj ∈ V – T hitung : L(vj) = min[ L(vj) , L(vk) + w(vk,vj) ] 3. Telusuri alur path minimum mulai dari titik akhir (vn) sampai titik awal (v1)
  • 9. Djikstra's Shortest Path Algorithm • Find shortest path from s to t. 9 s 3 t 2 6 7 4 5 24 18 2 9 14 15 5 30 20 44 16 11 6 19 6
  • 10. Djikstra's Shortest Path Algorithm 10 S = { } PQ = { s, 2, 3, 4, 5, 6, 7, t } s 3 t 2 6 7 4 5 24 18 2 9 14 15 5 30 20 44 16 11 6 19 6        0 distance label
  • 11. Dijkstra's Shortest Path Algorithm 11 S = { } PQ = { s, 2, 3, 4, 5, 6, 7, t }   s 3 t 2 6 7 4 5 24 18 2 9 14 15 5 30 20 44 16 11 6 19 6      0 distance label delmin
  • 12. Dijkstra's Shortest Path Algorithm 12 S = { s } PQ = { 2, 3, 4, 5, 6, 7, t } s 3 t 2 6 7 4 5 24 18 2 9 14 15 5 30 20 44 16 11 6 19 6 15 9    14  0 distance label decrease key  X   X X
  • 13. Dijkstra's Shortest Path Algorithm 13 S = { s } PQ = { 2, 3, 4, 5, 6, 7, t } s 3 t 2 6 7 4 5 24 18 2 9 14 15 5 30 20 44 16 11 6 19 6 15 9    14  0 distance label  X   X X delmin
  • 14. Dijkstra's Shortest Path Algorithm 14 S = { s, 2 } PQ = { 3, 4, 5, 6, 7, t } s 3 t 2 6 7 4 5 24 18 2 9 14 15 5 30 20 44 16 11 6 19 6 15 9    14  0  X   X X
  • 15. Dijkstra's Shortest Path Algorithm 15 s 3 t 2 6 7 4 5 24 18 2 9 14 15 5 30 20 44 16 11 6 19 6 15 9    14  0 S = { s, 2 } PQ = { 3, 4, 5, 6, 7, t }  X   X X decrease key X 33
  • 16. Dijkstra's Shortest Path Algorithm 16 s 3 t 2 6 7 4 5 24 18 2 9 14 15 5 30 20 44 16 11 6 19 6 15 9    14  0 S = { s, 2 } PQ = { 3, 4, 5, 6, 7, t }  X   X X X 33 delmin
  • 17. Dijkstra's Shortest Path Algorithm 17 s 3 t 2 6 7 4 5 24 18 2 9 14 15 5 30 20 44 16 11 6 19 6 15 9    14  0 S = { s, 2, 6 } PQ = { 3, 4, 5, 7, t }  X   X X X 33 44 X X 32
  • 18. Dijkstra's Shortest Path Algorithm 18 s 3 t 2 6 7 4 5 24 18 2 9 14 15 5 30 20 44 16 11 6 19 6 15 9   14  0 S = { s, 2, 6 } PQ = { 3, 4, 5, 7, t }  X   X X 44 X delmin  X 33 X 32
  • 19. Dijkstra's Shortest Path Algorithm 19 s 3 t 2 6 7 4 5 18 2 9 14 15 5 30 20 44 16 11 6 19 6 15 9   14  0 S = { s, 2, 6, 7 } PQ = { 3, 4, 5, t }  X   X X 44 X 35 X 59 X 24  X 33 X 32
  • 20. Dijkstra's Shortest Path Algorithm 20 s 3 t 2 6 7 4 5 24 18 2 9 14 15 5 30 20 44 16 11 6 19 6 15 9   14  0 S = { s, 2, 6, 7 } PQ = { 3, 4, 5, t }  X   X X 44 X 35 X 59 X delmin  X 33 X 32
  • 21. Dijkstra's Shortest Path Algorithm 21 s 3 t 2 6 7 4 5 24 18 2 9 14 15 5 30 20 44 16 11 6 19 6 15 9   14  0 S = { s, 2, 3, 6, 7 } PQ = { 4, 5, t }  X   X X 44 X 35 X 59 X X 51 X 34  X 33 X 32
  • 22. Dijkstra's Shortest Path Algorithm 22 s 3 t 2 6 7 4 5 18 2 9 14 15 5 30 20 44 16 11 6 19 6 15 9   14  0 S = { s, 2, 3, 6, 7 } PQ = { 4, 5, t }  X   X X 44 X 35 X 59 X X 51 X 34 delmin  X 33 X 32 24
  • 23. Dijkstra's Shortest Path Algorithm 23 s 3 t 2 6 7 4 5 18 2 9 14 15 5 30 20 44 16 11 6 19 6 15 9   14  0 S = { s, 2, 3, 5, 6, 7 } PQ = { 4, t }  X   X X 44 X 35 X 59 X X 51 X 34 24 X 50 X 45  X 33 X 32
  • 24. Dijkstra's Shortest Path Algorithm 24 s 3 t 2 6 7 4 5 18 2 9 14 15 5 30 20 44 16 11 6 19 6 15 9   14  0 S = { s, 2, 3, 5, 6, 7 } PQ = { 4, t }  X   X X 44 X 35 X 59 X X 51 X 34 24 X 50 X 45 delmin  X 33 X 32
  • 25. Dijkstra's Shortest Path Algorithm 25 s 3 t 2 6 7 4 5 18 2 9 14 15 5 30 20 44 16 11 6 19 6 15 9   14  0 S = { s, 2, 3, 4, 5, 6, 7 } PQ = { t }  X   X X 44 X 35 X 59 X X 51 X 34 24 X 50 X 45  X 33 X 32
  • 26. Dijkstra's Shortest Path Algorithm 26 s 3 t 2 6 7 4 5 18 2 9 14 15 5 30 20 44 16 11 6 19 6 15 9   14  0 S = { s, 2, 3, 4, 5, 6, 7 } PQ = { t }  X   X X 44 X 35 X 59 X X 51 X 34 X 50 X 45 delmin  X 33 X 32 24
  • 27. Dijkstra's Shortest Path Algorithm 27 s 3 t 2 6 7 4 5 24 18 2 9 14 15 5 30 20 44 16 11 6 19 6 15 9   14  0 S = { s, 2, 3, 4, 5, 6, 7, t } PQ = { }  X   X X 44 X 35 X 59 X X 51 X 34 X 50 X 45  X 33 X 32
  • 28. Dijkstra's Shortest Path Algorithm 28 s 3 t 2 6 7 4 5 24 18 2 9 14 15 5 30 20 44 16 11 6 19 6 15 9   14  0 S = { s, 2, 3, 4, 5, 6, 7, t } PQ = { }  X   X X 44 X 35 X 59 X X 51 X 34 X 50 X 45  X 33 X 32
  • 29. Latihan • Tentukan jalur terpendek untuk graf berarah terbobot berikut ini: 2 1 4 2 5 1 4 4 1 2 2 1
  • 30. Minimum Spaning Tree • Spaning Tree: Pohon Rentang dari graf terhubung G adalah subgraf G yang merupakan pohon dan memuat semua titik/verteks dalam G • Jika G adalah graf dengan n buah simpul (vertex), maka spanning tree adalah himpunan dari n-1 sisi (edge) yang tidak mengandung cycle.
  • 31. Contoh • Tentukan bentuk spanning tree dari Graf G berikut ini:
  • 32. Minimum Spaning Tree • Spanning tree dengan jumlah bobot minimum di antara semua spanning trees • Contoh aplikasi minimum spanning tree • Membangun rel kereta api yang bisa menghubungkan beberapa kota • Mendesain local access network untuk beberapa komputer • Membuat sambungan kabel elektrik pada sebuah control panel • Mendesain jaringan pipa untuk menghubungkan sejumlah lokasi
  • 33. Minimum Spaning Tree • Pencarian biaya yang minimum dari suatu graph sehingga membentuk pohon • Syarat Graph yang dapat dicari minimum spanning treenya : a. Graph harus terhubung b. Ruasnya punya bobot c. Graph tidak berarah • Algoritme yang umum dipakai untuk Minimum spaning Tree: Algoritme Kruskal dan Algoritme Prims
  • 34. Prim’s Algorithm • Menyerupai Algoritme Dijkstra, kecuali bobot yang disimpan adalah bobot dari sisi/edge bukan panjang dari lintasan (path)
  • 35. Prim’s Algorithm * • Step 1: Select any node to be the first node of T. • Step 2: Consider the arcs which connect nodes in T to nodes outside T. Pick the one with minimum weight. Add this arc and the extra node to T. (If there are two or more arcs of minimum weight, choose any one of them.) • Step 3: Repeat Step 2 until T contains every node of the graph. Aim: To find a minimum spanning tree T * source: www.mrbartonmaths.com/resources/a%20level/d1/Prim's%20and%20Kruskal.ppt
  • 36. Walk-Through* Initialize array K dv pv A F   B F   C F   D F   E F   F F   G F   H F   4 25 A H B F E D C G 7 2 10 18 3 4 3 7 8 9 3 10 2 Source: https://people.cs.clemson.edu/~pargas/courses/cs212/.../notes/ppt/19PrimKruskal.ppt
  • 37. 4 25 A H B F E D C G 7 2 10 18 3 4 3 7 8 9 3 10 Start with any node, say D K dv pv A B C D T 0  E F G H 2
  • 38. 4 25 A H B F E D C G 7 2 10 18 3 4 3 7 8 9 3 10 Update distances of adjacent, unselected nodes K dv pv A B C 3 D D T 0  E 25 D F 18 D G 2 D H 2
  • 39. 4 25 A H B F E D C G 7 2 10 18 3 4 3 7 8 9 3 10 Select node with minimum distance K dv pv A B C 3 D D T 0  E 25 D F 18 D G T 2 D H 2
  • 40. 4 25 A H B F E D C G 7 2 10 18 3 4 3 7 8 9 3 10 Update distances of adjacent, unselected nodes K dv pv A B C 3 D D T 0  E 7 G F 18 D G T 2 D H 3 G 2
  • 41. 4 25 A H B F E D C G 7 2 10 18 3 4 3 7 8 9 3 10 Select node with minimum distance K dv pv A B C T 3 D D T 0  E 7 G F 18 D G T 2 D H 3 G 2
  • 42. 4 25 A H B F E D C G 7 2 10 18 3 4 3 7 8 9 3 10 Update distances of adjacent, unselected nodes K dv pv A B 4 C C T 3 D D T 0  E 7 G F 3 C G T 2 D H 3 G 2
  • 43. 4 25 A H B F E D C G 7 2 10 18 3 4 3 7 8 9 3 10 Select node with minimum distance K dv pv A B 4 C C T 3 D D T 0  E 7 G F T 3 C G T 2 D H 3 G 2
  • 44. 4 25 A H B F E D C G 7 2 10 18 3 4 3 7 8 9 3 10 Update distances of adjacent, unselected nodes K dv pv A 10 F B 4 C C T 3 D D T 0  E 2 F F T 3 C G T 2 D H 3 G 2
  • 45. 4 25 A H B F E D C G 7 2 10 18 3 4 3 7 8 9 3 10 Select node with minimum distance K dv pv A 10 F B 4 C C T 3 D D T 0  E T 2 F F T 3 C G T 2 D H 3 G 2
  • 46. 4 25 A H B F E D C G 7 2 10 18 3 4 3 7 8 9 3 10 Update distances of adjacent, unselected nodes K dv pv A 10 F B 4 C C T 3 D D T 0  E T 2 F F T 3 C G T 2 D H 3 G 2 Table entries unchanged
  • 47. 4 25 A H B F E D C G 7 2 10 18 3 4 3 7 8 9 3 10 Select node with minimum distance K dv pv A 10 F B 4 C C T 3 D D T 0  E T 2 F F T 3 C G T 2 D H T 3 G 2
  • 48. 4 25 A H B F E D C G 7 2 10 18 3 4 3 7 8 9 3 10 Update distances of adjacent, unselected nodes K dv pv A 4 H B 4 C C T 3 D D T 0  E T 2 F F T 3 C G T 2 D H T 3 G 2
  • 49. 4 25 A H B F E D C G 7 2 10 18 3 4 3 7 8 9 3 10 Select node with minimum distance K dv pv A T 4 H B 4 C C T 3 D D T 0  E T 2 F F T 3 C G T 2 D H T 3 G 2
  • 50. 4 25 A H B F E D C G 7 2 10 18 3 4 3 7 8 9 3 10 Update distances of adjacent, unselected nodes K dv pv A T 4 H B 4 C C T 3 D D T 0  E T 2 F F T 3 C G T 2 D H T 3 G 2 Table entries unchanged
  • 51. 4 25 A H B F E D C G 7 2 10 18 3 4 3 7 8 9 3 10 Select node with minimum distance K dv pv A T 4 H B T 4 C C T 3 D D T 0  E T 2 F F T 3 C G T 2 D H T 3 G 2
  • 52. 4 A H B F E D C G 2 3 4 3 3 Cost of Minimum Spanning Tree =  dv = 21 K dv pv A T 4 H B T 4 C C T 3 D D T 0  E T 2 F F T 3 C G T 2 D H T 3 G 2 Done
  • 53. Kruskal’s Algorithm Work with edges, rather than nodes Two steps: – Sort edges by increasing edge weight – Select the first |V| – 1 edges that do not generate a cycle
  • 54. Kruskal’s Algorithm* • Step 1: Choose the arc of least weight. • Step 2: Choose from those arcs remaining the arc of least weight which does not form a cycle with already chosen arcs. (If there are several such arcs, choose one arbitrarily.) • Step 3: Repeat Step 2 until n – 1 arcs have been chosen. Aim: To find a minimum spanning tree for a connected graph with n nodes: * source: www.mrbartonmaths.com/resources/a%20level/d1/Prim's%20and%20Kruskal.ppt
  • 55. Walk-Through* Consider an undirected, weight graph 5 1 A H B F E D C G 3 2 4 6 3 4 3 4 8 4 3 10 Source: https://people.cs.clemson.edu/~pargas/courses/cs212/.../notes/ppt/19PrimKruskal.ppt
  • 56. Sort the edges by increasing edge weight edge dv (D,E) 1 (D,G) 2 (E,G) 3 (C,D) 3 (G,H) 3 (C,F) 3 (B,C) 4 5 1 A H B F E D C G 3 2 4 6 3 4 3 4 8 4 3 10 edge dv (B,E) 4 (B,F) 4 (B,H) 4 (A,H) 5 (D,F) 6 (A,B) 8 (A,F) 10
  • 57. Select first |V|–1 edges which do not generate a cycle edge dv (D,E) 1  (D,G) 2 (E,G) 3 (C,D) 3 (G,H) 3 (C,F) 3 (B,C) 4 5 1 A H B F E D C G 3 2 4 6 3 4 3 4 8 4 3 10 edge dv (B,E) 4 (B,F) 4 (B,H) 4 (A,H) 5 (D,F) 6 (A,B) 8 (A,F) 10
  • 58. Select first |V|–1 edges which do not generate a cycle edge dv (D,E) 1  (D,G) 2  (E,G) 3 (C,D) 3 (G,H) 3 (C,F) 3 (B,C) 4 5 1 A H B F E D C G 3 2 4 6 3 4 3 4 8 4 3 10 edge dv (B,E) 4 (B,F) 4 (B,H) 4 (A,H) 5 (D,F) 6 (A,B) 8 (A,F) 10
  • 59. Select first |V|–1 edges which do not generate a cycle edge dv (D,E) 1  (D,G) 2  (E,G) 3  (C,D) 3 (G,H) 3 (C,F) 3 (B,C) 4 5 1 A H B F E D C G 3 2 4 6 3 4 3 4 8 4 3 10 edge dv (B,E) 4 (B,F) 4 (B,H) 4 (A,H) 5 (D,F) 6 (A,B) 8 (A,F) 10 Accepting edge (E,G) would create a cycle
  • 60. Select first |V|–1 edges which do not generate a cycle edge dv (D,E) 1  (D,G) 2  (E,G) 3  (C,D) 3  (G,H) 3 (C,F) 3 (B,C) 4 5 1 A H B F E D C G 3 2 4 6 3 4 3 4 8 4 3 10 edge dv (B,E) 4 (B,F) 4 (B,H) 4 (A,H) 5 (D,F) 6 (A,B) 8 (A,F) 10
  • 61. Select first |V|–1 edges which do not generate a cycle edge dv (D,E) 1  (D,G) 2  (E,G) 3  (C,D) 3  (G,H) 3  (C,F) 3 (B,C) 4 5 1 A H B F E D C G 3 2 4 6 3 4 3 4 8 4 3 10 edge dv (B,E) 4 (B,F) 4 (B,H) 4 (A,H) 5 (D,F) 6 (A,B) 8 (A,F) 10
  • 62. Select first |V|–1 edges which do not generate a cycle edge dv (D,E) 1  (D,G) 2  (E,G) 3  (C,D) 3  (G,H) 3  (C,F) 3  (B,C) 4 5 1 A H B F E D C G 3 2 4 6 3 4 3 4 8 4 3 10 edge dv (B,E) 4 (B,F) 4 (B,H) 4 (A,H) 5 (D,F) 6 (A,B) 8 (A,F) 10
  • 63. Select first |V|–1 edges which do not generate a cycle edge dv (D,E) 1  (D,G) 2  (E,G) 3  (C,D) 3  (G,H) 3  (C,F) 3  (B,C) 4  5 1 A H B F E D C G 3 2 4 6 3 4 3 4 8 4 3 10 edge dv (B,E) 4 (B,F) 4 (B,H) 4 (A,H) 5 (D,F) 6 (A,B) 8 (A,F) 10
  • 64. Select first |V|–1 edges which do not generate a cycle edge dv (D,E) 1  (D,G) 2  (E,G) 3  (C,D) 3  (G,H) 3  (C,F) 3  (B,C) 4  5 1 A H B F E D C G 3 2 4 6 3 4 3 4 8 4 3 10 edge dv (B,E) 4  (B,F) 4 (B,H) 4 (A,H) 5 (D,F) 6 (A,B) 8 (A,F) 10
  • 65. Select first |V|–1 edges which do not generate a cycle edge dv (D,E) 1  (D,G) 2  (E,G) 3  (C,D) 3  (G,H) 3  (C,F) 3  (B,C) 4  5 1 A H B F E D C G 3 2 4 6 3 4 3 4 8 4 3 10 edge dv (B,E) 4  (B,F) 4  (B,H) 4 (A,H) 5 (D,F) 6 (A,B) 8 (A,F) 10
  • 66. Select first |V|–1 edges which do not generate a cycle edge dv (D,E) 1  (D,G) 2  (E,G) 3  (C,D) 3  (G,H) 3  (C,F) 3  (B,C) 4  5 1 A H B F E D C G 3 2 4 6 3 4 3 4 8 4 3 10 edge dv (B,E) 4  (B,F) 4  (B,H) 4  (A,H) 5 (D,F) 6 (A,B) 8 (A,F) 10
  • 67. Select first |V|–1 edges which do not generate a cycle edge dv (D,E) 1  (D,G) 2  (E,G) 3  (C,D) 3  (G,H) 3  (C,F) 3  (B,C) 4  5 1 A H B F E D C G 3 2 4 6 3 4 3 4 8 4 3 10 edge dv (B,E) 4  (B,F) 4  (B,H) 4  (A,H) 5  (D,F) 6 (A,B) 8 (A,F) 10
  • 68. Select first |V|–1 edges which do not generate a cycle edge dv (D,E) 1  (D,G) 2  (E,G) 3  (C,D) 3  (G,H) 3  (C,F) 3  (B,C) 4  5 1 A H B F E D C G 2 3 3 3 edge dv (B,E) 4  (B,F) 4  (B,H) 4  (A,H) 5  (D,F) 6 (A,B) 8 (A,F) 10 Done Total Cost =  dv = 21 4 } not considered
  • 69. Latihan 1 - Muddy city problem Once upon a time there was a city that had no roads. Getting around the city was particularly difficult after rainstorms because the ground became very muddycars got stuck in the mud and people got their boots dirty. The mayor of the city decided that some of the streets must be paved, but didnt want to spend more money than necessary because the city also wanted to build a swimming pool. The mayor therefore specified two conditions: 1. Enough streets must be paved so that it is possible for everyone to travel from their house to anyone elses house only along paved roads, and 2. The paving should cost as little as possible. Source: www.utdallas.edu/~besp/teaching/mst-applications.pdf
  • 70. Latihan 1 - Muddy city problem • Here is the layout of the city. The number of paving stones between each house represents the cost of paving that route. Find the best route that connects all the houses, but uses as few counters (paving stones) as possible.
  • 71. Latihan 1 - Muddy city problem
  • 72. Latihan 2 1. Diberikan graf G=(V, E) sebagai berikut. Tentukan minimum-cost spanning tree untuk V, yaitu mencari subset dari edge E*  E yang menghubungkan dua node dalam V dengan biaya yang paling minimal.
  • 73. Latihan 3 2. Diberikan vertex sumber A, tentukan jarak dan jalur terpendek dari A ke semua vertex lain pada graf berikut dengan menggunakan • Algoritme Dijkstra • Algoritme Prim
  • 74. Tugas Kelompok 1 Diskusikan dalam kelompok mengenai penerapan Algoritme Djikstra, Prim, dan Kruskal pada kasus tertentu. Contoh: • PT. Telkom ingin mengganti Jaringan Kabel telfon yang sudah ada dengan yang baru. Namun dikarenakan mahalnya penggantian kabel yang menghubungkan 1 wilayah dengan wilayah lain, maka perusahaan akan mennganti kabel telfon dengan jaringan kabel yang menghubungkannya adalah yang paling minimum. • Pada Kasus ini sebagai Verteks (V) Graph adalah menyatakan wilayah berupa kecamatan misalkan Dramaga dan Cibinong. • Kemudian sebagai Edge (E), adalah jaringan kabel (panjang jaringan kabel telfon) yang menghubungkan kecamatan Dramaga dan Cibinong.
  • 75. Tugas Kelompok 1 • Graph G = G(V,E) • V = {nama kecamatan di Kab Bogor}, contoh A: Dramaga, B: Cibeureum • E = {Panjang jaringan kabel di Kecamatan di Kab. Bogor} 4 25 A H B F E D C G 7 2 10 18 3 4 3 7 8 9 3 10 2 • Selanjutnya dari ilustrasi tersebut jelaskan solusinya menggunakan salah satu algoritme yang cocok misalnya djikstra, kruskal, dan Prim.
  • 76. Tugas Kelompok 2 • Carilah kasus yang serupa seperti pada Tugas Kelompok 1 (bisa dari paper, buku, dan dari sumber lain) yang mempunyai permasalahan terkait dengan optimasi graf atau permasalahan MST. • Jelaskan permasalahannya, kemudian solusi apa yang dapat selesaikan menggunakan salah satu Algoritme (Kruskal, prim, atau djikstra), buat ilustrasi permasalahan ke dalam sebuah graf, kemudian terangkan dengan langkah terurut penyelesaian solusi dari masalah menggunakan algoritme Djikstra, Prim atau Kruskal.
  • 77. Tugas Kelompok 2 Yang dikumpulkan adalah dalam tugas pertemuan 9 di LMS adalah: File *.pdf mengenai penjelasan studi kasus, algoritme dan penyelesaian menggunakan Algoritme Djikstra, Prim, dan Kruskal, kemudian sumber/referensi yang digunakan untuk menjabarkan studi kasus atau penggunaan algoritme Djikstra, Prim, dan Kruskal. Batas akhir pengumpulan tugas: 1 minggu
  • 78. Thank you Computer Science Departement FMIPA-IPB Kampus Darmaga Jl. Meranti Wing 20 Level V, Bogor, Indonesia Phone/Fax: +62 251 8625584 http://cs.ipb.ac.id/ 78
  • 79. Department of Computer Science http://cs.ipb.ac.id/ Konsep dalam Teori Otomata 1 Struktur Diskret (KOM209) Imas Sukaesih Sitanggang Pertemuan 9
  • 80. Pendahuluan • Teori otomata adalah studi tentang peralatan atau “mesin” komputasi abstrak, yang dapat didefinisikan secara metematis. • Tipe paling sederhana dari mesin abstrak adalah finite automaton atau finite state machine. • Prinsip yang mendasari mesin ini adalah sistem pada setiap saat dalam salah satu dari sejumlah state berhingga dan bergerak diantara state-state tersebut dalam merespon sinyal input individual.
  • 81. Finite Automata (FA) • Merupakan model yang berguna untuk macam- macam perangkat keras dan perangkat lunak, diantaranya: • Perangkat lunak untuk merancang dan menguji perilaku rangkaian digital. • Lexical analyzer dari sebuah kompilator yang membagi teks input ke dalam unit-unit logik, seperti identifier, keyword dan pungtuasi. • Perangkat lunak untuk men-scan teks berukuran besar, seperti koleksi web page, untuk menemukan adanya kata, frasa atau pola yang lain. • Perangkat lunak untuk verifikasi sistem yang memiliki sejumlah berhingga state yang berbeda, seperti protokol-protokol komunikasi atau protokol untuk keamanan pertukaran data.
  • 82. Contoh 1 Model FA Sederhana • Model switch on/off mengingat apakah switch berada dalam state “on” atau state “off”. off on Push Push • Model memungkinkan user untuk menekan tombol yang memiliki pengaruh berbeda tergantung pada keadaan switch: – Jika switch berada dalam state “off” maka setelah tombol ditekan state berubah menjadi “on”. – Jika switch berada dalam state “on” maka setelah tombol ditekan state berubah menjadi “off”. Contoh lain:
  • 83. Komponen dalam FA • State dinyatakan oleh lingkaran, dalam Contoh 1 state diberi nama “on” dan “off”. • Arc diantara state diberi label “input “ yang menyatakan pengaruh eksternal pada sistem. • Dalam Contoh 1 kedua arc diberi label ‘push” yang menyatakan user menekan tombol tertentu. • Start state atau initial state merupakan state dimana sistem berada dalam keadaan awal. • Dalam Contoh 1 start state adalah off. • Selanjutnya, start state ditunjukan oleh kata start dan panah menuju start state tersebut. • Final atau accepting state. • Dalam Contoh 1 state on dinyatakan sebagai final state. • Selanjutnya, final State dinyatakan dalam lingkaran ganda.
  • 84. Contoh 2 Model FA Sederhana • Input dinyatakan oleh huruf. • Start state merupakan string kosong • Setiap state memiliki transisi pada huruf selanjutnya dari kata then ke state yang menyatakan prefix selanjutnya yang lebih besar. • State “then” adalah accepting state. • FA untuk mengenali kata “then” • dapat dinyatakan sebagai bagian dari lexical analyzer. t th the then t h e n
  • 86. Grammar • Grammar seringkali digunakan dalam perancangan perangkat lunak yang memproses data dengan struktur rekursif. • Grammar digunakan dalam salah satu komponen kompilator yaitu parser yang bekerja dengan struktur rekursif dari bahasa pemograman seperti operasi aritmatika, dan kondisional. • Sebagai contoh aturan gramatikal E  E + E menyatakan bahwa ekspresi dapat dibentuk dari dua ekspresi yang dihubungkan dengan tanda +.
  • 87. Ekspresi regular (1) • Ekspresi regular menyatakan struktur dari data, khususnya string teks. Contoh: [A – Z][a – z]*[ ] [A – Z] [A – Z] • menyatakan kata-kata yang diawali huruf kapital yang diikuti oleh spasi dan 2 huruf kapital. • Ekspresi tersebut mengenali/menerima kata-kata, diantaranya Ithaca NY, It NY, I NY • Ekspresi tersebut tidak menerima kata-kata berikut ITHACA NY, Ithaca, ithaca NY, Ithaca ny, Ithaca23 NY, Ithaca 1Y, Palo Alto CA
  • 88. Ekspresi Regular (2) • Perhatikan ekspresi berikut ([A – Z][a – z]*[ ])*[A – Z] [A – Z] • Ekspresi tersebut menerima kata-kata, diantaranya Palo Alto CA, Ithaca NY, I Thaca NY, Palo A CA • Ekspresi tersebut tidak menerima kata-kata: Palo Alto, palo Alto CA, Palo AltoCA
  • 89. Ekspresi Regular (3) • Dalam kedua ekspresi yang diberikan, • [A – Z] menyatakan range karakter dari huruf kapital “A” ke “Z” • [ ] menyatakan karakter blank • simbol * menyatakan “sejumlah” ekspresi yang mendahului • Tanda kurung digunakan untuk mengelompokkan komponen- komponen dari ekspresi. Tanda kurung tidak menyatakan karakter dalam teks.
  • 90. Konsep dalam Teori Otomata Alphabet • Sebuah alphabet adalah himpunan berhingga dan tak kosong dari simbol. Alphabet disimbolkan oleh . • Contoh: •  = {0, 1} alphabet biner •  = {a, b,..., z}, himpunan semua huruf kecil. • Himpunan semua karakter ASCII.
  • 91. Konsep dalam Teori Otomata (lanjutan) String • Sebuah string (atau word) adalah deretan simbol berhingga yang dipilih dari alphabet. • Contoh : 011011 dan 1111 adalah string dari alphabet biner  = {0, 1}. • String kosong adalah string dimana tidak ada kemunculan simbol. • String tersebut dinotasikan oleh .
  • 92. Konsep dalam Teori Otomata (lanjutan)  Panjang dari string adalah banyaknya posisi untuk simbol dalam string.  Contoh, 01101 memiliki panjang 5.  Umumnya panjang dari string adalah banyaknya simbol dalam string.  Pernyataan tersebut tidak sepenuhnya benar, sebagai contoh terdapat 2 simbol dalam string 01101 yaitu 0 dan 1, tetapi terdapat 5 posisi untuk simbol, dan panjangnya adalah 5.  Notasi standar untuk panjang string w adalah |w|. Contoh: |011| = 3 dan || = 0.
  • 93. Konsep dalam Teori Otomata (lanjutan) • x adalah sebuah substring dari string lain y jika ada string w dan z, keduanya dapat berupa string kosong, sedemikian sehingga y = wxz. • Sebagai contoh, car adalah substring dari carry, car, vicar.
  • 94. Konsep dalam Teori Otomata (lanjutan) Pangkat dari Alphabet • Jika  adalah alphabet, dapat dinyatakan himpunan dari semua string dengan panjang tertentu dari alphabet tersebut dengan menggunakan notasi eksponensial. • Kita mendefinisikan k sebagai himpunan dari string dengan panjang k, setiap string tersebut memiliki simbol dalam .
  • 95. Konsep dalam Teori Otomata (lanjutan), Contoh 3  Perhatikan bahwa 0 = {}, untuk alphabet apapun.  Bahwa  adalah string yang memiliki panjang 0. Jika  = {0, 1} maka 1 = {0, 1} 2 = {00, 01, 10, 11} 3 = {000, 001, 010, 011, 100, 101, 110, 111} dan seterusnya.  Semua string pada alphabet  dinotasikan *.  Contoh: {0,1}* = {, 0, 1, 00, 01, 10, 11, 000, ...} dan * = 0  1  2  ...
  • 96. Konsep dalam Teori Otomata (lanjutan) • Kadang-kadang kita tidak ingin memasukkan string kosong dalam himpunan string. • Himpunan string-string tak kosong dari alphabet  dinotasikan +. • Dengan demikian : + = 1  2  3  ... * = +  {}.
  • 97. Konsep dalam Teori Otomata (lanjutan) Perangkaian String (concatenation) • Misalkan x dan y adalah string, maka xy menyatakan perangkaian dari x dan y, bahwa string dibentuk dengan membuat salinan dari x dan diikuti oleh salinan dari y. • Jika x adalah string yang disusun oleh i simbol, x = a1a2 ... ai dan y adalah string yang disusun oleh j simbol, y = b1b2 ... bj maka xy adalah string dengan panjang i + j, xy = a1a2 ... aib1b2 ... bj • Contoh: x = 01101 dan y = 110, maka xy = 01101110 dan yx = 11001101. • Untuk suatu string w, persamaan w = w = w dipenuhi. Bahwa  adalah identitas untuk perangkaian.
  • 98. Konsep dalam Teori Otomata (lanjutan) Bahasa • Himpunan string-string yang semuanya dipilih dari *, dimana  adalah alphabet, dan L  *, maka L adalah bahasa pada . • Perhatikan bahwa bahasa pada  tidak harus meliputi string-string dengan semua simbol dari . • Dengan demikian, jika L adalah bahasa pada , diketahui bahwa L adalah bahasa pada alphabet yang merupakan superset dari . • Bahasa umum dapat dipandang sebagai himpunan dari string.
  • 99. Konsep dalam Teori Otomata (lanjutan), Contoh 4 • Bahasa Inggris, yang merupakan koleksi dari kata-kata dalam bahasa Inggris yang benar. • Kata-kata tersebut merupakan string pada alphabet yang mengandung semua huruf. • Bahasa C atau bahasa pemrograman lainnya. • Dalam bahasa tersebut, program yang benar adalah subset dari string-string yang mungkin yang dibentuk dari alphabet. • Alphabet tersebut adalah subset dari karakter-karakter ASCII.
  • 100. Konsep dalam Teori Otomata (lanjutan) Contoh bahasa dalam teori otomata:  Bahasa dari semua string yang berisi n buah 0 dan diikuti oleh n buah 1, untuk n  0: {, 01, 0011, 000111, ...}  Himpunan string-string dari 0 dan 1 dengan banyaknya 0 sama dengan banyaknya 1. {, 01, 10, 0011, 0101, 1001 ...}  Himpunan bilangan biner yang memiliki nilai prima {10, 11, 101, 111, 1011, ...}  * adalah bahasa untuk alphabet    adalah bahasa kosong, merupakan bahasa pada suatu alphabet.  {}, bahasa yang hanya mengandung string kosong, juga merupakan bahasa pada suatu alphabet. Perhatikan bahwa   {}
  • 101. Contoh 5 Berikut adalah contoh bahasa pada  = {a, b}: 1. L1 = {, a, aa, aab} 2. L2 = {x  {a, b}* |x| ≤ 8} 3. L3 = {x  {a, b}* |x| adalah ganjil} 4. L4 = {x  {a, b}* na(x) ≥ nb(x)} 5. L5 = {x  {a, b}* |x| ≥ 2, x diawali dan diakhiri dengan b}
  • 102. Notasi lain dari Bahasa (1) 1. Berdasarkan string-string yang dikonstruksi di dalamnya. Contoh: L1 = {ab, bab}*  {b}{bb}* 2. Sifat atau karakteristik dari string dalam L, Contoh: L = {byb y  {a, b}*}. 3. Definisi rekursif Contoh: Definisi rekursif dari L*:    L*  Untuk suatu x  L* dan suatu y  L, xy  L*  Tidak ada string dalam L* selain yang diperoleh menggunakan aturan 1 dan 2.
  • 103. Notasi lain dari Bahasa (2) Definisi rekursif untuk bahasa pal dari string-string palindrom pada :    pal  Untuk suatu a  , a  pal  Untuk suatu x  pal, dan suatu a  , axa  pal  Tidak ada string dalam pal selain yang diperoleh menggunakan aturan 1, 2 dan 3.
  • 104. Notasi lain dari Bahasa (3) Definisi rekursif dari bahasa (LAE) yang string-string di dalamnya berupa ekspresi aljabar dengan tanda kurung penuh (sepasang) untuk setiap operator dengan  = {i, (, ), +, −}. • i  LAE • Untuk suatu x, y  LAE, (x+y) dan (x−y) adalah anggota dari LAE. • Tidak ada string dalam LAE selain yang diperoleh menggunakan aturan 1 dan 2. Contoh string dalam bahasa tersebut: i, (i+i), (i−i), ((i+i)−i), ((i−(i−i))+i).
  • 105. Perangkaian Bahasa  Jika L1 dan L2 adalah bahasa, L1 dan L2  *. Perangkaian dari L1 dan L2 dinotasikan L1L2 = {xy | x  L1 dan y  L2}.  Sebagai contoh, {hope, fear}{less, fully} = {hopeless, hopefully, fearless, fearfully}.  Untuk L adalah bahasa, L{} = {}L karena untuk setiap x  L, x = x = x.
  • 106. Daftar Pustaka • John E. Hopcroft, Rajeev Motwani, Jeffrey D. Ullman. 2001. Introduction to Automata Theory, Languange, and Computation. Edisi ke-2. Addison-Wesley.
  • 107. Thank you Computer Science Departement FMIPA-IPB Kampus Darmaga Jl. Meranti Wing 20 Level V, Bogor, Indonesia Phone/Fax: +62 251 8625584 http://cs.ipb.ac.id/ 29
  • 108. Department of Computer Science http://cs.ipb.ac.id/ Deterministic Finite Automata dan Nondeterministic Finite Automata 1 Struktur Diskret (KOM209) Imas Sukaesih Sitanggang Pertemuan 10
  • 109. Finite Automata • Sebuah Finite Automata (FA) memiliki sebuah himpunan dari state dan kontrolnya yang bergerak dari state ke state sebagai respon dari adanya input eksternal. • FA dibedakan ke dalam dua kelas, yaitu • Deterministic FA (DFA), yaitu FA yang tidak dapat berada pada lebih dari satu state pada suatu waktu. • Non Deterministic FA (NFA), yaitu FA yang dapat berada pada beberapa state pada waktu yang bersamaan. • Pada DFA, dari suatu state ada tepat satu state berikutnya untuk setiap input eksternal yang diterima. • Sedangkan pada NFA, untuk setiap pasangan state input kita bisa memiliki 0 atau lebih pilihan ke state berikutnya.
  • 110. Deterministic Finite Automata (DFA) • Deterministic Finite Automata (DFA) akan berada pada suatu state tunggal setelah pembacaan dari serangkaian input. • Istilah “deterministic” menunjuk kepada fakta bahwa pada setiap input terdapat satu dan hanya satu state yang dituju oleh automata dari state tertentu.
  • 111. Definisi DFA Suatu DFA terdiri dari : 1. Sebuah himpunan berhingga dari state dinotasikan Q. 2. Sebuah himpunan berhingga dari simbol input, dinotasikan . 3. Fungsi transisi yang memiliki argumen sebuah state dan sebuah simbol input, serta mengembalikan sebuah state, biasanya dinotasikan sebagai . Untuk q  Q dan a   : Q   → Q dan (q,a) menyatakan state kemana DFA bergerak. Dalam bentuk graf,  direpresentasikan oleh arc antara state dan label pada arc. Jika q adalah state, dan a adalah simbol input, maka (q,a) adalah state p sedemikian sehingga terdapat sebuah arc yang diberi label a dari q ke p.
  • 112. Definisi DFA (2) 4. Sebuah state awal (start state), merupakan salah satu dari state- state dalam Q. 5. Sebuah himpunan dari final state F. Himpunan F adalah subset dari Q. DFA seringkali dinotasikan sebagai sebuah tuple 5 elemen A = (Q, , , q0, F), dimana A : Nama dari DFA Q : Himpunan state  : Simbol-simbol input  : Fungsi transisi q0: Start state F : Himpunan accepting state.
  • 113. Pemrosesan String oleh DFA  Anggaplah a1, a2, ..., an adalah sebuah rangkaian dari simbol input.  Dengan berawal dari start state , dengan dibacanya simbol input a1, DFA menuju state q1. Sehingga (q0, a1) = q1.  Selanjutnya DFA memproses simbol input selanjutnya, yaitu a2, dengan mengevaluasi (q1, a2) = q2.  Dengan cara yang sama DFA akan memasuki state q3, q4, ..., qn, sehingga (qi-1, ai) = qi untuk setiap i.  Jika qn  F maka input a1, a2, ..., an diterima dan jika qn  F maka input a1, a2, ..., an ditolak.  Bahasa dari DFA adalah semua string yang diterima oleh DFA tersebut.
  • 114. Contoh 1 • DFA berikut menerima semua string dari para 0 dan para 1 yang memiliki urutan 01 pada suatu tempat dalam string: A = ({q0, q1, q2}, {0, 1}, , q0, {q1}) dimana  (q0, 0) = q2 (q0, 1) = q0 (q2, 0) = q2 (q2, 1) = q1 (q1, 0) = (q1, 1) = q1
  • 115. Notasi untuk DFA • Selain dinyatakan dalam tuple 5-elemen, DFA dapat dinyatakan menggunakan • Diagram transisi, yaitu graf yang terdiri dari node dan arc • Tabel transisi, yaitu daftar tabular dari fungsi .
  • 116. Tabel Transisi • Tabel transisi menyatakan himpunan dari state dan alphabet input. Sebuah diagram transisi untuk suatu DFA A = (Q, , , q0, F) adalah sebuah graf yang didefinisikan sebagai berikut: 1. Untuk setiap state dalam Q, terdapat sebuah node. 2. Untuk setiap q  Q dan setiap simbol input a  , misalkan (q,a) = p. Maka diagram transisi memiliki sebuah arc dari node q ke node p, diberi label a. Jika terdapat beberapa simbol input yang menyebabkan transisi dari q ke p, maka diagram transisi dapat memiliki suatu arc, yang diberi label berupa daftar dari simbol-simbol input tersebut. 3. Terdapat sebuah tanda panah menuju start state q0, yang diberi label start. Tanda panah tersebut tidak berasal dari state-state lain. 4. Node yang menyatakan final state (yaitu dalam F) diberi tanda oleh lingkaran ganda. State yang bukan dalam F memiliki sebuah lingkaran tunggal.
  • 117. Contoh 2 • Diagram transisi untuk DFA dalam Contoh 6 adalah 1 q 2 q 1 0 0,1 0 1 0 q start
  • 118. Contoh 3 • Tabel transisi untuk fungsi  pada Contoh 7 adalah 0 1 → q0 q2 q0 * q1 q1 q1 q2 q2 q1 Start state diberi tanda dengan sebuah arah panah, dan final state diberi tanda dengan sebuah tanda bintang.
  • 119. Perluasan Fungsi Transisi untuk String (1) • Secara informal DFA menyatakan sebuah bahasa, yaitu himpunan string yang diperoleh dalam urutan transisi state dari start state ke final state. • Dalam diagram transisi, bahasa dari sebuah DFA adalah himpunan label sepanjang semua path dari start state ke final state. • Fungsi transisi yang diperluas menjelaskan apa yang terjadi pada DFA ketika proses berawal pada suatu state dan mengikuti rangkaian input.
  • 120. Perluasan Fungsi Transisi untuk String (2) • Jika  adalah fungsi transisi, maka fungsi transisi yang diperluas yang di konstruksi dari  dinotasikan • Fungsi transisi yang diperluas dari sebuah fungsi yang mengambil state q dan sebuah string w dan mengembalikan state p. • State p adalah state yang dicapai oleh FA ketika berawal dari state q dan memproses rangkaian input w. ˆ
  • 121. Perluasan Fungsi Transisi untuk String (3) • Definisikan dengan induksi pada panjang string input sebagai berikut • Basis : yang berarti jika FA berada dalam state q dan membaca tidak ada input, FA tetap dalam state q. • Induksi : Anggap w adalah string dengan bentuk xa, a adalah simbol terakhir dari w, dan x adalah string yang berisi semua simbol, kecuali simbol terakhir. • Contoh : w= 1101 dipisahkan ke dalam x = 110 dan a = 1, maka  ˆ ( ) q q, =    ( ) ( )       =   a , q, w q, x   
  • 122. Perluasan Fungsi Transisi untuk String (4) • Untuk menghitung pertama hitung (adalah state dimana FA selesai memproses semua simbol kecuali simbol terakhir dalam w). • Anggaplah state tersebut adalah p, = p Maka adalah state yang diperoleh dengan membuat transisi dari state p pada input a (simbol terakhir dari w). Bahwa ( ) w q,   ( ) x q,   ( ) x q,   ( ) w q,   ( ) ( ) a p, w q,   = 
  • 123. Contoh 4 • DFA berikut menerima bahasa berikut L = ww memiliki jumlah para 0 dan para 1 yang masing- masing adalah genap 2 q 1 q 3 q 0 q start 0 0 0 0 1 1 1 1
  • 124. Contoh 4 (lanjutan) • Pemrosesan input 110101:
  • 125. Bahasa dari Sebuah DFA • Bahasa dari sebuah DFA, A = (Q, , , q0, F), dinotasikan L(A) didefinisikan oleh ( ) ( )       =  F dalam w , q w A L 0  ( )    A L • Dengan demikian bahasa dari A adalah himpunan string w yang berawal dari state awal q0 ke suatu accepting state. • Jika L adalah L(A) untuk suatu DFA A, maka dikatakan L adalah bahasa regular.
  • 126. Contoh 5 • Diberikan DFA dengan diagram transisi berikut 0 q 1 q 2 q a b a b b a start • Buatlah diagram transisi untuk DFA • String w1 = abb diterima oleh DFA melalui kalkulasi berikut: • Karena q2 dalam F = {q2}, maka string w1 = abb dalam L(A).
  • 127. Subtopik • DFA: Definisi DFA, Bagimana DFA memproses string, Notasi-notasi untuk DFA, Fungsi transisi yang diperluas, Bahasa dari DFA • NFA: Definisi NFA, Bagimana NFA memproses string, Fungsi transisi yang diperluas, Bahasa dari NFA, Ekuivalensi DFA dan NFA • ε-NFA: Penggunaan transisi-ε, Notasi formal untuk ε-NFA, Epsilon- Closure, Fungsi transisi yang diperluas dan bahasa untuk ε-NFA, Mengeliminasi Transisi -
  • 128. Nondeterministic Finite Automata • Perbedaan antara DFA dan NFA adalah dalam bentuk . • Untuk NFA,  adalah fungsi yang memiliki argumen sebuah state dan sebuah simbol (seperti dalam DFA), tetapi mengembalikan himpunan dari nol, satu atau lebih state. Contoh 6 • Gambar berikut adalah sebuah NFA yang menerima string yang terdiri dari para 0 dan para 1 dan diakhiri oleh 01. 0 q 1 q 0 1 0,1 start 2 q
  • 129. Definisi NFA Sebuah NFA dinyatakan sebagai sebuah tuple 5 elemen, yaitu A = (Q, , , q0, F), dimana : 1. Q : Sebuah himpunan berhingga dari state-state 2.  : Sebuah himpunan berhingga dari simbol-simbol input 3. q0 : Sebuah start state q0  Q 4. F : Sebuah himpunan final state, F  Q 5.  : Fungsi transisi yang memiliki argumen sebuah state dalam Q dan sebuah simbol input dalam  dan mengembalikan sebuah himpunan bagian dari Q.
  • 130. • NFA dalam Contoh 6 dapat dinyatakan A = ({q0, q1, q2}, {0, 1}, , q0, {q2}) dengan fungsi transisi : 0 1 → q0 {q0, q1} {q0} q1  {q2} * q2   Jika tidak terdapat transisi dari state tertentu untuk simbol input yang diberikan, fungsi transisi mengembalikan himpunan kosong, dinotasikan 
  • 131. Latihan • Buatlah tabel transisi untuk NFA berikut q0 q1 q2 q3 1 0 1 1 0 0 start q0 start a,b q1 b a b NFA A NFA B
  • 132. Fungsi Transisi yang Diperluas • Definisi fungsi transisi yang diperluas ( ) untuk sebuah fungsi transisi () dari NFA: • Basis: (q,) = {q}. Bahwa, tanpa membaca simbol input, NFA tidak berubah. NFA berada dalam state pada saat mulai membaca input. • Induksi: Anggap bahwa w berbentuk w = xa, dimana a adalah simbol terakhir dari w dan x adalah simbol-simbol lain dalam w selain simbol terakhir. Anggap bahwa (q,x) = {p1, p2, ..., pk}, dan misalkan ራ 𝑖=1 𝑘 𝛿 𝑝𝑖, 𝑎 = {𝑟1, 𝑟2, … , 𝑟𝑚} • Maka (q,w) = {r1, r2, ..., rm}        
  • 133. Contoh 7 • Fungsi digunakan untuk menjelaskan pemrosesan input 00101 oleh NFA dalam Contoh 1. Langkah-langkahnya adalah sebagai berikut :  
  • 134. Contoh 7 (lanjutan) • String w dikatakan diterima oleh NFA A = (Q, , , q0, F), apabila (q0,w)  F   • Sehingga (q0,00101) = {q0, q2} • Karena F = {q2} sehingga 00101 diterima oleh NFA dalam Contoh 1.    
  • 135. Latihan • Tentukan apakah string berikut diterima oleh NFA A dan B? q0 q1 q2 q3 1 0 1 1 0 0 start q0 start a,b q1 b a b NFA A NFA B String aaab String 100
  • 136. Bahasa dari NFA • Jika A = (Q, , , q0, F) adalah sebuah NFA, maka • Artinya bahwa, L(A) adalah himpunan dari string-string dalam * sedemikian sehingga (q0,w) mengandung sedikitnya satu accepting state.   ( ) ( )             =    F w , q w A L 0
  • 137. Latihan • Diberikan tabel transisi untuk sebuah NFA. Apakah string w = 0100 diterima oleh NFA tersebut. δ 0 1 →q0 {q0} {q0, q1} *q1 {q2} {q2} q2 {q3} {q3} *q3 { } { }
  • 138. Ekuivalensi dari DFA dan NFA (1) • Dalam banyak kasus lebih mudah membuat NFA yang menerima bahasa tertentu daripada DFA yang menerima bahasa yang sama. • Akan tetapi semua bahasa yang dapat dijelaskan oleh NFA juga dapat dijelaskan oleh DFA. • Bukti bahwa DFA dapat mengerjakan apa yang dikerjakan oleh NFA melibatkan “ konstruksi subset”, yaitu mengkonstruksi semua subset dari state-state NFA.
  • 139. Ekuivalensi dari DFA dan NFA (2) • Konstruksi subset bermula dari sebuah NFA, N = (QN, , N, q0, FN). • Tujuannya adalah ingin ditentukan deskripsi dari DFA D = (QD, , D, {q0}, FD) sedemikian sehingga L(D) = L(N). • Perhatikan bahwa alphabet input untuk N dan D sama yaitu , dan start state dari D adalah himpunan yang hanya mengandung start state dari N.
  • 140. Ekuivalensi dari DFA dan NFA (3) • Komponen/elemen lain dikonstruksi sebagai berikut: • QD adalah himpunan dari himpunan bagian (subset) dari QN, yaitu QD adalah himpunan kuasa (power set) dari QN. Jika QN memiliki n state, maka QD mempunyai 2n state. • Seringkali tidak semua dari state-state ini dapat diakses dari start state dari QD. • State-state yang tidak dapat diakses dapat dibuang, sehingga banyaknya state-state dari D dapat lebih sedikit dari 2n.
  • 141. Ekuivalensi dari DFA dan NFA (4) • FD adalah himpunan dari subset-subset S dari QN sedemikian sehingga S  FN  , bahwa FD adalah semua himpunan- himpunan dari state-state N yang mengandung sedikitnya accepting state dari N. • Untuk setiap S  QN dan untuk setiap simbol input a, • bahwa untuk menghitung D(S, a), kita lihat semua state-state p dalam S, selanjutnya ditentukan state yang dituju state N dari p pada input a, dan ambil union dari semua state-state tersebut. 𝛿𝐷 𝑆, 𝑎 = ራ 𝑃 𝑑𝑎𝑙𝑎𝑚 𝑆 𝛿𝑁 𝑝, 𝑎
  • 142. Contoh 8 • Misal N adalah NFA dalam Contoh 1 yang menerima semua string yang diakhiri oleh 01. N = ({q0, q1, q2}, {0, 1}, N, q0, {q2}) konstruksi subset dilakukan sebagai berikut: Karena QN = {q0 , q1 , q2}, maka banyaknya state dalam QD adalah 23 = 8, yaitu semua subset-subset dari ketiga state tersebut. 0 q 1 q 0 1 0,1 start 2 q
  • 143. Contoh 8 (lanjutan) • Tabel transisi dari kedelapan state: D 0 1    → {q0} {q0, q1} {q0} {q1}  {q2} *{q2}   {q0, q1} {q0, q1} {q0, q2} *{q0, q2} {q0, q1} {q0} *{q1, q2}  {q2} *{q0, q1, q2} {q0, q1} {q0, q2}
  • 144. Contoh 8 (lanjutan) • Fungsi transisi N N 0 1 → {q0} {q0, q1} {q0} {q1}  {q2} *{q2}   • Untuk menghitung entri- entri dalam tabel transisi D, perhatikan bahwa untuk setiap S  QN dan setiap a, 𝛿𝐷 𝑆, 𝑎 = ራ 𝑃 𝑑𝑎𝑙𝑎𝑚 𝑆 𝛿𝑁 𝑝, 𝑎
  • 146. Contoh 8 (lanjutan) • Cara yang sama dapat digunakan untuk menentukan elemen lain dalam tabel transisi D. • Start state dari N adalah q0 sehingga start state dari D adalah {q0}. • Himpunan final state dari N adalah FN = {q2} sehingga himpunan final state, FD, dari A adalah himpunan dari subset-subset dari QN = {q0, q1, q2} sedemikian sehingga S  FN   dengan demikian FD = ({q2}, {q0, q2}, {q1, q2}, {q0, q1, q2}).
  • 147. Contoh 8 (lanjutan) • Perhatikan bahwa elemen-elemen dalam tabel N adalah himpunan, bahwa state-state dari DFA yang telah dikonstruksi adalah himpunan. • Ganti nama-nama state ini, sebagai contoh A untuk , B untuk {q0}, H untuk {q0, q1, q2} dan seterusnya. D 0 1 A A A →B E B C A D *D A A E E F *F E B *G A D *H E F
  • 148. Lazy evaluation (1) • Untuk menghindari langkah untuk membuat elemen-elemen dari tabel transisi yang memerlukan waktu eksponensial untuk setiap subset dari state-state. • Caranya: • Basis: singleton set yang hanya berisi start state dari N dapat diakses. • Induksi: anggaplah kita telah menentukan bahwa himpunan S dari state-state dapat diakses. Kemudian untuk setiap simbol input a, hitung himpunan dari state-state D(S, a), himpunan-himpunan dari state ini juga dapat diakses.
  • 149. Lazy evaluation (2) • Dengan menggunakan lazy evaluation, diperoleh DFA yang ekuivalen dengan NFA pada Contoh 6: Start   0 q   2 0 q , q   1 0 q , q 1 1 1 0 0 0
  • 150. Teorema Teorema 1: • Jika D = (QD, , D, {q0}, FD) adalah DFA yang dibuat dari NFA N = (QN, , N, q0, FN) dengan konstruksi subset, maka L(D) = L(N). Teorema 2: • Sebuah bahasa L diterima oleh suatu DFA jika dan hanya jika L diterima oleh suatu NFA. Bukti : dapat dilihat pada buku rujukan.
  • 151. Latihan • Diberikan diagram dan tabel transisi untuk sebuah NFA berikut. Tentukan DFA yang ekuivalen dengan NFA tersebut. • Tabel transisi δ 0 1 →q0 {q0, q1} {q0 } q1 { } {q2} *q2 {q2} {q2}
  • 152. 45 Referensi • John E. Hopcroft, Rajeev Motwani, Jeffrey D. Ullman. 2001. Introduction to Automata Theory, Languange, and Computation. Edisi ke-2. Addison-Wesley.
  • 153. Thank you Computer Science Departement FMIPA-IPB Kampus Darmaga Jl. Meranti Wing 20 Level V, Bogor, Indonesia Phone/Fax: +62 251 8625584 http://cs.ipb.ac.id/ 46
  • 154. Department of Computer Science http://cs.ipb.ac.id/ Epsilon NFA dan Ekspresi Regular 1 Struktur Diskret (KOM209) Imas Sukaesih Sitanggang Pertemuan 12
  • 155. Ekspresi Reguler Subtopik: • ε-NFA: • Penggunaan transisi-ε, • Notasi formal untuk ε-NFA, • Epsilon-Closure, • Fungsi transisi yang diperluas • Bahasa untuk ε-NFA, Mengeliminasi Transisi - • Ekspresi regular • Operator dari ekspresi regular • Pembuatan ekspresi regular • Konversi DFA ke ekspresi regular • Konversi Ekspresi regular ke Otomata
  • 156. Finite Automata • Sebuah Finite Automata (FA) memiliki sebuah himpunan dari state dan kontrolnya yang bergerak dari state ke state sebagai respon dari adanya input eksternal. • FA dibedakan ke dalam dua kelas, yaitu • Deterministic FA (DFA), yaitu FA yang tidak dapat berada pada lebih dari satu state pada suatu waktu. • Non Deterministic FA (NFA), yaitu FA yang dapat berada pada beberapa state pada waktu yang bersamaan. • Pada DFA, dari suatu state ada tepat satu state berikutnya untuk setiap input eksternal yang diterima. • Sedangkan pada NFA, untuk setiap pasangan state input kita bisa memiliki 0 atau lebih pilihan ke state berikutnya.
  • 157. Finite Automata dengan Transisi- • FA dengan transisi- adalah FA yang memungkinkan sebuah transisi pada  (string kosong). • Dengan kata lain, sebuah NFA dimungkinkan membuat transisi tanpa menerima sebuah simbol input. • NFA dengan transisi- dinotasikan -NFA
  • 158. Contoh 1 Sebuah -NFA menerima bilangan desimal yang terdiri dari: 1. Tanda  atau  (optional) 2. Sebuah string dari digit-digit 3. Sebuah titik desimal 4. Sebuah string yang lain dari digit-digit. String dari digit-digit ini atau string (2) dapat kosong, tetapi sedikitnya satu dari 2 string dari digit harus tak kosong.
  • 159. Contoh 1 (lanjutan) Diagram transisi -NFA yang dimaksud: Start 0 q 1 q 2 q 3 q 5 q 4 q    , , 0,1,...,9 0,1,...,9 0,1,...,9 0,1,...,9  . .
  • 160. Notasi Formal untuk sebuah -NFA Secara formal, kita menyatakan -NFA A oleh A = (Q, , , q0, F) dimana semua elemen merepresentasikan hal yang sama dengan NFA, kecuali adalah fungsi dengan argumen sebagai berikut: 1. Sebuah state dalam Q, dan 2. Sebuah elemen dari   {}, yaitu simbol input atau . 3. Simbol untuk string kosong, , tak dapat manjadi anggota dari , sehingga tidak ada hasil-hasil yang membingungkan.
  • 161. Contoh 2 -NFA dalam Contoh 1 direpresentasikan secara formal sebagai berikut : E = ({q0, q1, q2, q3, q4, q5}, {., +, , 0, 1, ...,9}, , q0 , {q5}) dimana  didefinisikan dalam tabel transisi berikut:   +, . 0,1,2,...,9 q0 {q1} {q1}   q1   {q2} {q1, q4} q2    {q3} q3 {q5}   {q3} q4   {q3}  *q5    
  • 162. Epsilon-Closure (ECLOSE) (1) • ECLOSE digunakan dalam menentukan fungsi transisi yang diperluas untuk -NFA. • ECLOSE dari state q ditentukan dengan mengikuti semua transisi yang keluar dari q yang diberi label . • Ketika mendapat state lain, dengan mengikuti  kita mengikuti transisi  keluar dari state-state tersebut, dan seterusnya, akhirnya menemukan setiap state yang dapat dicapai dari q sepanjang path yang memiliki arc-arc yang semuanya diberi label .
  • 163. Epsilon-Closure (ECLOSE) (2) • Definisi formal -closure ECLOSE(q) • Basis: state q adalah dalam ECLOSE(q) • Induksi: Jika state p adalah dalam ECLOSE(q), dan terdapat sebuah transisi dari state p ke state r yang diberi label , maka r adalah dalam ECLOSE(q). • Dapat dinyatakan bahwa jika  adalah fungsi transisi dari -NFA, dan p adalah dalam ECLOSE(q), maka ECLOSE(q) juga mengandung semua state dalam (p, ).
  • 164. Contoh 3 • Untuk -NFA pada Contoh 1, setiap state adalah -closure-nya sendiri, kecuali • ECLOSE(q0) = {q0, q1} • ECLOSE(q3) = {q3, q5} • Perhatikan bahwa hanya dua transisi , salah satu yang menambahkan ke ECLOSE(q0) dan yang lain menambahkan q5 ke ECLOSE(q3).
  • 165. Contoh 4 Untuk -NFA sebagai berikut ECLOSE(1) = {1,2,3,4,6} 1 5 3 2 4 6 7      a b
  • 166. Fungsi Transisi yang Diperluas dan Bahasa untuk -NFA Anggaplah E = (Q, , , q0, F) adalah -NFA. Definisi untuk fungsi transisi yang diperluas ( መ 𝛿) pada -NFA adalah • Basis:෡ 𝛿 𝑞, 𝜀 = 𝐸𝐶𝐿𝑂𝑆𝐸 𝑞 bahwa, jika label dari path adalah , maka kita hanya dapat mengikuti arc perluasan yang diberi label  dari state q. • Induksi: Anggap bahwa w adalah bentuk xa dimana a adalah simbol terakhir dari w. Perhatikan bahwa a adalah anggota dari ; a bukanlah  yang tidak dalam .
  • 167. Menghitung መ 𝛿(𝑞, 𝑤) 1. Misal {p1, p2, ..., pk} adalah መ 𝛿(𝑞, 𝑥). Bahwa pi untuk semua i adalah state- state dan hanya state-state yang dapat dicapai dari q mengikuti path yang diberi label x. Path ini dapat berakhir dengan 1 atau lebih transisi yang diberi label  dan juga dapat memiliki transisi-transisi  yang lain. 2. Misalkan ‫ڂ‬𝑖=1 𝑘 𝛿(𝑝𝑖, 𝑎) adalah himpunan {r1, r2, ..., rm}. Artinya bahwa ikuti semua transisi yang diberi label a dari state-state yang dapat dicapai dari q sepanjang path yang diberi label x. • rj adalah state-state yang dapat dicapai dari q sepanjang path yang diberi label w. • State-state tambahan yang dapat dicapai ditemukan dari rj dengan mengikuti arc-arc yang diberi label  pada langkah (3) berikut.
  • 168. Menghitung መ 𝛿(𝑞, 𝑤) 3. ෠ δ q, w = ‫ڂ‬j=1 m ECLOSE(rj) Langkah closure tambahan ini meliputi semua path dari q yang diberi label w, dengan mempertimbangkan kemungkinan bahwa terdapat arc-arc tambahan berlabel  yang dapat kita ikuti setelah membuat sebuah transisi pada simbol final a. Karena Sehingga 5.6 diterima oleh -NFA pada Contoh 1.     5 3 0 q , q 6 . 5 , q   
  • 169. 16 Contoh 5 Apakah 5.6 diterima oleh -NFA pada Contoh 1? Akan dihitung   +, . 0,1,2,...,9 q0 {q1} {q1}   q1   {q2} {q1, q4} q2    {q3} q3 {q5}   {q3} q4   {q3}  *q5       6 . 5 , 0 q  
  • 170. 17 Contoh 5   +, . 0,1,2,...,9 q0 {q1} {q1}   q1   {q2} {q1, q4} q2    {q3} q3 {q5}   {q3} q4   {q3}  *q5    
  • 171. 18 Contoh 5   +, . 0,1,2,...,9 q0 {q1} {q1}   q1   {q2} {q1, q4} q2    {q3} q3 {q5}   {q3} q4   {q3}  *q5    
  • 172. Bahasa dari sebuah -NFA Bahasa dari sebuah -NFA E = (Q, , , q0, F), adalah                  F w , q w E L 0
  • 173. Mengeliminasi Transisi - (1) Misalkan E = (QE, , E, q0, FE). Maka DFA yang ekuivalen D = (QD, , D, qD, FD) didefinisikan sebagai berikut: 1. QD adalah himpunan dari subset-subset dari QE. • Akan ditentukan bahwa semua state yang dapat diakses dari D adalah subset-subset -closed dari QE, bahwa himpunan-himpunan S  QE sedemikian sehingga S = ECLOSE(S). • Himpunan-himpunan -closed dari state-state S adalah himpunan- himpunan sedemikian sehingga suatu transisi- yang keluar dari satu state dalam S menuju ke sebuah state yang juga dalam S. •  adalah himpunan -closed.
  • 174. Mengeliminasi Transisi - (2) 2. qD = ECLOSE(q0), bahwa kita mendapatkan start state dari D dengan menutup himpunan yang mengandung hanya start state dari E. Hal ini berbeda dengan konstruksi start state dalam NFA. 3. FD adalah himpunan-himpunan dari state yang mengandung sedikitnya satu accepting state dari E. Bahwa FD = {S | S adalah dalam QD dan SFE  }.
  • 175. Mengeliminasi Transisi - (3) 4. D(S, a) dihitung sebagai berikut, untuk semua a dan himpunan- himpunan S  QD a. Misal S = {p1, p2, ..., pk} b. Hitung Misalkan himpunan tersebut adalah {r1, r2, ..., rm}. c. Maka    k i i E a p 1 ,        m 1 j j D r ECLOSE a , S   
  • 176. Contoh 6 Diperoleh DFA yang mengeliminasi transisi  dari NFA pada Contoh 1:   4 1 q , q } {q1   5 3 2 q , q , q   5 3 q , q } {q2   1 0 q , q Start +,- 0,1,...,9 0,1,...,9 0,1,...,9 0,1,...,9 0,1,...,9 . . 0,1,...,9 .
  • 177. 24 Contoh 6 • Untuk -NFA : • Diketahui QE = {q0, q1, ..., q5}, E = , lihat Contoh 2.10, qE = q0, FE = {q5}. • Akan ditentukan   +, . 0,1,2,...,9 q0 {q1} {q1}   q1   {q2} {q1, q4} q2    {q3} q3 {q5}   {q3} q4   {q3}  *q5            5 0 5 1 0 , , , 9 ,..., 1 , 0 , , ., , ,..., , q q q q q E       D D D D F , q , , , Q D   
  • 178. 25 Contoh 6 • Untuk -NFA : • Diketahui QE = {q0, q1, ..., q5}, E = , lihat Contoh 2.10, qE = q0, FE = {q5}. • Akan ditentukan   +, . 0,1,2,...,9 q0 {q1} {q1}   q1   {q2} {q1, q4} q2    {q3} q3 {q5}   {q3} q4   {q3}  *q5            5 0 5 1 0 , , , 9 ,..., 1 , 0 , , ., , ,..., , q q q q q E       D D D D F , q , , , Q D   
  • 179. Contoh 6 Diperoleh DFA yang mengeliminasi transisi  dari NFA pada Contoh 1:   4 1 q , q } {q1   5 3 2 q , q , q   5 3 q , q } {q2   1 0 q , q Start +,- 0,1,...,9 0,1,...,9 0,1,...,9 0,1,...,9 0,1,...,9 . . 0,1,...,9 .
  • 180. Ekspresi Regular (1) • Dipandang sebagai notasi lain dari NFA. • Memiliki aplikasi yang penting dalam aplikasi pencarian teks atau komponen kompilator. • Memberikan cara deklaratif untuk menyatakan string yang ingin diterima. • Menyatakan bahasa, sebagai contoh ekspresi 01* + 10* menyatakan bahasa yang berisi semua string yang diawali sebuah 0 dan diikuti oleh para 1 atau sebuah 1 diikuti oleh sejumlah para 0.
  • 181. Ekspresi Regular (2) Operasi dalam bahasa dimana operator dari ekspresi regular direpresentasikan: 1. Union dari dua bahasa L dan M, dinotasi, adalah himpunan dari string yang ada dalam L atau dalam M. Contoh: L = {001, 10, 111} dan M = {, 001}, maka = {, 10, 001, 111}. 2. Concatenation dari bahasa L dan M adalah himpunan dari string yang dibentuk dengan mengambil string dalam L dan merangkainya dengan string dalam M. Notasinya menggunakan “dot” atau tidak ada operator yang dituliskan.
  • 182. Contoh 1: Contoh concatenation: L = {001, 10, 111} dan M = {, 001}, maka LM = {001, 10, 111, 001001, 10001, 111001}. Tiga string pertama dalam LM diperoleh dengan merangkaikan string-string dalam L dengan , sedangkan sisanya diperoleh dengan merangkaikan string-string dalam L dengan 001.
  • 183. Ekspresi Regular (3) 3. Closure (atau star, atau Kleene Closure) dari bahasa L Dinotasikan L* dan menyatakan himpunan dari string-string yang dapat dibentuk dengan mengambil sejumlah string dari L, mungkin dengan pengulangan (yaitu string yang sama dipilih lebih dari sekali), dan merangkai semua string tersebut. Contoh : L = {0, 1} maka L* adalah semua string dari para 0 dan para 1. L = {0, 11} maka L* berisi semua string dari para 0 dan para 1 sedemikian sehingga para 1 muncul berpasangan. Perhatikan bahwa 011, 11110  L* tapi 01011, 101  L*. Secara lebih formal, L* adalah union tak berhingga  Li, i  0 dimana L0 = {}, L1 = L, dan Li untuk i  1 adalah LL...L, yaitu perangkaian dari i salinan dari L.
  • 184. Contoh 2: • L = {0,11}. L0 = {} (tidak bergantung pada bahasa L). • L1 = L menyatakan pemilihan 1 string dari L. • L2 ={00, 011, 110, 1111} yaitu mengambil dua string dalam L, pengulangan diperbolehkan sehingga terdapat 4 string. • L3 merupakan himpunan string yang dapat dibentuk dengan membuat 3 pilihan dari 2 string dalam L, L3 = {000, 0011, 0110, 1100, 01111, 11011, 11110, 111111}.
  • 185. Contoh 2 (lanjutan) • Untuk menghitung L*, harus dihitung Li untuk setiap i, dan mengambil semua union dari bahasa-bahasa ini. • Li memiliki 2i anggota, setiap Li berhingga, union dari sejumlah tak berhingga Li umumnya merupakan bahasa tak berhingga, L* = L0  L1  L2  ... • * = {} dan 0 = {}
  • 186. Membuat Ekspresi Regular (1) • Ekspresi regular terdiri dari konstanta, variabel-variabel yang menyatakan bahasa dan operator union, dot dan star. • Ekspresi regular dapat dinyatakan secara rekursif. • Definisi ekspresi regular, E, dan bahasa yang direpresentasikan oleh E yaitu L(E) terdiri dari basis dan langkah induktif
  • 187. Membuat Ekspresi Regular (2) Basis: terdiri dari 3 bagian : 1. Konstanta  dan  adalah ekspresi regular, berturut- turut menyatakan bahasa {} dan . Bahwa L() ={}, dan L() = . 2. Jika a adalah simbol, maka a adalah ekspresi regular. Ekspresi ini menyatakan bahasa {a}, bahwa L(a) = {a} 3. Sebuah variabel, biasanya dicetak tebal dan miring seperti L, merepresentasikan suatu bahasa.
  • 188. Membuat Ekspresi Regular (3) Induksi: Langkah induktif terdiri dari 4 langkah: 1. Jika E dan F adalah ekspresi regular, maka E + F adalah ekspresi regular yang menyatakan union dari L(E) dan L(F). Bahwa L(E + F) = L(E)  L(F). 2. Jika E dan F adalah ekspresi regular, maka EF adalah ekspresi regular yang menyatakan perangkaian dari L(E) dan L(F). Bahwa L(EF) = L(E).L(F). Simbol ‘dot’ bisa digunakan atau tidak untuk menotasikan operator perangkaian baik dalam bahasa atau dalam ekspresi regular. Contoh: 0.1 adalah ekspresi regular yang artinya sama dengan 01 dan merepresentasikan bahasa {01}.
  • 189. Membuat Ekspresi Regular (4) 3. Jika E adalah sebuah ekspresi regular, maka E* adalah ekspresi regular menyatakan closure dari L(E). Bahwa L(E*) = (L(E))*. 4. Jika E adalah ekspresi regular, maka (E), E dengan tanda kurung juga ekspresi regular yang menyatakan bahasa yang sama dengan E. Bahwa L((E)) = L(E).
  • 190. Contoh 3 • Akan dibuat ekspresi regular untuk himpunan string yang terdiri dari para 0 dan para 1 secara bergantian. • Langkah-langkah untuk membuat ekspresi regular tersebut adalah • Pertama dibuat ekspresi regular untuk bahasa yang terdiri dari string tunggal 01. • Gunakan operator star untuk mendapat sebuah ekspresi untuk semua string dengan bentuk 0101...01
  • 191. Contoh 3 (lanjutan) Basis: 0 dan 1 adalah ekspresi regular yang berturut-turut menyatakan bahasa {0} dan {1}. Induksi: • Perangkaian dari 0 dan 1 yaitu 01 adalah ekspresi regular yang menyatakan bahasa {01}. • Untuk mendapat semua string yang terdiri dari nol atau lebih kemunculan 01 digunakan ekspresi regular (01)*. • Perhatikan bahwa (01)*  01*. 01* menyatakan bahasa yang terdiri dari sebuah 0 dan sejumlah para 1.
  • 192. Contoh 3 (lanjutan) • Tetapi, L((01)*) bukan bahasa yang tepat yang diinginkan. • Bahasa ini hanya mencakup string-string dari para 0 dan para 1 secara bergantian dimulai dengan 0 dan diakhiri dengan 1  diperlukan kemungkinan terdapat 1 diawal dan 0 diakhir string. Ekspresi regular yang mungkin adalah • (10)* yang terdiri dari para 0 dan para 1 secara bergantian, diawali 1 dan diakhiri 0. • 0(10)* yang diawali dan diakhiri 0. • 1(01)* yang diawali dan diakhiri 1. • Sehingga keseluruhan ekspresi adalah (01)* + (10)* + 0(10)* + 1(01)* dengan + adalah operator union.
  • 193. Contoh 3 (lanjutan), cara Lain • Mulai dengan (01)*, tambahkan 1 (optional) diawal jika kita merangkai pada bagian kiri dengan ekspresi +1. • Bisa juga ditambah 0 (optional) diakhir jika kita merangkai pada bagian kanan dengan ekspresi +0. • Dengan menggunakan operator +, diperoleh L( + 1) = L( )  L(1) = {}  {1} = {,1} • Ekspresi yang dimaksud adalah (+1)(01)*(+0). • Jika 1 yang dipilih dalam (+1) didapat string 1w. • Jika 0 yang dipilih dalam (+0) didapat string w0.
  • 194. Urutan prioritas operator dalam ekspresi regular: 1. Operator star 2. Operator dot (concatenation) Concatenation bersifat asosiatif sehingga 012 dapat dikelompokkan (01)2. 3. Operator + (union) yang bersifat asosiatif. Contoh, ekspresi 01*+1 dikelompokkan menjadi (0(1*))+1.
  • 195. Finite Automata dan Ekspresi Regular (1) • Sebuah ekspresi regular dapat merepresentasikan sebuah bahasa yang diterima oleh finite automata. • Untuk membuktikan pernyataan tersebut, perlu dibuktikan bahwa: • Setiap bahasa yang didefinisikan oleh salah satu dari automata juga didefinisikan oleh sebuah ekspresi regular. Dalam hal ini, asumsikan bahwa bahasa tersebut diterima oleh DFA. • Setiap bahasa yang didefinisikan oleh suatu ekspresi regular didefinisikan oleh salah satu dari automata. Dalam hal ini, asumsikan terdapat NFA dengan transisi  yang menerima bahasa yang sama.
  • 196. Skema pembuktian ekuivalensi notasi- notasi untuk bahasa regular: • Misalkan x dan y adalah node dalam gambar di samping. • Edge dari node x ke y berarti bahwa dapat dibuktikan setiap bahasa yang didefinisikan oleh kelas x juga didefinisikan oleh kelas y. NFA -  DFA NFA RE
  • 197. Konversi Ekspresi Regular ke Automata Teorema 1: Setiap bahasa yang didefinisikan oleh sebuah ekspresi regular juga didefinisikan oleh sebuah FA. Bukti: Anggap L = L(R) untuk ekspresi regular R. Kita tunjukkan bahwa L = L(E) untuk -NFA E dengan 1.Tepat satu accepting state. 2.Tidak ada arc ke dalam initial state. 3.Tidak ada arc yang keluar dari accepting state.
  • 198. Konversi Ekspresi Regular ke Automata Basis: Terdapat 3 bagian dalam basis: a. Konstruksi automaton yang menangani ekspresi . Automaton tersebut menyatakan bahasa {} karena hanya ada 1 path dari start state ke accepting state yang diberi label . b. Konstruksi untuk . Tidak ada path dari start state ke accepting state, sehingga  adalah bahasa untuk automaton ini. c. Konstruksi automaton untuk ekspresi regular a. Bahasa dari automaton ini hanya berisi satu string a, yaitu L(a).
  • 199. Konversi Ekspresi Regular ke Automata Basis a.Konstruksi automaton yang menangani ekspresi  b. Konstruksi untuk  c. Konstruksi automaton untuk ekspresi r egular a  a
  • 200. Konversi Ekspresi Regular ke Automata Induksi Diasumsikan bahwa teorema benar untuk sub ekspresi dari sebuah ekspresi regular yang diberikan. Terdapat 4 kasus dalam induksi 1.Ekspresi adalah R + S untuk ekspresi yang lebih kecil R dan S bahasa dari automaton adalah L(R)  L(S). R S    
  • 201. Konversi Ekspresi Regular ke Automata 2. Ekspresi adalah RS untuk ekspresi R dan S yang lebih kecil. start state dari automaton yang pertama menjadi start state dari automaton keseluruhan, dan final state dari automaton kedua adalah final state dari automaton keseluruhan semua path dalam automaton secara keseluruhan diberi label oleh string dalam L(R)L(S) R  S
  • 202. Konversi Ekspresi Regular ke Automata 3. Ekspresi adalah R* untuk ekspresi yang lebih kecil R Kemungkinan dalam automaton tersebut: • Secara langsung dari start state ke accepting state sepanjang sebuah path yang diberi label . ( dalam L(R*)) • Untuk start state, melalui sekali atau beberapa kali automaton tersebut, dan kemudian ke accepting state.  menerima string-string dalam L(R), L(R)L(R), L(R)L(R)L(R) dan seterusnya 4. Ekspresi adalah (R) untuk ekspresi yang lebih kecil R.  R   
  • 203. Contoh 5     start 0 1         1 1 0   Konversi ekspresi regular (0+1)*1(0+1) ke sebuah -NFA. Jawab:
  • 204. 51 Referensi • John E. Hopcroft, Rajeev Motwani, Jeffrey D. Ullman. 2001. Introduction to Automata Theory, Languange, and Computation. Edisi ke-2. Addison-Wesley.
  • 205. Thank you Computer Science Departement FMIPA-IPB Kampus Darmaga Jl. Meranti Wing 20 Level V, Bogor, Indonesia Phone/Fax: +62 251 8625584 http://cs.ipb.ac.id/ 52
  • 206. Department of Computer Science http://cs.ipb.ac.id/ Ekspresi Regular 1 Struktur Diskret (KOM20I) Imas Sukaesih Sitanggang Pertemuan 13
  • 207. Ekspresi Reguler Subtopik: • Operator dari ekspresi regular • Pembuatan ekspresi regular • Konversi Ekspresi regular ke Otomata
  • 208. Ekspresi Regular (1) • Dipandang sebagai notasi lain dari NFA. • Memiliki aplikasi yang penting dalam aplikasi pencarian teks atau komponen kompilator. • Memberikan cara deklaratif untuk menyatakan string yang ingin diterima. • Menyatakan bahasa, sebagai contoh ekspresi 01* + 10* menyatakan bahasa yang berisi semua string yang diawali sebuah 0 dan diikuti oleh para 1 atau sebuah 1 diikuti oleh sejumlah para 0.
  • 209. Ekspresi Regular (2) Operasi dalam bahasa dimana operator dari ekspresi regular direpresentasikan: 1. Union dari dua bahasa L dan M, dinotasi, adalah himpunan dari string yang ada dalam L atau dalam M. Contoh: L = {001, 10, 111} dan M = {, 001}, maka = {, 10, 001, 111}. 2. Concatenation dari bahasa L dan M adalah himpunan dari string yang dibentuk dengan mengambil string dalam L dan merangkainya dengan string dalam M. Notasinya menggunakan “dot” atau tidak ada operator yang dituliskan.
  • 210. Contoh 1: Contoh concatenation: L = {001, 10, 111} dan M = {, 001}, maka LM = {001, 10, 111, 001001, 10001, 111001}. Tiga string pertama dalam LM diperoleh dengan merangkaikan string-string dalam L dengan , sedangkan sisanya diperoleh dengan merangkaikan string-string dalam L dengan 001.
  • 211. Ekspresi Regular (3) 3. Closure (atau star, atau Kleene Closure) dari bahasa L Dinotasikan L* dan menyatakan himpunan dari string-string yang dapat dibentuk dengan mengambil sejumlah string dari L, mungkin dengan pengulangan (yaitu string yang sama dipilih lebih dari sekali), dan merangkai semua string tersebut. Contoh : L = {0, 1} maka L* adalah semua string dari para 0 dan para 1. L = {0, 11} maka L* berisi semua string dari para 0 dan para 1 sedemikian sehingga para 1 muncul berpasangan. Perhatikan bahwa 011, 11110  L* tapi 01011, 101  L*. Secara lebih formal, L* adalah union tak berhingga  Li, i  0 dimana L0 = {}, L1 = L, dan Li untuk i  1 adalah LL...L, yaitu perangkaian dari i salinan dari L.
  • 212. Contoh 2: • L = {0,11}. L0 = {} (tidak bergantung pada bahasa L). • L1 = L menyatakan pemilihan 1 string dari L. • L2 ={00, 011, 110, 1111} yaitu mengambil dua string dalam L, pengulangan diperbolehkan sehingga terdapat 4 string. • L3 merupakan himpunan string yang dapat dibentuk dengan membuat 3 pilihan dari 2 string dalam L, L3 = {000, 0011, 0110, 1100, 01111, 11011, 11110, 111111}.
  • 213. Contoh 2 (lanjutan) • Untuk menghitung L*, harus dihitung Li untuk setiap i, dan mengambil semua union dari bahasa-bahasa ini. • Li memiliki 2i anggota, setiap Li berhingga, union dari sejumlah tak berhingga Li umumnya merupakan bahasa tak berhingga, L* = L0  L1  L2  ... • * = {} dan 0 = {}
  • 214. Membuat Ekspresi Regular (1) • Ekspresi regular terdiri dari konstanta, variabel-variabel yang menyatakan bahasa dan operator union, dot dan star. • Ekspresi regular dapat dinyatakan secara rekursif. • Definisi ekspresi regular, E, dan bahasa yang direpresentasikan oleh E yaitu L(E) terdiri dari basis dan langkah induktif
  • 215. Membuat Ekspresi Regular (2) Basis: terdiri dari 3 bagian : 1. Konstanta  dan  adalah ekspresi regular, berturut- turut menyatakan bahasa {} dan . Bahwa L() ={}, dan L() = . 2. Jika a adalah simbol, maka a adalah ekspresi regular. Ekspresi ini menyatakan bahasa {a}, bahwa L(a) = {a} 3. Sebuah variabel, biasanya dicetak tebal dan miring seperti L, merepresentasikan suatu bahasa.
  • 216. Membuat Ekspresi Regular (3) Induksi: Langkah induktif terdiri dari 4 langkah: 1. Jika E dan F adalah ekspresi regular, maka E + F adalah ekspresi regular yang menyatakan union dari L(E) dan L(F). Bahwa L(E + F) = L(E)  L(F). 2. Jika E dan F adalah ekspresi regular, maka EF adalah ekspresi regular yang menyatakan perangkaian dari L(E) dan L(F). Bahwa L(EF) = L(E).L(F). Simbol ‘dot’ bisa digunakan atau tidak untuk menotasikan operator perangkaian baik dalam bahasa atau dalam ekspresi regular. Contoh: 0.1 adalah ekspresi regular yang artinya sama dengan 01 dan merepresentasikan bahasa {01}.
  • 217. Membuat Ekspresi Regular (4) 3. Jika E adalah sebuah ekspresi regular, maka E* adalah ekspresi regular menyatakan closure dari L(E). Bahwa L(E*) = (L(E))*. 4. Jika E adalah ekspresi regular, maka (E), E dengan tanda kurung juga ekspresi regular yang menyatakan bahasa yang sama dengan E. Bahwa L((E)) = L(E).
  • 218. Contoh 3 • Akan dibuat ekspresi regular untuk himpunan string yang terdiri dari para 0 dan para 1 secara bergantian. • Langkah-langkah untuk membuat ekspresi regular tersebut adalah • Pertama dibuat ekspresi regular untuk bahasa yang terdiri dari string tunggal 01. • Gunakan operator star untuk mendapat sebuah ekspresi untuk semua string dengan bentuk 0101...01
  • 219. Contoh 3 (lanjutan) Basis: 0 dan 1 adalah ekspresi regular yang berturut-turut menyatakan bahasa {0} dan {1}. Induksi: • Perangkaian dari 0 dan 1 yaitu 01 adalah ekspresi regular yang menyatakan bahasa {01}. • Untuk mendapat semua string yang terdiri dari nol atau lebih kemunculan 01 digunakan ekspresi regular (01)*. • Perhatikan bahwa (01)*  01*. 01* menyatakan bahasa yang terdiri dari sebuah 0 dan sejumlah para 1.
  • 220. Contoh 3 (lanjutan) • Tetapi, L((01)*) bukan bahasa yang tepat yang diinginkan. • Bahasa ini hanya mencakup string-string dari para 0 dan para 1 secara bergantian dimulai dengan 0 dan diakhiri dengan 1 → diperlukan kemungkinan terdapat 1 diawal dan 0 diakhir string. Ekspresi regular yang mungkin adalah • (10)* yang terdiri dari para 0 dan para 1 secara bergantian, diawali 1 dan diakhiri 0. • 0(10)* yang diawali dan diakhiri 0. • 1(01)* yang diawali dan diakhiri 1. • Sehingga keseluruhan ekspresi adalah (01)* + (10)* + 0(10)* + 1(01)* dengan + adalah operator union.
  • 221. Contoh 3 (lanjutan), cara Lain • Mulai dengan (01)*, tambahkan 1 (optional) diawal jika kita merangkai pada bagian kiri dengan ekspresi +1. • Bisa juga ditambah 0 (optional) diakhir jika kita merangkai pada bagian kanan dengan ekspresi +0. • Dengan menggunakan operator +, diperoleh L( + 1) = L( )  L(1) = {}  {1} = {,1} • Ekspresi yang dimaksud adalah (+1)(01)*(+0). • Jika 1 yang dipilih dalam (+1) didapat string 1w. • Jika 0 yang dipilih dalam (+0) didapat string w0.
  • 222. Urutan prioritas operator dalam ekspresi regular: 1. Operator star 2. Operator dot (concatenation) Concatenation bersifat asosiatif sehingga 012 dapat dikelompokkan (01)2. 3. Operator + (union) yang bersifat asosiatif. Contoh, ekspresi 01*+1 dikelompokkan menjadi (0(1*))+1.
  • 223. Finite Automata dan Ekspresi Regular (1) • Sebuah ekspresi regular dapat merepresentasikan sebuah bahasa yang diterima oleh finite automata. • Untuk membuktikan pernyataan tersebut, perlu dibuktikan bahwa: • Setiap bahasa yang didefinisikan oleh salah satu dari automata juga didefinisikan oleh sebuah ekspresi regular. Dalam hal ini, asumsikan bahwa bahasa tersebut diterima oleh DFA. • Setiap bahasa yang didefinisikan oleh suatu ekspresi regular didefinisikan oleh salah satu dari automata. Dalam hal ini, asumsikan terdapat NFA dengan transisi  yang menerima bahasa yang sama.
  • 224. Skema pembuktian ekuivalensi notasi- notasi untuk bahasa regular: • Misalkan x dan y adalah node dalam gambar di samping. • Edge dari node x ke y berarti bahwa dapat dibuktikan setiap bahasa yang didefinisikan oleh kelas x juga didefinisikan oleh kelas y. NFA -  DFA NFA RE
  • 225. Konversi Ekspresi Regular ke Automata Teorema 1: Setiap bahasa yang didefinisikan oleh sebuah ekspresi regular juga didefinisikan oleh sebuah FA. Bukti: Anggap L = L(R) untuk ekspresi regular R. Kita tunjukkan bahwa L = L(E) untuk -NFA E dengan 1.Tepat satu accepting state. 2.Tidak ada arc ke dalam initial state. 3.Tidak ada arc yang keluar dari accepting state.
  • 226. Konversi Ekspresi Regular ke Automata Basis: Terdapat 3 bagian dalam basis: a. Konstruksi automaton yang menangani ekspresi . Automaton tersebut menyatakan bahasa {} karena hanya ada 1 path dari start state ke accepting state yang diberi label . b. Konstruksi untuk . Tidak ada path dari start state ke accepting state, sehingga  adalah bahasa untuk automaton ini. c. Konstruksi automaton untuk ekspresi regular a. Bahasa dari automaton ini hanya berisi satu string a, yaitu L(a).
  • 227. Konversi Ekspresi Regular ke Automata Basis a.Konstruksi automaton yang menangani ekspresi  b. Konstruksi untuk  c. Konstruksi automaton untuk ekspresi r egular a  a
  • 228. Konversi Ekspresi Regular ke Automata Induksi Diasumsikan bahwa teorema benar untuk sub ekspresi dari sebuah ekspresi regular yang diberikan. Terdapat 4 kasus dalam induksi 1.Ekspresi adalah R + S untuk ekspresi yang lebih kecil R dan S bahasa dari automaton adalah L(R)  L(S). R S    
  • 229. Konversi Ekspresi Regular ke Automata 2. Ekspresi adalah RS untuk ekspresi R dan S yang lebih kecil. start state dari automaton yang pertama menjadi start state dari automaton keseluruhan, dan final state dari automaton kedua adalah final state dari automaton keseluruhan semua path dalam automaton secara keseluruhan diberi label oleh string dalam L(R)L(S) R  S
  • 230. Konversi Ekspresi Regular ke Automata 3. Ekspresi adalah R* untuk ekspresi yang lebih kecil R Kemungkinan dalam automaton tersebut: • Secara langsung dari start state ke accepting state sepanjang sebuah path yang diberi label . ( dalam L(R*)) • Untuk start state, melalui sekali atau beberapa kali automaton tersebut, dan kemudian ke accepting state. → menerima string-string dalam L(R), L(R)L(R), L(R)L(R)L(R) dan seterusnya 4. Ekspresi adalah (R) untuk ekspresi yang lebih kecil R.  R   
  • 231. Contoh 5     start 0 1         1 1 0   Konversi ekspresi regular (0+1)*1(0+1) ke sebuah -NFA. Jawab:
  • 232. 27 Referensi • John E. Hopcroft, Rajeev Motwani, Jeffrey D. Ullman. 2001. Introduction to Automata Theory, Languange, and Computation. Edisi ke-2. Addison-Wesley.
  • 233. Thank you Computer Science Departement FMIPA-IPB Kampus Darmaga Jl. Meranti Wing 20 Level V, Bogor, Indonesia Phone/Fax: +62 251 8625584 http://cs.ipb.ac.id/ 28
  • 234. Department of Computer Science http://cs.ipb.ac.id/ T ataBahasa Bebas Konteks 1 Struktur Diskret (KOM20I)
  • 235. TataBahasaBebasKonteks(CFG) Subtopik: • Tata Bahasa Bebas Konteks • Definisi dari tata bahasa bebas konteks • Penurunan menggunakan tata bahasa • Bahasa dari sebuah tata bahasa
  • 236. Pendahuluan (1) • Grammar merupakan alat untuk menjelaskan dan menganalisis bahasa. • Aplikasinya: • CFGmemiliki peranan penting dalam teknologi kompilator sejak tahun 1960-an. • CFGjuga telah digunakan untuk menjelaskan format dokumen, menggunakan document-type definition (DTD) yang digunakan dalam komunitas XML(extensible markup language) untuk pertukaran informasi pada web.
  • 237. Pendahuluan (2) • Contoh, misal  = {0,1}. Bahasa Lpal dari polindrom- polindrom pada  didefinisikan secara rekursif sebagai berikut: Basis: , 0, 1 adalah polindrom. Induksi : Jika w adalah sebuah polindrom, begitu juga 0w0 dan 1w1. Tidak ada string lain dalam Lpal selain string yang diperoleh dari basis dan induksi.
  • 238. Pendahuluan (3) • CFG adalah sebuah notasi formal untuk menyatakan definisi rekursif dari bahasa. • Sebuah grammar terdiri dari satu atau lebih variabel yang merupakan kelas- kelas dari string yaitu bahasa. • Dalam contoh bahasa Lpal, terdapat hanya satu variabel p yang menyatakan himpunan dari polindrom-polindrom yaitu kelas-kelas dari string-string yang membentuk bahasa Lpal. • Terdapat aturan-aturan yang menyatakan bagaimana string dalam setiap kelas dikonstruksi. • Konstruksi dapat menggunakan simbol-simbol dari alphabet, string yang diketahui ada dalam satu kelas tertentu atau keduanya.
  • 239. Contoh 1 CFG untuk polindrom adalah 1. P   2. P  0 3. P  1 4. P  0P0 5. P  1P1
  • 240. Definisi CFG(1) Komponen-komponen dalam deskripsi gramatikal dari sebuah bahasa adalah sebagai berikut: 1. Himpunan berhingga dari simbol yang membentuk string dari bahasa yang didefinisikan. Alphabet ini dinamakan terminal-terminal atau simbol-simbol terminal. Dalam Contoh 1, simbol terminal adalah 0 dan 1. 2. Himpunan berhingga dari variabel-variabel. Variabel-variabel tersebut dinamakan nonterminal atau kategori syntactic. Setiap variabel menyatakan sebuah bahasa. Dalam Contoh 1, hanya terdapat 1 variabel, yaitu P,yang menyatakan kelas dari polindrom-polindrom pada alphabet {0,1}.
  • 241. Definisi CFG(2) 3. Salah satu dari variabel-variabel menyatakan bahasa yang sedang didefinisikan. Variabel tersebut dinamakan start symbol. Variabel-variabel lain menyatakan kelas-kelas pembantu dari string-string yang digunakan untuk mendefinisikan bahasa dari start symbol. Dalam Contoh1, hanya terdapat 1 variabel, yaitu P, yang dinamakan start symbol.
  • 242. Definisi CFG(3) 4. Himpunan berhingga dari produksi-produksi atau aturan-aturan yang menyatakan definisi rekursif dari sebuah bahasa. Setiap produksi terdiri dari: • Sebuah variabel yang didefinisikan (secara parsial) oleh produksi. Variabel ini sering kali dinamakan head dari produksi. • Simbol produksi  • Sebuah string dari nol atau lebih terminal dan variabel. String ini dinamakan body dari produksi, yang menyatakan salah satu cara untuk membentuk string dalam bahasa dari variabel dari head. • Terminal-terminal tidak diubah dan setiap variabel dari body disubstitusi dengan string yang diketahui dalam bahasa dari variabel tersebut. • Dalam Contoh 1 terdapat 5 produksi.
  • 243. Komponen CFG • Keempat komponen membentuk sebuah CFG atau hanya grammar, notasinya adalah G = (V, T, P,S), dengan • V : Himpunan variabel-variabel • T : Terminal • P : Himpunan produksi • S : Start symbol.
  • 244. Contoh2 • Grammar Gpal untuk polindrom-polindrom dinyatakan oleh Gpal = ({P}, {0,1}, A, P) dengan A adalah himpunan dari 5 produksi seperti dalam Contoh 1
  • 245. Contoh3 • Sebuah CFG menyatakan ekspresi dalam bahasa pemrograman, dengan ketentuan berikut: 1. Ekspresi dibatasi hanya mengandung operator + dan * (penjumlahan dan perkalian). 2. Argumen juga dapat berupa identifier yang dibatasi hanya untuk huruf a dan b, dan digit 0 dan 1. 3. Setiap identifier haruslah diawali dengan a atau b dan dapat diikuti oleh string dalam {a, b, 0, 1}*.
  • 246. Contoh3 (Lanjutan) Terdapat dua variabel dalam grammar ini yaitu: 1. E menyatakan ekspresi yang juga merupakan start symbol dan merepresentasikan bahasa dari ekspresi yang didefinisikan. 2. I menyatakan identifier.
  • 247. Contoh3 (Lanjutan) 1. E  I 2. E  E + E 3.E  E*E 4. E (E) 5. I  a 6. I  b 7. I  Ia 8. I  Ib 9. I  I0 10.I  I1 Secara formal CFG yang dimaksud adalah G = ({E,I}, T, P, E) dimana T adalah himpunan simbol- simbol {+, *, (, ), a, b, 0, 1} dan P adalah himpunan produksi- produksi.
  • 248. Notasi untuk produksi • Produksi-produksi A1, A2, …, An dapat digantikan dengan notasi A  1| 2,|…| n • Dalam Contoh 1, grammar untuk polindrom dapat ditulis sebagai P  | 0 | 1 | 0P0 | 1P1.
  • 249. Latihan 1 • Tuliskan definisi rekursif dari L1 = {anbn | n≥1}. Tentukan grammar G1 untuk L1. Tuliskan komponen- komponen dari grammar tsb • Diberikan L2 = {a, a+a, a*a, (a)+a, (a*a), a+a*a,… } yang merupakan contoh ekspresi aritmatika. T entukan komponen-komponen grammar G2 untuk L2
  • 250. PenurunanMenggunakan Sebuah Grammar • Produksi-produksi dari sebuah CFG dapat digunakan untuk menyimpulkan bahwa string-string tertentu dalam bahasa dari sebuah variabel. • Terdapat 2 pendekatan untuk inferensi tersebut, yaitu 1. Inferensi rekursif, menggunakan aturan dari body ke head 2. Derivation, menggunakan aturan dari head ke body
  • 251. Langkah-langkah Inferensi rekursif 1. Ambil string-string yang diketahui ada dalam bahasa dari setiap variabel dari body. 2. Rangkai string-string tersebut, dalam urutan yang sesuai, dengan terminal-terminal muncul dalam body. 3. Simpulkan bahwa string yang dihasilkan adalah dalam bahasa dari variabel pada head.
  • 252. Langkah-langkah derivation 1. Perluas start symbol menggunakan salah satu produksinya (yaitu gunakan salah satu produksi yang memiliki head adalah start symbol). 2. Perluas string yang dihasilkan dengan mengganti salah satu dari variabel dengan body dari salah satu produksi-produksinya, dan seterusnya sampai diperoleh sebuah string yang mengandung terminal-terminal saja. 3. Bahasa dari grammar adalah semua string-string dari terminal- terminal yang dapat diperoleh dengan cara ini.
  • 253. Contoh 4: Inferensi rekursif Tabel berikut menyatakan proses inferensi untuk a*(a + b00) menggunakan grammar pada Contoh 3: Baris String yang diperoleh Untuk Bahasa dari Produksi yang digunakan String-string yang digunakan (i) a I 5 - (ii) b I 6 - (iii) b0 I 9 (ii) (iv) b00 I 9 (iii) (v) a E 1 (i) (vi) b00 E 1 (iv) (vii) a + b00 E 2 (v), (vi) (viii) (a + b00) E 4 (vii) (ix) a*(a + b00) E 3 (v), (viii)
  • 254. Contoh 4: Inferensi rekursif Tabel berikut menyatakan proses inferensi untuk aa*(a+b) dan 1a+b menggunakan grammar pada Contoh 3: Baris String yang diperoleh Untuk Bahasa dari Produksi yang digunakan String-string yang digunakan 1. E  I 2. E  E + E 3.E  E*E 4. E (E) 5. I  a 6. I  b 7. I  Ia 8. I  Ib 9. I  I0 10.I  I1
  • 255. Latihan 2 • Untuk grammar dalam Latihan 1 • Tentukan inferensi rekursif untuk string aabb menggunakan produksi-produksi pada grammar G1 • Tentukan inferensi rekursif untuk string (a)*a menggunakan produksi-produksi pada grammar G2
  • 256. Definisi simbolrelasi  • Anggap G = (V,T,P,S) adalah sebuah CFG. • Misalkan A adalah sebuah string dari terminal- terminal dan variabel-variabel dengan A adalah sebuah variabel. Bahwa  dan  adalah string dalam (VT), dan A  V. • Misalkan A   adalah sebuah produksi dari G. Maka kita katakan A  G • Jika G dimengerti, kita hanya mengatakan A  .
  • 257. Definisi simbolrelasi  (lanjutan) • Perhatikan bahwa satu langkah derivation mengganti suatu variabel dalam string dengan body dari salah satu produksinya. • Kita dapat memperluas hubungan  untuk menyatakan 0, 1 atau banyak langkah penurunan.
  • 258. Definisi untuk notasi * • Notasi * menyatakan 0 atau banyak langkah dengan definisi sebagai berikut: Basis: • Untuk suatu string  dari terminal-terminal dan variabel-variabel kita katakan   G artinya suatu string menurunkan dirinya sendiri.
  • 259. Definisi untuk notasi * (lanjutan) Induksi: Bahwa jika  dapat menjadi  dengan 0 atau lebih langkah, dan satu langkah lagi mengambil  ke , maka  dapat menjadi .  • Dalam pernyataan lain, notasi   G berarti bahwa terdapat serangkaian string-string 1,2,..., n, untuk n≥1 sedemikian sehingga  = 1  = n Untuk i = 1, 2, ... , n1, diperoleh i  i +1.  • Jika    G dan    maka  G G
  • 260. Contoh5 • Tunjukkan bahwa a*(a+b00) adalah dalam bahasa dari variabel E pada Contoh 3. • Berikut adalah salah satu penurunan tersebut : E  E*E  I*E  a*E  a*(E)  a*(E+E)  a*(I+E)  a*(a+E)  a*(a+I)  a*(a+I0)  a*(a+I00)  a*(a+b00)
  • 261. Notasi * Notasi * digunakan untuk menyingkat penurunan. • Dari basis bisa diperoleh E * E • Penggunaan berulang bagian induksi menghasilkan E * E*E E * I*E dan seterusnya sampai diperoleh E * a*(a+b00)
  • 262. Latihan 3 • Untuk grammar dalam Latihan 1 • Dengan menggunakan penurunan, tunjukkan bahwa string aabb ada dalam L1 • Dengan menggunakan penurunan, tunjukkan bahwa string (a)*a ada dalam L2
  • 263. Leftmost dan Rightmost Derivation • Leftmost derivation pada setiap langkah digantikan leftmost variable dengan salah satu dari body-body produksinya. Notasi: lm untuk satu langkah dan * lm untuk banyak langkah. • Righmost derivation, rightmost variable diganti oleh salah satu dari body-nya. Notasi: rm untuk satu langkah dan * rm untuk banyak langkah.
  • 264. Contoh6 • Penurunan dari Contoh 5 merupakan leftmost derivation E lm E*E lmI*E lm a*E lm a*(E) lm a*(E+E)lm a*(I+E) lm a*(a+E) lm a*(a+I) lm a*(a+I0) lm a*(a+I00) lm a*(a+b00) Secara singkat dapat dinyatakan E * lm a*(a+b00).
  • 265. Contoh 6 (lanjutan) • Sedangkan rightmost derivation a*(a+b00): E rm E*E rm E*(E) rm E*(E+E) rm E*(E+I) rm E*(E+I0) rm E*(E+I00) rm E*(E+b00) E*(I+b00) rm E*(a+b00) rm I*(a+b00) a*(a+b00) rm rm Secara singkat dapat dinyatakan E * rm a*(a+b00).
  • 266. Leftmost atau rightmost derivation • Baik menggunakan leftmost atau rightmost derivation: “jika w adalah terminal string dan A adalah variabel maka A * w jika dan hanya jika A * lm w dan A * w jika dan hanya jika A* rm w”.
  • 267. Latihan 4 • Tata bahasa G untuk bahasa L terdiri dari ekspresi-ekspresi aljabar yang legal, yang muncul dalam bahasa pemrograman. Operatornya terdiri dari: + , – , * , / . Identifier hanya identifier tunggal a. Ekspresi boleh menggunakan tanda kurung ( ). • Tuliskan komponen-komponen dari G termasuk produksi- produksinya • Tuliskan leftmost derivation dan rightmost derivation untuk string (a – a) * a + a menggunakan tata bahasa G
  • 268. Bahasa dari Sebuah Grammar • Jika G = (V,T,P,S) adalah sebuah CFG, bahasa dari G dinotasikan L(G) adalah himpunan dari string-string terminal yang memiliki penurunan dari start symbol. Bahwa L(G) = {w dalam T* | S * w} • Jika sebuah bahasa L adalah bahasa dari CFG, maka L dikatakan CFL (Context Free Language). • Sebagai contoh, himpunan dari polindrom-polindrom adalah CFL (Bukti dapat dilihat pada buku rujukan).
  • 269. Bentuk-Bentuk Sentential • Penurunan dari start symbol menghasilkan string-string yang memiliki aturan khusus  dinamakan bentuk-bentuk sentential. • Bahwa, jika G = (V,T,P,S) adalah sebuah CFG, maka string  dalam (VT)* sedemikian sehingga S *  adalah bentuk sentential • Jika S * lm  maka  adalah bentuk left sentential • Jika S * rm  maka  adalah bentuk right sentential • Bahasa L(G) adalah bentuk-bentuk sentential yang ada dalam T*; yaitu hanya terdiri dari terminal
  • 270. Contoh7 • Dari Contoh 3: E*(I+E) adalah sebuah bentuk sentential karena terdapat sebuah penurunan E  E*E  E*(E)  E*(E+E)  E*(I+E) • Contoh bentuk left sentential adalah a*E, karena terdapat penurunan berikut E lm E*E lm I*E lm a*E • Contoh bentuk right sentential adalah E*(E+E), karena terdapat penuruan berikut E rm E*E rm E*(E) rm E*(E+E)
  • 271. Latihan 5 • Buatlah tata bahasa yang membentuk bahasa L1 = {x  {0,1}* | banyaknya para 0 sama dengan banyaknya para 1}. • Dengan menggunakan penurunan menggunakan tata bahasa, tentukan bahwa string 010110 diterima oleh bahasa L1
  • 272. 48 Referensi • John E. Hopcroft, Rajeev Motwani, Jeffrey D. Ullman. 2001. Introduction to Automata Theory, Languange, and Computation. Edisi ke-2. Addison-Wesley.
  • 273. Thank you Computer Science Departement FMIPA-IPB Kampus Darmaga Jl. Meranti Wing 20 Level V,Bogor, Indonesia Phone/Fax: +62 251 8625584 http://cs.ipb.ac.id/ 49