Fungsi Pembangkit Permutasi dan Relasi Rekursif Matematika Diskrit
relasi rekursif (full) homogen, non homogen, fungsi pembangkit relasi rekursifDeskripsi lengkap
Fungsi Pembangkit Permutasi dan Relasi Rekursif Matematika DiskritDeskripsi lengkap
MatematikaFull description
Deskripsi lengkap
Deskripsi lengkap
Deskripsi lengkap
Deskripsi lengkap
mmFull description
Deskripsi lengkap
FUNGSI-FUNGSI BAHASA indonesiaDeskripsi lengkap
FUNGSI-FUNGSI BAHASA indonesia
FUNGSI REKURSIF Rekursi adalah teknik yang mengarah ke solusi elegan untuk masalah yang sulit program Menggunakan loop sederhana. Misalkan Anda ingin mencari semua ile di !a"ah direktori yang !erisi kata tertentu. #agaimana Anda memecahkan masalah ini$ Ada !e!erapa cara untuk melakukannya. Se!uah solusi intuiti dan eekti adalah menggunakan rekursi dengan mencari ile dalam su!direktori secara rekursi. %&pohon' digam!arkan dalam Gam!ar ().*' yang digunakan dalam integrasi +,-SI desain yang sangat !esar se!agai /am /aringan distri!usi untuk routing sinyal "aktu ke seluruh !agian chip dengan propagasi penundaan yang sama . #agaimana Anda Anda menulis se!uah program untuk menampilkan %&pohon$ 0endekatan yang !aik adalah dengan menggunakan rekursi.
Untuk menggunakan rekursi adalah untuk program menggunakan metode rekursi&yaitu' menggunakan metode yang memanggil diri mereka sendiri. Rekursi adalah teknik pemrograman yang !erguna. 1alam !e!erapa kasus' memungkinkan Anda untuk mengem!angkan solusi yang alami' mudah' sederhana untuk masalah yang tadinya sulit. #a! ini memperkenalkan konsep dan teknik pemrograman rekursi dan menggam!arkan dengan contoh !agaimana untuk 2!erpikir secara rekursi.3 Studi Kasus: menghitung faktorial Se!uah metode rekursi adalah salah satu yang memanggil dirinya sendiri. #anyak ungsi matematika yang dideinisikan menggunakan rekursi. Mari kita mulai dengan contoh sederhana. Faktorial dari n !ilangan dapat rekursi dideinisikan se!agai !erikut4 )5 6 *7 n5 6 n 8 +n 9 *' n: )5 #agaimana Anda menemukan n5 untuk n yang di!erikan$ Untuk menemukan *5 mudah' karena Anda tahu !ah"a )5 adalah *' dan *5 6 * 8 )5. 1engan asumsi !ah"a Anda tahu +n 9 *5' Anda dapat memperoleh n5 segera dengan menggunakan n 8 +n 9 *5. 1engan demikian' masalah komputasi n5 direduksi men/adi komputasi +n 9 *5. Ketika komputasi +n 9 *5' Anda dapat menerapkan ide yang sama secara rekursi sampai n dikurangi men/adi ). Mari aktorial +n men/adi metode untuk komputasi n5. ;ika Anda memanggil metode dengan n 6 )' segera mengem!alikan hasilnya. Metode ini tahu !agaimana untuk memecahkan kasus yang paling sederhana' yaitu dise!ut se!agai kasus dasar atau kondisi !erhenti. ;ika Anda memanggil metode dengan n: )' itu mengurangi masalah men/adi su!pro!lem untuk menghitung aktorial dari n 9 *. Su!pro!lem pada dasarnya sama dengan masalah asli' tapi le!ih sederhana atau le!ih kecil. Karena
su!pro!lem yang memiliki properti yang sama se!agai masalah asli' Anda dapat memanggil metode dengan !er!eda argumen' yang dise!ut se!agai panggilan rekursi. Algoritma rekursi untuk menghitung aktorial +n secara sederhana dapat digam!arkan se!agai !erikut4 if +n 66 ) return *7 else return n < actorial+n 9 17 A recursive call can result in many more recursive calls, because the method keeps pada mem!agi su!pro!lem ke dalam su!masalah !aru. Untuk metode rekursi untuk mengakhiri' masalah akhirnya harus dikurangi dengan kasus !erhenti' di mana titik metode mengem!alikan hasil ke pemanggil nya. 0emanggil kemudian melakukan perhitungan dan mengem!alikan mengaki!atkan pemanggil sendiri. 0roses ini !erlan/ut sampai hasilnya dikirimkan kem!ali ke aslinya pemanggil. Masalah asli sekarang dapat diselesaikan dengan mengalikan n dengan hasil aktorial +n 9 *. -isting ().* mem!erikan program lengkap yang meminta pengguna untuk memasukkan !ilangan !ulat positi dan menampilkan aktorial untuk nomor terse!ut.
Metode aktorial +!aris *=&(* pada dasarnya adalah ter/emahan langsung dari rekursi 1einisi matematika untuk aktorial ke dalam kode ;a>a. 0anggilan untuk aktorial rekursi karena itu menye!ut dirinya. 0arameter dile"atkan ke pengurangan aktorial hingga mencapai kasus dasar dari ). Anda tahu !agaimana menulis se!uah metode rekursi. #agaimana rekursi ker/a$ Gam!ar ().( mengilustrasikan pelaksanaan panggilan rekursi' dimulai dengan n 6 ?. 0enggunaan ruang stack untuk rekursi panggilan ditun/ukkan pada Gam!ar ().@.
%al ini le!ih sederhana dan le!ih eisien untuk menerapkan metode aktorial menggunakan loop. Namun' kami menggunakan metode aktorial rekursi sini untuk menun/ukkan konsep rekursi. Kemudian dalam !a! ini' kami akan menya/ikan !e!erapa masalah yang inheren rekursi dan sulit untuk dipecahkan tanpa menggunakan rekursi. ;ika rekursi tidak mengurangi masalah dengan cara yang memungkinkan untuk akhirnya !ertemu ke kasus dasar' rekursi tak ter!atas dapat ter/adi. ontoh yang di!ahas dalam !agian ini menun/ukkan metode rekursi yang memanggil dirinya sendiri. Ini dikenal se!agai rekursi langsung. %al ini /uga memungkinkan untuk mem!uat rekursi tidak langsung. %al ini ter/adi ketika se!uah metode memanggil metode #' yang pada gilirannya memanggil metode A. #ahkan terdapat !e!erapa lagi metode yang terli!at dalam rekursi. Se!agai contoh' metode A memanggil metode #' yang memanggil Metode ' yang memanggil metode A. Proses Rekursif Untuk memahami proses rekursi yang ter/adi dalam se!uah ungsi rekursi' perhatikan contoh sederhana di !a"ah ini. ontoh di !a"ah ini menya/ikan satu ungsi untuk menghitung harga pangkat suatu nilai !ilangan !ulat misalnya @B' !erdasarkan hu!ungan rekurens seperti di/elaskan diatas' maka proses rekursi akan tampak pada gam!ar !erikut ini 4
1ari deinisi terse!ut' statemen pertama menun/ukkan nilai yang utama dari ungsi' dan statemen kedua menun/ukan perulangan penurunan dari n yaitu n&*. Selain ungsi' prosedur /uga dapat dilakukan operasi rekursi. Se!agai contoh penggunaan proses rekursi pada prosedur adalah prosedur pencarian !iner +!inary search. 1alam !e!erapa hal rekursi kurang eisien di!andng
proses iterasi. 1alam artian pemecahan secara rekursi dan secara iterasi mempunyai keuntungan dan kekurangan yang !isa saling diper!andingkan. Adalah cukup sulit untuk menentukan mana yang paling sederhana' paling /elas' paling eisien dan paling mudah di!anding yang lain. #isa ditam!ahkan' pemilihan secara iterati maupun rekursi !oleh dikatakan merupakan kesenangan seorang programmer sesuai dengan keinginannya.
Studi Kasus: Komputasi Bilangan ibonacci 1alam !e!erapa kasus' rekursi memungkinkan Anda untuk mem!uat se!uah solusiyang intuiti' mudah' sederhana untuk suatu masalah. Metode aktorial di !agian se!elumnya dapat dengan mudah ditulis ulang tanpa menggunakan rekursi. 0ada !agian ini' kita menun/ukkan contoh untuk menciptakan solusi intuiti untuk masalah menggunakan rekursi. 0ertim!angkan terkenal masalah Fi!onacci&series4 Seri indeks 4
4
) * * ( @ B C *@ (* @? BB CD . . . ) * ( @ ? B =
C
D
*) **
Seri Fi!onacci dimulai dengan ) dan *' dan setiap nomor !erikutnya adalah /umlah dari se!elumnya dua. Serial ini dapat rekursi dideinisikan se!agai4
Seri Fi!onacci !ernama untuk -eonardo Fi!onacci' seorang matematika"an a!ad pertengahan' yang !erasal itu untuk model pertum!uhan populasi kelinci. %al ini dapat diterapkan dalam optimasi numerik dan di !er!agai daerah lainnya. #agaimana Anda menemukan i! +indeks untuk indeks yang di!erikan$ Sangat mudah untuk menemukan i! +(' karena Anda tahu i! +) dan i! +*. 1engan asumsi !ah"a Anda tahu i! +inde 9 ( dan i! +indeks 9 *' Anda dapat memperoleh i! +indeks segera. 1engan demikian' masalah komputasi i! +indeks adalah dikurangi men/adi komputasi i! +inde 9 ( dan i! +indeks 9 *. Ketika melakukannya' Anda menerapkan Ide rekursi sampai indeks dikurangi men/adi ) atau *. Kasus dasar adalah indeks 6 ) atau indeks 6 *. ;ika Anda memanggil metode dengan indeks 6 ) atau inde 6 *' segera mengem!alikan hasilnya. ;ika Anda memanggil metode dengan indeks: 6 (' mem!agi masalah men/adi dua su!masalah untuk komputasi i! +inde 9 * dan i! +inde 9 ( menggunakan panggilan rekursi. Algoritma rekursi untuk komputasi i! +indeks !isa dengan sederhana di/elaskan se!agai !erikut4
0rogram ini tidak menun/ukkan /umlah yang cukup !esar peker/aan dilakukan di !elakang layar oleh komputer. Gam!ar ().?' !agaimanapun' menun/ukkan panggilan rekursi !eruntun untuk menge>aluasi i! +?. Metode asli' i! +?' mem!uat dua panggilan rekursi' i! +@ dan i! +(' dan kemudian kem!ali i! +@ i! +(. Hapi dalam rangka apa yang dise!ut metode ini$ 1i ;a"a' operan die>aluasi dari kiri ke kanan' sehingga i! +( dise!ut setelah i! +@ !enar&!enar die>aluasi. Itu la!el pada Gam!ar ().? menun/ukkan urutan di mana metode yang dipanggil.
Seperti yang ditun/ukkan pada Gam!ar ().?' ada !anyak panggilan rekursi digandakan. Misalnya' i! +( dise!ut dua kali' i! +* tiga kali' dan i! +) dua kali. Secara umum' komputasi i! +indeks mem!utuhkan sekitar dua kali le!ih !anyak panggilan rekursi seperti halnya komputasi i! +inde 9 *. Ketika Anda menco!a nilai indeks yang le!ih !esar' /umlah panggilan secara su!stansial meningkat' seperti yang ditun/ukkan pada Ha!el ().*.
Rekursi penerapan metode i! sangat sederhana dan mudah' tetapi tidak eisien' karena memerlukan le!ih !anyak "aktu dan memori untuk men/alankan metode rekursi. -ihat 0emrograman -atihan ().( untuk solusi yang eisien menggunakan loop. Meskipun tidak praktis' metode i! rekursi adalah contoh yang !aik tentang !agaimana untuk menulis metode rekursi.