5.3 Recursive Definitions and Structural Induction · PDF fileBarisan Yang Didefinisikan...

28
5.3 RECURSIVE DEFINITIONS AND STRUCTURAL INDUCTION

Transcript of 5.3 Recursive Definitions and Structural Induction · PDF fileBarisan Yang Didefinisikan...

Page 1: 5.3 Recursive Definitions and Structural Induction · PDF fileBarisan Yang Didefinisikan Secara Rekursif Contoh 3. ... Kompleksitas Algoritma gcd(a,b) procedure gcd(a,b: bulat) x:=

5.3 RECURSIVE DEFINITIONS AND STRUCTURAL INDUCTION

Page 2: 5.3 Recursive Definitions and Structural Induction · PDF fileBarisan Yang Didefinisikan Secara Rekursif Contoh 3. ... Kompleksitas Algoritma gcd(a,b) procedure gcd(a,b: bulat) x:=

Rekursif

Ada kalanya kita mengalamikesulitan untuk mendefinisikansuatu obyek secara eksplisit.

Mungkin lebih mudah untukmendefinisikan obyek tersebutdengan menggunakan dirinyasendiri. Ini merupakan prosesrekursif.

Kita dapat mendefinisikanbarisan, fungsi dan himpunansecara rekursif.

Page 3: 5.3 Recursive Definitions and Structural Induction · PDF fileBarisan Yang Didefinisikan Secara Rekursif Contoh 3. ... Kompleksitas Algoritma gcd(a,b) procedure gcd(a,b: bulat) x:=

Fungsi yang Didefinisikan secara Rekursif

Langkah-langkah untuk mendefinisikan fungsidengan domain bilangan cacah secara rekursif:

1.Langkah basis: Definisikan nilai fungsi padasaat nol.

2.Langkah rekursif: Berikan aturan untukmencari nilai fungsi untuk setiap bilanganbulat berdasarkan nilai fungsi pada bilanganbulat yang lebih kecil

Page 4: 5.3 Recursive Definitions and Structural Induction · PDF fileBarisan Yang Didefinisikan Secara Rekursif Contoh 3. ... Kompleksitas Algoritma gcd(a,b) procedure gcd(a,b: bulat) x:=

f(0) = 3

f(n + 1) = 2f(n) + 3

Maka

f(0) = 3

f(1) = 2f(0) + 3 = 23 + 3 = 9

f(2) = 2f(1) + 3 = 29 + 3 = 21

f(3) = 2f(2) + 3 = 221 + 3 = 45

f(4) = 2f(3) + 3 = 245 + 3 = 93

Contoh 1

Page 5: 5.3 Recursive Definitions and Structural Induction · PDF fileBarisan Yang Didefinisikan Secara Rekursif Contoh 3. ... Kompleksitas Algoritma gcd(a,b) procedure gcd(a,b: bulat) x:=

Bagaimana kita dapat mendefinisikan fungsi faktorialf(n) = n! secara rekursif?

f(0) = 1

Karena (n+1)! = n! (n+1) maka

f(n + 1) = (n + 1)f(n)

f(0) = 1

f(1) = 1 f(0) = 1 1 = 1

f(2) = 2 f(1) = 2 1 = 2

f(3) = 3 f(2) = 3 2 = 6

f(4) = 4 f(3) = 4 6 = 24

Contoh 2

Page 6: 5.3 Recursive Definitions and Structural Induction · PDF fileBarisan Yang Didefinisikan Secara Rekursif Contoh 3. ... Kompleksitas Algoritma gcd(a,b) procedure gcd(a,b: bulat) x:=

Soal 1

Bagaimana kita dapat mendefinisikan fungsi

secara rekursif?

n

k

kanf0

)(

Page 7: 5.3 Recursive Definitions and Structural Induction · PDF fileBarisan Yang Didefinisikan Secara Rekursif Contoh 3. ... Kompleksitas Algoritma gcd(a,b) procedure gcd(a,b: bulat) x:=

Barisan Yang Didefinisikan Secara Rekursif

Contoh 3.

Barisan bilangan pangkat dari 2

an = 2n untuk n = 0, 1, 2, … .

Barisan ini dapat didefinisikan secara rekursif:

a0 = 1

an+1 = 2an untuk n = 0, 1, 2, …

Langkah-langkah untuk mendefinisikan barisan secara rekursif:

1. Langkah basis: Spesifikasi anggota awal.

2. Langkah rekursif: Berikan aturan untuk membangun anggotabaru dari anggota yang telah ada.

Page 8: 5.3 Recursive Definitions and Structural Induction · PDF fileBarisan Yang Didefinisikan Secara Rekursif Contoh 3. ... Kompleksitas Algoritma gcd(a,b) procedure gcd(a,b: bulat) x:=

Berikan definisi rekursif dari an=rn, dengan rN,

r≠0 dan n bilangan bulat positif.

Solusi.

Definisikan a0=r0=1

dan an+1=r . an untuk n = 0, 1, 2, …

Contoh 4

Page 9: 5.3 Recursive Definitions and Structural Induction · PDF fileBarisan Yang Didefinisikan Secara Rekursif Contoh 3. ... Kompleksitas Algoritma gcd(a,b) procedure gcd(a,b: bulat) x:=

Contoh 5

Barisan Hanoi0, 1, 3, 7, 15, 31, ...

h0 = 0hn = 2hn−1 + 1 untuk n ≥ 1

Barisan Fibonacci0, 1, 1, 2, 3, 5, 8, …

f0 = 0, f1 = 1fn = fn-1+ fn-2, untuk n ≥ 2

Tunjukkan bahwa untuk n 3, fn > n-2 dengan = (1+√5)/2.

Page 10: 5.3 Recursive Definitions and Structural Induction · PDF fileBarisan Yang Didefinisikan Secara Rekursif Contoh 3. ... Kompleksitas Algoritma gcd(a,b) procedure gcd(a,b: bulat) x:=

Kompleksitas Algoritma gcd(a,b)

procedure gcd(a,b: bulat)

x := a; y := b;

while y ≠ 0

r := x mod y

x := y

y := r

return x (x = gcd(a,b))

Misalkan a,b dan a ≥ b.

Misalkan r0 = a dan r1= b. Diperoleh:

r0 = r1 q1 + r2 0 ≤ r2 < r1 ,

r1 = r2 q2 + r3 0 ≤ r3 < r2 ,

:

:

rn -2 = rn -1 qn -1 + rn 0 ≤ rn < rn-1,

rn-1 = rn qn .

Algoritma ini didasarkan pada Lemma berikut:Lemma Misalkan a = bq + r, dengan a, b, q, dan r bilangan bulat. Maka, gcd(a,b) = gcd(b,r).

Page 11: 5.3 Recursive Definitions and Structural Induction · PDF fileBarisan Yang Didefinisikan Secara Rekursif Contoh 3. ... Kompleksitas Algoritma gcd(a,b) procedure gcd(a,b: bulat) x:=

Kompleksitas Algoritma gcd(a,b)

Lemma Misalkan a = bq + r, dengan a, b, q, dan r bilanganbulat. Maka, gcd(a,b) = gcd(b,r).

Bukti

• Misalkan d|a dan d|b. Maka, d|r, karena r = a – bq. Jadi, setiap pembagi bersama dari a dan b juga pembagibersama bagi b dan r.

• Misalkan d|b dan d|r. Maka, d|a, karena a = bq + r. Jadi, setiap pembagi bersama dari b dan r juga pembagibersama bagi a dan b.

• Jadi, gcd(a,b)=gcd(b,r).

Page 12: 5.3 Recursive Definitions and Structural Induction · PDF fileBarisan Yang Didefinisikan Secara Rekursif Contoh 3. ... Kompleksitas Algoritma gcd(a,b) procedure gcd(a,b: bulat) x:=

Kompleksitas Algoritma gcd(a,b)Teorema Lame. Misalkan a, b bulat. Maka, banyaknya pembagianyang digunakan dalam Algoritma Euclid gcd(a,b) lebih kecil atausama dengan 5 kali banyaknya digit desimal dari b.

Algoritma Euclid

r0 = r1 q1 + r2 0 ≤ r2 < r1 ,

r1 = r2 q2 + r3 0 ≤ r3 < r2 ,

:

:

rn -2 = rn -1 qn -1 + rn 0 ≤ rn < rn-1,

rn-1 = rn qn .

Terdapat n pembagian.

Bilangan q1 , q2 , … , qn - 1 ≥ 1. Dan, qn ≥ 2 karena rn < rn -1 .

rn ≥ 1 = f2 ,

rn-1 ≥ 2rn ≥ 2f2 = f3 ,

rn-2 ≥ rn-1 + rn ≥ f3 + f2 = f4 ,

:

:

r2 ≥ r3 + r4 ≥ fn-1 + fn-2 = fn ,

b = r1 ≥ r2 + r3 ≥ fn + fn-1 = fn+1 .

fn adalah barisan Fibonacci, dan telahditunjukkan bahwa:fn > n-2 dengan = (1+√5)/2.

Page 13: 5.3 Recursive Definitions and Structural Induction · PDF fileBarisan Yang Didefinisikan Secara Rekursif Contoh 3. ... Kompleksitas Algoritma gcd(a,b) procedure gcd(a,b: bulat) x:=

Kompleksitas Algoritma gcd(a,b)

Karena, b = r1 ≥ r2 + r3 ≥ fn + fn-1 = fn+1 , danfn > n-2 dengan = (1+√5)/2, maka, b ≥ fn+1 > n-1.

Ini berarti bahwa log10 b > (n-1) log10 > (n-1)/5, karena log10 ≈ 0.208 > 1/5.

Sehingga, n < 1+ 5log10 b.

Maka, banyaknya pembagian lebih kecil atausama dengan 5 kali banyak digit dari b.

Page 14: 5.3 Recursive Definitions and Structural Induction · PDF fileBarisan Yang Didefinisikan Secara Rekursif Contoh 3. ... Kompleksitas Algoritma gcd(a,b) procedure gcd(a,b: bulat) x:=

Himpunan yang Didefinisikan secara Rekursif

Langkah-langkah dalam mendefinisikan suatuhimpunan secara rekursif:

1.Langkah basis:

Spesifikasi koleksi awal dari anggota

2.Langkah rekursif:

Mendefinisikan aturan konstruksi anggotabaru dari anggota yang telah diketahui

Page 15: 5.3 Recursive Definitions and Structural Induction · PDF fileBarisan Yang Didefinisikan Secara Rekursif Contoh 3. ... Kompleksitas Algoritma gcd(a,b) procedure gcd(a,b: bulat) x:=

Contoh 6

Misalkan S didefinisikan secara rekursif oleh:3 S(x+y) S jika x S dan y S

Maka S adalah himpunan bilangan bulat positif yang habis dibagi 3.

BuktiMisalkan A himpunan yang beranggotakan semuabilangan bulat positif yang habis dibagi 3.Untuk membuktikan bahwa A = S, harus ditunjukkan

A S and S A.

Page 16: 5.3 Recursive Definitions and Structural Induction · PDF fileBarisan Yang Didefinisikan Secara Rekursif Contoh 3. ... Kompleksitas Algoritma gcd(a,b) procedure gcd(a,b: bulat) x:=

Bagian I:

Akan dibuktikan A S, yaitu menunjukkan bahwa setiap bilanganbulat positif yang habis dibagi 3 ada di S (dengan menggunakaninduksi matematika).

Misalkan P(n): proposisi “3n anggota S” untuk setiap n bilangan asli.

1. Langkah basis: P(1) benar, karena 3 S.

2. Langkah induktif:

Asumsikan P(k) benar, yaitu 3k S.

Akan ditunjukkan P(k+1) juga benar, yaitu 3(k+1) S

Karena 3k S dan 3 S, berdasarkan definisi rekursif dari S, 3k+3 = 3(k+1) juga ada di S.

3. Konklusi:

Jadi, setiap bilangan bulat positif yang habis dibagi 3 anggota S.

Jadi, A S.

Contoh 6 (2)

Page 17: 5.3 Recursive Definitions and Structural Induction · PDF fileBarisan Yang Didefinisikan Secara Rekursif Contoh 3. ... Kompleksitas Algoritma gcd(a,b) procedure gcd(a,b: bulat) x:=

Bagian II:

Akan ditunjukkan S A dengan menggunakan definisi rekursif dari S.

Langkah basis:

Akan ditunjukkan setiap anggota awal S ada di A.

Karena 3 habis dibagi 3 maka 3 A.

Langkah rekursif:

Akan ditunjukkan bahwa setiap bilangan bulat yang dibangun dengan mengunakan langkah rekursif juga merupakan anggota A, yaitu

(x+y) A jika x,y S (yang diasumsikan A).

Jika x dan y keduanya di A, maka 3|x dan 3|y. Akibatnya, 3|(x+y).

Jadi, S A.

Dengan demikian, secara keseluruhan, berlaku A = S.

Contoh 6 (3)

Page 18: 5.3 Recursive Definitions and Structural Induction · PDF fileBarisan Yang Didefinisikan Secara Rekursif Contoh 3. ... Kompleksitas Algoritma gcd(a,b) procedure gcd(a,b: bulat) x:=

Induksi Struktural

Dalam membuktikan hasil-hasil yang berkaitan denganhimpunan yang didefinisikan secara rekursif, akan lebih mudahapabila digunakan suatu bentuk induksi matematika yang disebut induksi struktural.

Langkah-langkah dalam induksi struktural:

1. Langkah basis:

Menunjukkan bahwa hasil yang akan dibuktikan berlakuuntuk semua anggota awal.

2. Langkah rekursif:

Menunjukkan bahwa jika hasil yang akan dibuktikan berlakuuntuk anggota-anggota yang digunakan untuk membangunanggota baru, maka hasil tersebut juga berlaku untukanggota yang baru dibangun.

Page 19: 5.3 Recursive Definitions and Structural Induction · PDF fileBarisan Yang Didefinisikan Secara Rekursif Contoh 3. ... Kompleksitas Algoritma gcd(a,b) procedure gcd(a,b: bulat) x:=

Definisi Circular

Definisi 1.

Suatu “definisi” rekursif dikatakan circular jika looping tidak dapat dihentikan.

Contoh 7.

Definisi circular dari Index and Glossary of Knuth, Vol 1.

Circular Definition, 260

see Definition, circular

Definition, circular,

see Circular definition

Page 20: 5.3 Recursive Definitions and Structural Induction · PDF fileBarisan Yang Didefinisikan Secara Rekursif Contoh 3. ... Kompleksitas Algoritma gcd(a,b) procedure gcd(a,b: bulat) x:=

Himpunan String atas Alfabet

Himpunan string * atas alfabet dapat didefinisikan secararekursif oleh:

1.Langkah basis:

* ( adalah string kosong yang tidak memuat simbol)

2.Langkah rekursif:

Jika w * dan x , maka wx *

Contoh 8.

Jika = {0,1} maka string yang merupakan anggota * adalah:

• yang didefinisikan sebagai anggota * dalam langkah basis,

• 0 dan 1 yang dibentuk dalam langkah rekursif pertama,

• 00, 01, 10, dan 11 yang dibentuk dalam langkah rekursifkedua, dst

Page 21: 5.3 Recursive Definitions and Structural Induction · PDF fileBarisan Yang Didefinisikan Secara Rekursif Contoh 3. ... Kompleksitas Algoritma gcd(a,b) procedure gcd(a,b: bulat) x:=

Sebagai operasi dari dua string, konkatenasi didefinisikan secararekursif sebagai:1. Langkah basis:

Jika w *, maka w. = w, dengan string kosong2. Langkah rekursif:

Jika w1 * dan w2 * dan x , makaw1 . (w2 x) = (w1 . w2) x

Konkatenasi Dua String

w1 . w2 seringkali ditulis sebagai w1 w2

Contoh 9.

Konkatenasi dari w1 = meng dan w2 = apa adalah

w1 w2 = mengapa

Page 22: 5.3 Recursive Definitions and Structural Induction · PDF fileBarisan Yang Didefinisikan Secara Rekursif Contoh 3. ... Kompleksitas Algoritma gcd(a,b) procedure gcd(a,b: bulat) x:=

Panjang dari string w, l (w) dapat didefinisikan secara

rekursif oleh:

l () = 0,

l (w x) = l (w) + 1 jika w * dan x .

Panjang String

Soal 2.

Gunakan induksi struktural untuk membuktikan

l (x y) = l (x) + l (y).

Page 23: 5.3 Recursive Definitions and Structural Induction · PDF fileBarisan Yang Didefinisikan Secara Rekursif Contoh 3. ... Kompleksitas Algoritma gcd(a,b) procedure gcd(a,b: bulat) x:=

Induksi yang DiperluasInduksi matematika dapat diperluas untuk membuktikanhasil-hasil mengenai himpunan yang memiliki sifatterurut dengan baik.

Contoh 10.

Pandang himpunan N x N di mana (x1, y1) < (x2, y2) jika x1

< x2, atau x1 = x2 dan y1 < y2.

Setiap subhimpunan dari N x N memiliki elemen terkecil.

Jadi, N x N merupakan himpunan yang terurut denganbaik.

Page 24: 5.3 Recursive Definitions and Structural Induction · PDF fileBarisan Yang Didefinisikan Secara Rekursif Contoh 3. ... Kompleksitas Algoritma gcd(a,b) procedure gcd(a,b: bulat) x:=

Soal 3

Misalkan didefinisikan secara rekursifuntuk (m,n) N x N oleh

dan

nma ,

0 jika,

0dan 0 jika,1

1,

,1

,nna

mnaa

nm

nm

nm

Tunjukkan bahwa

untuk setiap (m,n) N x N.

00,0 a

2/)1(, nnma nm

Page 25: 5.3 Recursive Definitions and Structural Induction · PDF fileBarisan Yang Didefinisikan Secara Rekursif Contoh 3. ... Kompleksitas Algoritma gcd(a,b) procedure gcd(a,b: bulat) x:=

Bahan Test I

• Logika– Proposisi– Predikat dan Kuantifikasi– Kuantifikasi Bersusun– Aturan Inferensi

• Bukti– Metoda Pembuktian– Strategi Pembuktian

• Struktur Diskrit– Himpunan– Fungsi– Barisan

• Algoritma– Algoritma– Pertumbuhan Fungsi– Kompleksitas Algoritma

• Induksi– Induksi Matematika– Induksi Kuat

• Rekursi– Fungsi, Himpunan, Barisan

yang Didefinisikan secaraRekursif

– Induksi Struktural– Induksi yang Diperluas

Page 26: 5.3 Recursive Definitions and Structural Induction · PDF fileBarisan Yang Didefinisikan Secara Rekursif Contoh 3. ... Kompleksitas Algoritma gcd(a,b) procedure gcd(a,b: bulat) x:=

Latihan Soal (1)

1. Misalkan kedua asumsi berikut benar:

1. “Logika itu sulit atau tidak banyak mahasiswa yang menyukai logika.”

2. “Jika matematika mudah, maka logika tidak sulit.”

Berikan alasan mengapa kesimpulan berikut valid berdasarkan dua asumsi di atas.

1. Bahwa matematika tidak mudah, jika banyak mahasiswa yang menyukailogika.

2. Bahwa jika tidak banyak mahasiswa menyukai logika, maka matematika tidakmudah atau logika tidak sulit.

2. Tentukan nilai kebenaran dari pernyataan ”∃x∀y(x ≤ y2)” jika domain adalah

a) himpunan bilangan real positif.

b) himpunan bilangan bulat.

c) himpunan bilangan real tak nol.

Page 27: 5.3 Recursive Definitions and Structural Induction · PDF fileBarisan Yang Didefinisikan Secara Rekursif Contoh 3. ... Kompleksitas Algoritma gcd(a,b) procedure gcd(a,b: bulat) x:=

Latihan Soal (2)

3. Buktikan pernyataan berikut.

Jika x dan y bilangan real, maka max(x, y) + min(x, y) = x + y.

4. Buktikan bahwa persamaan n2 + n3 = 100 tidak memiliki solusi bilanganbulat positif.

5. (a) Tunjukkan bahwa (x3 + 2x)/(2x + 1) adalah O(x2).

(b) Periksa apakah fungsi log(n+1) adalah O(log n).

6. Berikan estimasi big-O untuk banyaknya operasi (penjumlahan atauperkalian) yang digunakan dalam algoritma berikut.

t := 0

for i := 1 to n

for j := 1 to n

t := t + ij

Page 28: 5.3 Recursive Definitions and Structural Induction · PDF fileBarisan Yang Didefinisikan Secara Rekursif Contoh 3. ... Kompleksitas Algoritma gcd(a,b) procedure gcd(a,b: bulat) x:=

Latihan Soal (3)

7. Buktikan bahwa n2 − 7n + 12 adalah bilangantak negatif untuk n bilangan bulat dengan n ≥ 3.

8. Apakah papan catur dengan ukuran 6 x 2n, untuk setiap bulat positif n, dapat ditutupidengan ubin berbentuk L?