520 likes | 1.12k Views
Rekursi dan Relasi Rekurens. Bahan Kuliah IF2120 Matematika Diskrit Oleh : Rinaldi MUnir. Program Studi Informatika Sekolah Teknik Elektro dan Informatika (STEI) ITB. Rekursi. Sebuah objek dikatakan rekursif ( recursive ) jika ia didefinisikan dalam terminologi dirinya sendiri .
E N D
RekursidanRelasiRekurens BahanKuliah IF2120 MatematikaDiskrit Oleh: RinaldiMUnir Program StudiInformatika SekolahTeknikElektrodanInformatika (STEI) ITB
Rekursi • Sebuahobjekdikatakanrekursif (recursive) jikaiadidefinisikandalamterminologidirinyasendiri. • Prosesmendefinisikanobjekdalamterminologidirinyasendiridisebutrekursi (recursion). • Perhatikantigabuahgambarpadatigaslideberikutini.
FungsiRekursif • Fungsirekursifdidefinisikanolehduabagian: (i) Basis • Bagian yang berisi nilai fungsi yang terdefinisi secara eksplisit. • Bagian ini juga sekaligus menghentikan rekursif (dan memberikan sebuah nilai yang terdefinisi pada fungsi rekursif). (ii) Rekurens • Bagian ini mendefinisikan fungsi dalam terminologi dirinya sendiri. • Berisi kaidah untuk menemukan nilai fungsi pada suatu input dari nilai-nilai lainnya pada input yang lebih kecil.
basis • Contoh 1: Misalkanf didefinsikansecararekusifsbb Tentukannilai f(4)! Solusi: f(4) = 2f(3) + 4 = 2(2f(2) + 4) + 4 = 2(2(2f(1) + 4) + 4) + 4 = 2(2(2(2f(0) + 4) + 4) + 4) + 4 = 2(2(2(23 + 4) + 4) + 4) + 4 = 2(2(2(10) + 4) + 4) + 4 = 2(2(24) + 4) + 4 = 2(52) + 4 = 108 rekurens
Cara lain menghitungnya: f(0) = 3 f(1) = 2f(0) + 4 = 2 3 + 4 = 10 f(2) = 2f(1) + 4 = 2 10 + 4 = 24 f(3) = 2f(2) + 4 = 2 24 + 4 = 52 f(4) = 2f(3) + 4 = 2 52 + 4 = 108 Jadi, f(3) = 108.
Contoh 2: Nyatakann! dalamdefinisirekursif Solusi: Misalkan f(n) = n!, maka Menghitung 5! secararekursifadalah: 5! = 5 4! = 5 4 3! = 5 4 3 2! = 5 4 3 2 1! = 5 4 3 2 1 0! = 5 4 3 2 1 1 = 120
Algoritmamenghitungfaktorial: functionFaktorial (inputn :integer)integer { mengembalikannilai n!; basis : jika n = 0, maka 0! = 1 rekurens: jika n > 0, maka n! = n (n-1)! } DEKLARASI - ALGORITMA: ifn = 0 then return 1 { basis } else returnn * Faktorial(n– 1){ rekurens } end
Contoh 3: Barisan Fibonacci 0, 1, 1, 2, 3, 5, 8, 11, 19, …. Dapatdinyatakansecararekursifsebagaiberikut: • Contoh 4: Fungsi (polinom) Chebysevdinyatakansebagai
Contoh 5: Deretdidefinisikansecararekursifsebagaiberikut: sehingga
Latihan 1. Definisikanansecararekursif , yang dalamhalini a adalahbilanganriiltidak-noldannadalahbilanganbulattidak-negatif. 2. Nyatakana bsecararekursif, yang dalamhaliniadanb adalahbilanganbulatpositif. (Solusinyaadasetelah slide berikut!)
Solusi: 1. sehingga: 2.
HimpunanRekursif • String adalahrangkaiansejumlahkarakter Contoh: ‘itb’ disusunolehkarakteri, t,dan b ‘informatika’ disusunolehkarakteri, n, f, o, r, m, a, t, i, k, a • String kosong (null string) atau ‘’ adalah string denganpanjangnol . Notasi: • Alfabetadalahhimpunankarakter yang elemen-elemennyaadalahpenyusun string. Notasi: Contoh: = {0, 1}, = {a, b, c, …, z}
Misalkan* adalahhimpunan string yang dibentukdarialfabet , maka * dapatdidefinisikansecararekursifsebagaiberikut: (i) Basis: * (ii) Rekurens: Jikaw *danx , makawx * • Contoh 6: Misalkan = {0, 1}, makaelemen-elemen * dibentuksebagaiberikut: (i) (basis) (ii) 0 + = 0, 1 + = 1 0 + 1 = 01, 0 + 0 = 00, 1 + 0 = 10, 0 + 0 = 00, 1 + 1 = 11 00 + 1 = 001, 010, 110, 1110, 110001, ….dst
Sebuahstringdibentukdaripenyambungan (concatenation) sebuah string dengan string lain. Contoh: ‘a’ ‘b’ = ‘ab’ ‘w’ ‘xyz’ = ‘wxyz’ ‘itb’ ‘ ‘ = ‘itb ‘ (tandamenyatakanconcatenation) • Penggabunganduabuah string dapatdidefinisikansecararekursifsebagaiberikut: (i) Basis: Jikaw *, makaw = w, yang dalamhalini adalah string kosong (ii) Rekurens: Jikaw1 *danw2 *danx , maka w1w2 x = (w1w2) x
Panjangsebuah string adalahbanyaknyakarakterdidalam string tersebut. Contoh: ‘itb’ panjangnya 3 ‘informatika’ panjangnya 11 (string kosong) panjangnya 0 • Panjang string (disimbolkandengan L) dapatdidefinisikansecararekursif: (i) Basis: L() = 0 (ii) Rekurens: L(wx) = L(w) + 1 jikaw *danx
StrukturRekursif • Struktur data yang pentingdalamkomputeradalahpohonbiner (binary tree).
Simpul (node) padapohonbinermempunyai paling banyakduabuahanak. • Jumlahanakpadasetiapsimpulbisa 1, 2, atau 0. • Simpul yang mempunyaianakdisebutsimpulcabang (branch node) atausimpuldalam (internal node) • Simpul yang tidakmempunyaianakdisebutsimpuldaun (leave).
Pohonbineradalahstruktur yang rekursif, sebabsetiapsimpulmempunyaicabang yang jugaberupapohon. Setiapcabangdisebutupapohon (subtree).
Olehkarenaitu, pohondapatdidefinisikansecararekursifsebagariberikut: (i) Basis: kosongadalahpohonbiner (ii) Rekurens: Jika T1 dan T2 adalah pohon biner, maka adalah pohon biner T1T2
Prosespembentukanpohonbinersecararekursif: (i) (ii)
BarisanRekursif • Perhatikanbarisanbilanganberikutini: 1, 2, 4, 8, 16, 64, … Setiapelemenke-nuntukn = 0, 1, 2, … merupakanhasilperpangkatan 2 dengann, atauan= 2n. Secararekursif, setiapelemenke-nmerupakanhasil kali elemensebelumnyadengan 2, atauan= 2an – 1. Basis: a0 = 1 Rekurens: an= 2an – 1.
Contoh 7: Kolonibakteridimulaidari lima buahbakteri. Setiapbakterimembelahdirimenjadiduabakteribarusetiapsatu jam. Berapajumlahbakteribarusesudah4 jam? Misalkanan = jumlahbakterisetelahn jam, yang dapatdinyatakandalamrelasirekursifsebagaiberikut: n = 1 jumlahbakteri = a1 = 2a0 = 2 5 = 10 n = 2 jumlahbakteri = a2 = 2a1 = 2 10 = 20 n = 3 jumlahbakteri = a3 = 2a2 = 2 20 = 40 n = 4 jumlahbakteri = a4 = 2a3 = 2 40 = 80 Jadi, setelah 4 jam terdapat 80 buahbakteri
RelasiRekurens • Barisan (sequence) a0, a1, a2, …, andilambangkandengan {an} • Elemenbarisanke-n, yaituan, dapatditentukandarisuatupersamaan. • Bilapersamaan yang mengekspresikanandinyatakansecararekursifdalamsatuataulebihtermelemensebelumnya, yaitua0, a1, a2, …, an–1, makapersamaantersebutdinamakanrelasirekurens. Contoh: an = 2an–1+ 1 an= an–1 + 2an–2 an = 2an–1 – an–2
Kondisiawal(initial conditions) suatubarisanadalahsatuataulebihnilai yang diperlukanuntukmemulaimenghitungelemen-elemenselanjutnya. Contoh: an = 2an–1+ 1; a0 = 1 an= an–1 + 2an–2 ; a0 = 1 dana1 = 2 • Karenarelasirekurensmenyatakandefinisibarisansecararekursif, makakondisiawalmerupakanlangkah basis padadefinisirekursiftersebut. • Contoh 8. Barisan Fibonacci 0, 1, 1, 2, 3, 5, 8, 13, … dapatdinyatakandenganrelasirekurens fn = fn–1 + fn–2 ; f0 = 0 danf1 = 1 • Kondisiawalsecaraunikmenentukanelemen-elemenbarisan. Kondisiawal yang berbedaakanmenghasilkanelemen-elemenbarisan yang berbeda pula.
Solusidarisebuahrelasirekurensadalahsebuah formula yang tidakmelibatkanlagitermrekursif. Formula tersebutmemenuhirelasirekurens yang dimaksud. • Contoh9: Misalkan {an} adalahbarisan yang memenuhirelasirekurensberikut: an = 2an–1 – an–2 ; a0 = 1 dana1 = 2 Periksaapakahan = 3nmerupakansolusirelasirekurenstersebut. Penyelesaian: 2an–1 – an–2 = 2[3(n – 1)] – 3(n – 2) = 6n – 6 – 3n + 6 = 3n = an Jadi, an = 3nmerupakansolusidarirelasirekurenstersebut.
Apakahan = 2nmerupakansolusirelasirekurens an = 2an–1 – an–2 ; a0 = 1 dana1 = 2? Penyelesaian: 2an–1 – an–2 = 22n–1 – 2n–2 = 2n–1 + 1 – 2n–2 = 2n – 2n–2 2n Jadi, an = 2nbukanmerupakansolusirelasirekurenstsb. Cara lain: Karenaa0 = 1 dana1 = 2, makadapatdihitung a2 = 2a1 – a0 = 22 – 1 = 3 Dari rumusan = 2ndapatdihitunga0 = 20 = 1, a1 = 21 = 2, dana2 = 22 = 4 Karena 3 4, makaan = 2nbukanmerupakansolusi darirelasirekurenstsb.
PemodelandenganRelasiRekurens • Bungamajemuk. Contoh 10. Misalkanuangsebanyak Rp10.000 disimpandi bank dengansistembungaberbungadenganbesarbunga 11% per tahun. Berapabanyakuangsetelah 30 tahun? MisalkanPnmenyatakannilaiuangsetalahntahun. Nilaiuangsetelahntahunsamadengannilaiuangtahunsebelumnyaditambahdenganbungauang: Pn = Pn–1 + 0,11 Pn–1 ; P0 = 10.000
SolusirelasirekurensPn = Pn–1 + 0,11 Pn–1 ; P0 = 10.000 dapatdipecahkansebagaiberikut: Pn = Pn–1 + 0,11 Pn–1 = (1,11) Pn–1 = (1,11)[(1,11)Pn–2] = (1,11)2Pn–2 = (1,11)2 [(1,11) Pn–3] = (1,11)3Pn–3 = … = (1,11)nP0 Jadi, Pn=(1,11)n P0 = 10.000 (1,11)n Setelah 30 tahun, banyaknyauangadalah P30=10.000 (1,11)30 = Rp228.922,97
2. Menara Hanoi (The Tower of Hanoi) Contoh 11. MenaraHanoi adalahsebuahpuzzle yang terkenalpadaakhirabad 19. Puzzle iniditemukanolehmatematikawanPerancis, Edouard Lucas. Dikisahkanbahwadikota Hanoi, Vietnam, terdapattigabuahtiangtegaksetinggi 5 meter dan 64 buahpiringan (disk) dariberbagaiukuran. Tiappiringanmempunyailubangditengahnya yang memungkinkannyauntukdimasukkankedalamtiang. Padamulanyapiringantersebuttersusunpadasebuahtiangsedemikianrupasehinggapiringan yang dibawahmempunyaiukuranlebihbesardaripadaukuranpiringandiatasnya. PendetaBudhamemberipertanyaankepadamurid-muridnyanya: bagaimanamemindahkanseluruhpiringantersebutkesebuahtiang yang lain; setiap kali hanyasatupiringan yang bolehdipindahkan, tetapitidakbolehadapiringanbesardiataspiringankecil. Tiang yang satulagidapatdipakaisebagaitempatperalihandengantetapmemegangaturan yang telahdisebutkan. MenurutlegendapendetaBudha, bilapemindahanseluruhpiringanituberhasildilakukan, makaduniaakankiamat!
Secaraumum, untukn piringan, penyelesaiandengancaraberpikirrekursifadalahsebagaiberikut: Kita harusmemindahkanpiringan paling bawahterlebihdahuluketiangBsebagai alas bagipiringan yang lain. Untukmencapaimaksuddemikian, berpikirlahsecararekursif: pindahkann – 1 piringanteratasdariA keC,lalupindahkanpiringan paling bawahdariAkeB,lalupindahkann – 1 piringandariCkeB. pindahkan n– 1 piringandari A ke C pindahkan 1 piringanterbawahdari A ke B pindahkan n– 1 piringandari C ke B Selanjutnyadengantetapberpikirrekursif-pekerjaanmemindahkann – 1 piringandarisebuahtiangketiang lain dapatdibayangkansebagaimemindahkann – 2 piringanantarakeduatiangtersebut, lalumemindahkanpiringanterbawahdarisebuahtiangketiang lain, begituseterusnya.
MisalkanHnmenyatakanjumlahperpindahanpiringan yang dibutuhkanuntukmemecahkanteka-tekiMenara Hanoi. pindahkan n– 1 piringandari A ke C Hn-1 kali pindahkan 1 piringanterbawahdari A ke B 1 kali pindahkan n– 1 piringandari C ke B Hn-1 kali Makajumlahperpindahan yang terjadiadalah: Hn= 2Hn-1+ 1 dengankondisiawalH1 = 1
Penyelesaianrelasirekurens: Hn= 2Hn-1+ 1 = 2(2Hn-2 + 1) + 1 = 22 Hn-2+ 2 + 1 = 22 (2Hn-3+ 1) + 2 + 1 = 23 Hn-3+ 22 + 2 + 1 = 2n-1 H1+ 2n-2 + 2n-3 + … + 2 + 1 = 2n-1 + 2n-2 + 2n-3 + … + 2 + 1 deretgeometri = 2n – 1 • Untuk n = 64 piringan, jumlahperpindahanpiringan yang terjadiadalah H64 = 264 – 1 = 18.446.744.073.709.551.615
Jikasatu kali pemindahanpiringanmembutuhkanwaktu 1 detik, makawaktu yang diperlukanadalah 18.446.744.073.709.551.615 detik atausetaradengan 584.942.417.355 tahunatausekitar 584 milyartahun! • Karenaitu, legenda yang menyatakanbahwaduniaakankiamatbilaorangberhasilmemindahkan 64 piringandimenara Hanoi adajugabenarnya, karena 584 milyartahuntahunadalahwaktu yang sangat lama, duniasemakintua, danakhirnyahancur. Wallahualam
PenyelesaianRelasiRekurens • Relasirekurensdapatdiselesaikansecaraiteratifataudenganmetode yang sistematis. • Secaraiteratifmisalnyapadacontohbungamajemuk (Contoh 10) danMenara Hanoi (Contoh 11). • Secarasistematisadalahuntukrelasirekurens yang berbentukhomogenlanjar (linear homogeneous). • Relasirekurensdikatakanhomogenlanjarjikaberbentuk an= c1an–1 + c2an–2 + … + ckan–k yang dalamhalini c1, c2, …, ckadalahbilanganriildan ck 0.
Contoh 12. Pn = (1,11) Pn–1 homogenlanjar fn= fn–1 + fn–2 homogenlanjar an = 2an–1 – a2n–2 tidakhomogenlanjar Hn= 2Hn–1 – 1 tidakhomogenlanjar an = nan–1 tidakhomogenlanjar Penjelasan: Hn= 2Hn–1 – 1 tidakhomogenlanjarkarenaterm -1 tidakdikalidengannilaiHjuntuksembarangj an = nan–1 tidakhomogenlanjarkarenakoefisiennyabukankonstanta.
Solusirelasirekurens yang berbentukhomogenlanjaradalahmencaribentuk an= rn yang dalamhalini r adalahkonstanta. • Sulihkanan= rnkedalamrelasirekurenhomugenlanjar: an= c1an–1 + c2an–2 + … + ckan–k menjadi rn= c1rn–1 + c2rn–2 + … + ckrn–k
Bagikeduaruasdenganrn–k , menghasilkan rk– c1rk–1 – c2rk–2 –… – ck – 1 r – ck = 0 • Persamaandiatasdinamakanpersamaankarakteristikdarirelasirekurens. • Solusipersamaankarakteristikdisebutakar-akarkarakteristik, danmerupakankomponensolusirelasirekurens yang kitacari (an= rn).
Untukrelasirekurenshomogenlanjarderajatk = 2, an= c1an–1 + c2an–2 persamaankarakteristiknyaberbentuk: r2– c1r– c2 = 0 • Akarpersamaankarakteristikadalahr1danr2. • Teorema 1: Barisan{an} adalahsolusirelasirekurensan = c1an–1 + c2an–2 jikadanhanyajikaan = 1rn1 + 2rn2 untuk n = 0, 1, 2, … dengan1 dan2adalahkonstan.
Contoh 13. Tentukansolusirelasirekurensberikut: an = an–1 + 2an–2; a0 = 2 dana1 = 7? Penyelesaian: Persamaankarakteristik: r2– r– 2= 0. Akar-akarnya: (r – 2) (r + 1) = 0 r1= 2 danr2= -1 an= 1rn1 + 2rn2 an = 12n+ 2(-1)n a0= 2 a0 = 2 = 120+ 2(-1)0 = 1 + 2 a1= 7 a1= 7 = 121+ 2(-1)1 = 1 – 2 Diperolehduapersamaan: 1 + 2= 2 dan1 – 2= 7, solusinyaadalah1 = 3 dan2= –1 Jadi, solusirelasirekurensadalah: an= 32n – (-1)n
Jikapersamaankarakteristikmemilikiduaakar yang sama (akarkembar, r1 = r2), makaTeorema 1 tidakdapatdipakai. TerapkanTeorema 2 berikutini. • Teorema2: Misalkanr2– c1r– c2 = 0 mempunyaiakarkembarr0. Barisan{an} adalahsolusirelasirekurensan = c1an–1 + c2an–2 jikadanhanyajikaan = 1rn0 + 2nrn0 untukn = 0, 1, 2, … dengan1 dan2adalahkonstan. • Contoh14. Tentukansolusirelasirekurensberikut: an = 6an–1 – 9an–2; a0 = 1 dana1 = 6? Penyelesaian:
Penyelesaian: Persamaankarakteristik: r2– 6r+ 9= 0. Akar-akarnya: (r – 3)(r– 3 ) = 0 r1 = r2= 3 r0 an = 1rn0 + 2nrn0 an = 13n+ 2n3n a0= 1 a0 = 1 = 130+ 2 030 = 1 a1 = 6 a1 = 6 = 131+ 2131 = 31 + 32 Diperolehduapersamaan: 1 = 1 dan31 + 32= 6, solusinyaadalah1 = 1 dan2= 1 Jadi, solusirelasirekurensadalah: an = 3n + n3n
Latihan. Selesaikanrelasirekurensberikut: (a) an = 2an–1 ; a0 = 3 (b) an = 5an–1 – 6an–2; a0 = 1 dana1= 0?