kompleksitas waktu untuk algoritma rekursif
TRANSCRIPT
![Page 1: Kompleksitas Waktu untuk Algoritma Rekursif](https://reader030.vdocuments.mx/reader030/viewer/2022012307/5867706d1a28ab52568b5a80/html5/thumbnails/1.jpg)
PROGRAM STUDI
S1 SISTEM KOMPUTERUNIVERSITAS DIPONEGORO
Oky Dwi Nurhayati, ST, MTOky Dwi Nurhayati, ST, MTemail: [email protected] email: [email protected]
![Page 2: Kompleksitas Waktu untuk Algoritma Rekursif](https://reader030.vdocuments.mx/reader030/viewer/2022012307/5867706d1a28ab52568b5a80/html5/thumbnails/2.jpg)
Kinerja yang perlu ditelaah pada algoritma: beban komputasi efisiensi penggunaan memoriYang perlu diperhatikan: Kasus rata-rata : running time untuk tipikal data tertentu. Kasus terjelek : running time yang mungkin paling jelek pada
konfigurasi masukan data tertentu. Program bahasa yang dipakai Program sensitif terhadap input Program sulit dimengerti, dan secara matematis hasil tak
tersedia/diketahui Sering program tak bisa dibandingkan
![Page 3: Kompleksitas Waktu untuk Algoritma Rekursif](https://reader030.vdocuments.mx/reader030/viewer/2022012307/5867706d1a28ab52568b5a80/html5/thumbnails/3.jpg)
Sebuah algoritma tidak saja harus benar, tetapi juga harus mangkus (efisien).
Algoritma yang bagus adalah algoritma yang mangkus. Kemangkusan algoritma diukur dari berapa jumlah
waktu dan ruang (space) memori yang dibutuhkan untuk menjalankannya.
Algoritma yang mangkus ialah algoritma yang meminimumkan kebutuhan waktu dan ruang.
Kebutuhan waktu dan ruang suatu algoritma bergantung pada ukuran masukan (n), yang menyatakan jumlah data yang diproses.
Kemangkusan algoritma dapat digunakan untuk menilai algoritma yang terbaik.
![Page 4: Kompleksitas Waktu untuk Algoritma Rekursif](https://reader030.vdocuments.mx/reader030/viewer/2022012307/5867706d1a28ab52568b5a80/html5/thumbnails/4.jpg)
Bentuk rekursif :a. suatu subrutin/fungsi/ prosedur yang memanggil
dirinya sendiri.b. Bentuk dimana pemanggilan subrutin terdapat dalam
body subrutinc. Dengan rekursi, program akan lebih mudah dilihat
![Page 5: Kompleksitas Waktu untuk Algoritma Rekursif](https://reader030.vdocuments.mx/reader030/viewer/2022012307/5867706d1a28ab52568b5a80/html5/thumbnails/5.jpg)
Bentuk rekursi bertujuan untuk :b. menyederhanakan penulisan programc. menggantikan bentuk iterasiSyarat bentuk rekursif: ada kondisi terminal (basis) ada subroutine call yang melibatkan parameter yang
nilainya menuju kondisi terminal (recurrence)
![Page 6: Kompleksitas Waktu untuk Algoritma Rekursif](https://reader030.vdocuments.mx/reader030/viewer/2022012307/5867706d1a28ab52568b5a80/html5/thumbnails/6.jpg)
Untuk bentuk rekursif, digunakan teknik perhitungan kompleksitas dengan relasi rekurens
![Page 7: Kompleksitas Waktu untuk Algoritma Rekursif](https://reader030.vdocuments.mx/reader030/viewer/2022012307/5867706d1a28ab52568b5a80/html5/thumbnails/7.jpg)
Function Faktorial (input n : integer) integer→{menghasilkan nilai n!, n tidak negatif}Algoritma If n=0 then
Return 1 Else
Return ( n*faktorial (n-1) ) Endif
![Page 8: Kompleksitas Waktu untuk Algoritma Rekursif](https://reader030.vdocuments.mx/reader030/viewer/2022012307/5867706d1a28ab52568b5a80/html5/thumbnails/8.jpg)
Kompleksitas waktu :b. untuk kasus basis, tidak ada operasi perkalian (0)→c. untuk kasus rekurens, kompleksitas waktu diukur
dari jumlah perkalian (1) ditambah kompleksitas waktu untuk faktorial (n-1)
![Page 9: Kompleksitas Waktu untuk Algoritma Rekursif](https://reader030.vdocuments.mx/reader030/viewer/2022012307/5867706d1a28ab52568b5a80/html5/thumbnails/9.jpg)
Jadi relasi rekurens :
![Page 10: Kompleksitas Waktu untuk Algoritma Rekursif](https://reader030.vdocuments.mx/reader030/viewer/2022012307/5867706d1a28ab52568b5a80/html5/thumbnails/10.jpg)
Relasi Rekurrens :
![Page 11: Kompleksitas Waktu untuk Algoritma Rekursif](https://reader030.vdocuments.mx/reader030/viewer/2022012307/5867706d1a28ab52568b5a80/html5/thumbnails/11.jpg)
Persoalan Minimum & Maksimum
procedure MinMaks2(input A : TabelInt, i, j : integer,output min, maks : integer)
{ Mencari nilai maksimum dan minimum di dalam tabel Ayang berukuran n elemen secara Divide and Conquer.Masukan: tabel A yang sudah terdefinisi elemenelemennyaKeluaran: nilai maksimum dan nilai minimum tabel}
Deklarasimin1, min2, maks1, maks2 : integer
![Page 12: Kompleksitas Waktu untuk Algoritma Rekursif](https://reader030.vdocuments.mx/reader030/viewer/2022012307/5867706d1a28ab52568b5a80/html5/thumbnails/12.jpg)
Persoalan Minimum &Maksimumif i=j then { 1 elemen }min Ai←maks Ai←elseif (i = j-1) then { 2 elemen }if Ai < Aj thenmaks Aj←min Ai←elsemaks Ai←min Aj←endif
![Page 13: Kompleksitas Waktu untuk Algoritma Rekursif](https://reader030.vdocuments.mx/reader030/viewer/2022012307/5867706d1a28ab52568b5a80/html5/thumbnails/13.jpg)
else { lebih dari 2 elemen }k (i+j) div 2 ← { bagidua tabel pada posisi k }MinMaks2(A, i, k, min1, maks1)MinMaks2(A, k+1, j, min2, maks2)if min1 < min2 thenmin min1←elsemin min2←endifif maks1<maks2 thenmaks maks2←elsemaks maks2←endif
Persoalan Minimum &Maksimum
![Page 14: Kompleksitas Waktu untuk Algoritma Rekursif](https://reader030.vdocuments.mx/reader030/viewer/2022012307/5867706d1a28ab52568b5a80/html5/thumbnails/14.jpg)
Persoalan Minimum &MaksimumRelasi rekurrens:
Penyelesaian:Asumsi: n = 2k, dengan k bilangan bulat positif, maka
![Page 15: Kompleksitas Waktu untuk Algoritma Rekursif](https://reader030.vdocuments.mx/reader030/viewer/2022012307/5867706d1a28ab52568b5a80/html5/thumbnails/15.jpg)
Persoalan Minimum &Maksimum
![Page 16: Kompleksitas Waktu untuk Algoritma Rekursif](https://reader030.vdocuments.mx/reader030/viewer/2022012307/5867706d1a28ab52568b5a80/html5/thumbnails/16.jpg)
Untuk mengetahui kompleksitas bentuk rekursif, makaT(n) harus diubah dalam bentuk yang bukan rekursifBagaimana mengubah bentuk rekursif ke non rekursif ?Ada dua macam cara untuk menyelesaikan masalah ini,yaitu cara coba-coba dan dengan persamaan karakteristik :1. Cara coba-coba (deret).2. Metode dengan persamaan karakteristik
![Page 17: Kompleksitas Waktu untuk Algoritma Rekursif](https://reader030.vdocuments.mx/reader030/viewer/2022012307/5867706d1a28ab52568b5a80/html5/thumbnails/17.jpg)
Cara coba-cobaCara ini dilakukan dengan menentukan pola deret yang terbentuk (cara deret). Contoh untuk cara ini telah ditunjukkan dalam mencari kompleksitas waktu untuk beberapa bentuk rekursif sebelumnya. Cara ini agaksulit dan perlu pengalaman.
![Page 18: Kompleksitas Waktu untuk Algoritma Rekursif](https://reader030.vdocuments.mx/reader030/viewer/2022012307/5867706d1a28ab52568b5a80/html5/thumbnails/18.jpg)
→ Sulit untuk diformulasikan
![Page 19: Kompleksitas Waktu untuk Algoritma Rekursif](https://reader030.vdocuments.mx/reader030/viewer/2022012307/5867706d1a28ab52568b5a80/html5/thumbnails/19.jpg)
Metode dengan persamaan karakteristikBentuk Persamaan Linier Tak Homogen
Langkah-langkahnya adalah sebagai berikut:1. Perhatikan bentuk rekursifnya :
→ polinomial dengan orde / derajat terbesar d
→ didapatkan nilai t dan d
![Page 20: Kompleksitas Waktu untuk Algoritma Rekursif](https://reader030.vdocuments.mx/reader030/viewer/2022012307/5867706d1a28ab52568b5a80/html5/thumbnails/20.jpg)
Metode dengan persamaan karakteristik2. Asumsi f(n) = 0 bentuk homogen
![Page 21: Kompleksitas Waktu untuk Algoritma Rekursif](https://reader030.vdocuments.mx/reader030/viewer/2022012307/5867706d1a28ab52568b5a80/html5/thumbnails/21.jpg)
3. Diperoleh persamaan karakteristik :
t dan d didapatkan dari langkah 1
4. Ada 2 macam kasus :
Kasus 1Semua akar karakteristik berbedaSolusi Umum:
c1, c2, c3 adalah konstanta yang harus dicari
![Page 22: Kompleksitas Waktu untuk Algoritma Rekursif](https://reader030.vdocuments.mx/reader030/viewer/2022012307/5867706d1a28ab52568b5a80/html5/thumbnails/22.jpg)
Kasus 2Semua akar karakteristik sama, yaitu x1 = x2 = .... = xNSolusi Umum:
Masalah faktorial
![Page 23: Kompleksitas Waktu untuk Algoritma Rekursif](https://reader030.vdocuments.mx/reader030/viewer/2022012307/5867706d1a28ab52568b5a80/html5/thumbnails/23.jpg)
(ii) persamaan homogen (anggap f(n)=0)
(suku dengan orde terkecil), didapatkan : ⇔ x – 1 = 0
![Page 24: Kompleksitas Waktu untuk Algoritma Rekursif](https://reader030.vdocuments.mx/reader030/viewer/2022012307/5867706d1a28ab52568b5a80/html5/thumbnails/24.jpg)
( iii) Persamaan karakteristik (x – 1)(x – 1) = 0Akar – akarnya adalah : x1 = 1 dan x2 = 1Akar sama, jadi termasuk kasus 2, sehingga solusi umum :
Cari c1 dan c2 :Dari relasi rekurens :
Dari solusi umum:
![Page 25: Kompleksitas Waktu untuk Algoritma Rekursif](https://reader030.vdocuments.mx/reader030/viewer/2022012307/5867706d1a28ab52568b5a80/html5/thumbnails/25.jpg)
Masalah faktorial
![Page 26: Kompleksitas Waktu untuk Algoritma Rekursif](https://reader030.vdocuments.mx/reader030/viewer/2022012307/5867706d1a28ab52568b5a80/html5/thumbnails/26.jpg)
• Kompleksitas waktu:
Asumsi: n = 2k
T(n) = jumlah perbandingan pada pengurutan dua buah upatabel + jumlah perbandingan pada prosedur Merge
>+=
=1,)2/(21,
)(ncnnTna
nT
![Page 27: Kompleksitas Waktu untuk Algoritma Rekursif](https://reader030.vdocuments.mx/reader030/viewer/2022012307/5867706d1a28ab52568b5a80/html5/thumbnails/27.jpg)
Penyelesaian: T(n) = 2T(n/2) + cn = 2(2T(n/4) + cn/2) + cn = 4T(n/4) + 2cn = 4(2T(n/8) + cn/4) + 2cn = 8T(n/8) + 3cn = ... = 2k T(n/2k) +kcn Berhenti jika ukuran tabel terkecil, n = 1: n/2k = 1 → k = 2log n sehingga T(n) = nT(1) + cn 2log n = na + cn 2log n = O(n 2log n)