Pertemuan 2 Pembuktian Formal dan Konsep TBO (lanjutan)

Download Report

Transcript Pertemuan 2 Pembuktian Formal dan Konsep TBO (lanjutan)

Pertemuan 2
Konsep dalam Teori Otomata
dan Pembuktian Formal
Teori Bahasa dan Otomata (KOM208)
SKS: 3(3-0)
TIK, Subtopik dan Waktu Penyajian
• Tinjauan Instruksional Khusus:
– Mahasiswa mengetahui gambaran umum teori otomata dan akan
dapat menjelaskan metode-metode pembuktian formal.
• Subtopik:
– Pengantar Finite Automata
– Representasi struktural
– Pembuktian Deduktif
– Pembuktian menggunakan teori himpunan, kontrapositif,
kontradiksi dan counterexample.
– Pembuktian Induktif
– Alfabet, string dan bahasa
• Waktu penyajian: 2 x 150 menit
Pembuktian Menggunakan
Teori Himpunan
• Jika E dan F menyatakan himpunan,
pernyataan E = F berarti bahwa himpunan
yang dinyatakan adalah sama.
• Bahwa setiap elemen dalam himpunan yang
dinyatakan oleh E adalah dalam himpunan
yang dinyatakan oleh F, dan sebaliknya.
Contoh 5
• Buktikan bahwa hukum distributif berikut
benar: R  (S  T) = (R  S)  (R  T)
• Bukti:
• Dalam pernyataan di atas, dinyatakan
E = R  (S  T)
F = (R  S)  (R  T)
Contoh 5 (lanjutan)
() Jika x  E maka x  F
Langkah
Pernyataan
Justifikasi
1
x  R  (S  T)
Diberikan (hipotesa)
2
x  R atau x  S  T
(1) dan definisi union
3
x  R atau (x  S dan x  T)
(2) dan definisi interseksi
4
x  (R  S)
(3) dan definisi union
5
x  (R  T)
(3) dan definisi union
6
x  (R  S)  (R  T)
(4), (5), dan definisi interseksi
Contoh 5 (Lanjutan)
• () Jika x  F maka x  E
Langkah
Pernyataan
Justifikasi
1
x  (R  S)  (R  T)
Diberikan (hipotesa)
2
x  (R  S)
(1) dan definisi interseksi
3
x  (R  T)
(1) dan definisi interseksi
4
x  R atau (x  S dan x  T)
(2),(3) dan penalaran tentang union
5
x  R atau x  S  T
(4) dan definisi interseksi
6
x  R  (S  T)
(5), dan definisi union
Pembuktian Menggunakan Kontradiksi
• Dimulai dengan mengasumsikan hipotesi H dan
negasi dari kesimpulan C.
• Lengkapi pembuktian dengan menunjukkan
bahwa sesuatu pernyataan diketahui salah setelah
diturunkan secara logis dari H dan bukan C.
Contoh 6
• Buktikan dengan menggunakan kontradiksi bahwa teorema
berkut benar:
– Misal S adalah subset berhingga dari himpunan tak
berhingga U,
– Misalkan T adalah komplemen dari S terhadap U,
– Maka T tak berhingga.
• Hipotesis: H adalah “U adalah himpunan tak hingga”, “S
adalah subset berhingga dari U”, dan “T adalah komplemen
dari S terhadap U”.
• Kesimpulan: C adalah “ T adalah tak berhingga”.
Contoh 6 (Lanjutan)
• Bukti dengan kontradiksi:
• Dengan menggunakan kontradiksi, kita asumsikan “bukan
C” yaitu asumsikan bahwa T adalah berhingga.
• Telah diasumsikan bahwa
– S dan T adalah berhingga karena S dan T berhingga
– T adalah komplemen dari S terhadap U,
maka haruslah U berhingga.
• Tetapi karena U dalam hipotesa dinyatakan tak hingga, dan
himpunan tidak dapat berhingga dan tak berhingga
sekaligus, maka kita telah membuktikan pernyataan logis
salah.
Pembuktian dengan Counterexample
• Kadang-kadang kita ingin membuktikan bahwa suatu
pernyataan bukan merupakan teorema,
• Seringkali lebih mudah membuktikan bahwa suatu
pernyataan bukan teorema daripada membuktikan bahwa
suatu pernyataan adalah teorema.
• Contoh 7:
Apakah pernyataan berikut benar
Semua bilangan prima adalah ganjil.
• Bukti:
– 2 adalah bilangan prima, tetapi 2 adalah genap.
– Dalam pembuktian tersebut, kita mencari
counterexample yang mengakibatkan pernyataan tidak
benar.
Pembuktian dengan Kontrapositif
• Bentuk kontrapositif dari pernyataan “IF H THEN C” adalah
“IF not C THEN not H”.
• Pernyataan dan kontrapositifnya adalah keduanya benar
atau keduanya salah sehingga kita dapat membuktikan
salah satunya untuk membuktikan yang lain.
• Teorema dalam Contoh 3:
Jika x  4 maka 2x  x2,
memiliki bentuk kontrapositif :
Jika tidak 2x  x2 maka tidak x  4
atau
Jika 2x < x2 maka x < 4
Pembuktian Induktif
• Pembuktian induktif biasanya digunakan dalam
pembuktian yang melibatkan objek yang
didefinisikan secara rekursif.
• Pembuktian induktif yang sering dijumpai
berhubungan dengan integer.
• Dalam teori otomata, pembuktian induktif juga
diperlukan untuk konsep yang didefinisikan secara
rekursif seperti tree dan ekspresi regular.
Induksi pada integer
• Anggap diberikan pernyataan S(n) untuk dibuktikan dimana
n adalah integer.
• Pendekatan umum untuk membuktikan S(n) benar adalah
membuktikan
– Basis, dimana kita menunjukkan S(i) untuk integer i
tertentu, biasanya i = 0 atau i = 1.
– Langkah induktif, dimana kita mengasumsikan n  i,
dimana i adalah integer basis dan tunjukkan bahwa
“jika S(n) maka S(n + 1).
Induksi Struktural
• Dalam teori otomata, terdapat beberapa struktur
yang didefinisikan secara rekursif, sebagai contoh
tree dan ekspresi.
• Seperti induksi integer,
– semua definisi rekursif memiliki basis case, dimana satu
atau lebih struktur dasar didefinisikan, dan
– langkah induktif, dimana struktur yang kompleks
didefinisikan dalam bentuk struktur yang didefinisikan
sebelumnya.
Contoh 7
• Berikut adalah definisi rekursif dari tree:
– Basis : Sebuah node tunggal adalah tree, dan node
tersebut adalah akar dari tree.
– Induksi : Jika T1, T2,...,Tk adalah tree
• Tree yang baru dapat dibentuk
dengan cara sebagai berikut :
– Mulai dengan node baru N, yang
merupakan akar dari tree.
– Tambahkan salinan dari semua tree T1,
T2,...,Tk.
– Tambahkan edge-edge dari node N ke
akar-akar dari setiap tree T1, T2,...,Tk.
N
T1
T2
...
Tk
Contoh 8
• Berikut adalah definisi rekursif dari ekspresi yang
menggunakan operator aritmatik  dan , dimana
operand-nya adalah bilangan atau variabel.
– Basis : Bilangan atau huruf (yaitu variabel) adalah
ekspresi.
– Induksi : Jika E dan F adalah ekspresi, maka E + F, E * F
dan (E) juga ekspresi.
• Contoh, 2 dan x adalah ekspresi dari basis,
langkah induktif menyatakan bahwa
x + 2, (x + 2) dan 2 * (x + 2) adalah ekspresi.
Contoh 8 (lanjutan)
Bukti:
• Misalkan S(x) adalah pernyataan tentang struktur x
yang didefinisikan oleh definisi rekursif tertentu.
• Basis: Buktikan S(x) untuk struktur basis x.
• Langkah induktif:
– Ambil suatu struktur x berdasarkan definisi rekursif
dibentuk dari Y1, Y2,...,Yk.
– Asumsikan bahwa pernyataan S(Y1), S(Y2) ,...,S(Yk) dan
gunakan pernyataan ini untuk membuktikan S(x).
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 9
• 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 10
• Bahasa Inggris, yang merupakan koleksi dari katakata 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 11
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  , dan suatu a  , axa a  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. AddisonWesley
• Martin J. C. 2003. Introduction to Languanges
and The Theory of Computation. McGraw-Hill.