![Page 1: Pengantar Analisa Algoritma - Website Personalpersonal.its.ac.id/files/material/3654-budi-Pengantar Analisa... · Best, Worst dan Average Cases Untuk beberapa algoritma, input yang](https://reader034.vdocuments.pub/reader034/viewer/2022052306/5c96ddb109d3f26b0a8d12e5/html5/thumbnails/1.jpg)
Pengantar
Analisa Algoritma
![Page 2: Pengantar Analisa Algoritma - Website Personalpersonal.its.ac.id/files/material/3654-budi-Pengantar Analisa... · Best, Worst dan Average Cases Untuk beberapa algoritma, input yang](https://reader034.vdocuments.pub/reader034/viewer/2022052306/5c96ddb109d3f26b0a8d12e5/html5/thumbnails/2.jpg)
Pendahuluan
Suatu permasalahan memungkinkan untuk
diselesaikan dengan lebih dari satu algoritma
(pendekatan)
Bagaimana kita ‘memilih’ satu diantara beberapa
algoritma tersebut. Bagaimana kita mengukur
‘efisiensi’ dari algoritma tersebut ?
![Page 3: Pengantar Analisa Algoritma - Website Personalpersonal.its.ac.id/files/material/3654-budi-Pengantar Analisa... · Best, Worst dan Average Cases Untuk beberapa algoritma, input yang](https://reader034.vdocuments.pub/reader034/viewer/2022052306/5c96ddb109d3f26b0a8d12e5/html5/thumbnails/3.jpg)
Mengukur Efisiensi :
Perbandingan Empiris: Run Program
Analisis Algoritma (Asimptotis)
![Page 4: Pengantar Analisa Algoritma - Website Personalpersonal.its.ac.id/files/material/3654-budi-Pengantar Analisa... · Best, Worst dan Average Cases Untuk beberapa algoritma, input yang](https://reader034.vdocuments.pub/reader034/viewer/2022052306/5c96ddb109d3f26b0a8d12e5/html5/thumbnails/4.jpg)
Kesulitan Perbandingan Empiris :
Diperlukan usaha pemrograman dan pengujian
yang lebih banyak
‘Penulisan’ program yang berbeda memungkinkan
menghasilkan kualitas program yang berbeda
Pemilihan kasus-kasus uji empiris mungkin tidak
selalu sesuai untuk semua algoritma yang diuji.
![Page 5: Pengantar Analisa Algoritma - Website Personalpersonal.its.ac.id/files/material/3654-budi-Pengantar Analisa... · Best, Worst dan Average Cases Untuk beberapa algoritma, input yang](https://reader034.vdocuments.pub/reader034/viewer/2022052306/5c96ddb109d3f26b0a8d12e5/html5/thumbnails/5.jpg)
Sumberdaya kritis suatu program
running-time (waktu eksekusi program), sehingga
kita harus menganalisa waktu yang diperlukan
untuk me-run program (algoritma).
ruang (memory, space- memori utama dan memori
tambahan) yang diperlukan untuk me-run
program. Ruang yang diperlukan ini sangat
berkaitan dengan struktur data yang digunakan.
![Page 6: Pengantar Analisa Algoritma - Website Personalpersonal.its.ac.id/files/material/3654-budi-Pengantar Analisa... · Best, Worst dan Average Cases Untuk beberapa algoritma, input yang](https://reader034.vdocuments.pub/reader034/viewer/2022052306/5c96ddb109d3f26b0a8d12e5/html5/thumbnails/6.jpg)
Faktor yang mempengaruhi running-time
‘Lingkungan’ dimana program itu dijalankan, yang
antara lain meliputi kecepatan CPU, bus dan
perangkat keras pendukung yang lain.
Persaingan dengan user lain pada jaringan juga bisa
memperlambat waktu eksekusi.
Bahasa pemrograman dan kualitas ‘kode’ yang
dihasilkan oleh kompiler juga dapat memberikan
pengaruh yang signifikan.
Kemampuan pemrogram yang menerjemahkan
algoritma ke kode program juga berpengaruh.
![Page 7: Pengantar Analisa Algoritma - Website Personalpersonal.its.ac.id/files/material/3654-budi-Pengantar Analisa... · Best, Worst dan Average Cases Untuk beberapa algoritma, input yang](https://reader034.vdocuments.pub/reader034/viewer/2022052306/5c96ddb109d3f26b0a8d12e5/html5/thumbnails/7.jpg)
Analisis Algoritma
Analisis algoritma asimptotis (asymptotic algorithm analysis) mengukur efisiensi suatu algoritma berdasar-kan ‘ukuran’ input (yang biasanya besar), karena running-time suatu algoritma sebagian besar tergantung pada ukuran input.
Teknik ini lebih bersifat estimasi
![Page 8: Pengantar Analisa Algoritma - Website Personalpersonal.its.ac.id/files/material/3654-budi-Pengantar Analisa... · Best, Worst dan Average Cases Untuk beberapa algoritma, input yang](https://reader034.vdocuments.pub/reader034/viewer/2022052306/5c96ddb109d3f26b0a8d12e5/html5/thumbnails/8.jpg)
Analisa Algoritma (lanjutan)
Pertimbangan utama ketika mengestimasi
performansi suatu algoritma adalah jumlah ‘operasi
dasar’ (basic operation) yang diperlukan untuk oleh
algoritma untuk memproses suatu input dengan
ukuran (size)
Running time dinyatakan dalam T(n) untuk fungsi T
pada input dengan ukuran n
![Page 9: Pengantar Analisa Algoritma - Website Personalpersonal.its.ac.id/files/material/3654-budi-Pengantar Analisa... · Best, Worst dan Average Cases Untuk beberapa algoritma, input yang](https://reader034.vdocuments.pub/reader034/viewer/2022052306/5c96ddb109d3f26b0a8d12e5/html5/thumbnails/9.jpg)
Contoh: Diberikan suatu algoritma untuk menemukan nilai terbesar
dalam suatu array yg berisi n integer positip
Misalkan c jumlah waktu yang diperlukan untuk menguji suatu nilai dalam fungsi ini, termasuk didalamnya waktu yang diperlukan untuk increment nilai i dll, maka
T(n) = cn
static int largest(int[ ] A, int n) { // Dapatkan nilai terbesar
int currlarge = 0; // inisialisasi nilai terbesar saat ini
for (int i=0; i<n; i++) // untuk setiap elemen array
if (A[i] > currlarge) // nilai terbesar saat ini berubah
currlarge=A[i];
return currlarge; // return nilai terbesar
}
![Page 10: Pengantar Analisa Algoritma - Website Personalpersonal.its.ac.id/files/material/3654-budi-Pengantar Analisa... · Best, Worst dan Average Cases Untuk beberapa algoritma, input yang](https://reader034.vdocuments.pub/reader034/viewer/2022052306/5c96ddb109d3f26b0a8d12e5/html5/thumbnails/10.jpg)
Contoh 2
Misal cuplikan kode program sebagai berikut
Maka, T(n) = c2 n2
sum = 0;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
sum++ ;
![Page 11: Pengantar Analisa Algoritma - Website Personalpersonal.its.ac.id/files/material/3654-budi-Pengantar Analisa... · Best, Worst dan Average Cases Untuk beberapa algoritma, input yang](https://reader034.vdocuments.pub/reader034/viewer/2022052306/5c96ddb109d3f26b0a8d12e5/html5/thumbnails/11.jpg)
Best, Worst dan Average Cases
Untuk beberapa algoritma, input yang berbeda
dapat memerlukan jumlah waktu yang berbeda.
Sebagai ilustrasi, misalkan kita ingin mencari suatu
elemen array (posisi) yang memuat nilai K dan
algoritma akan berhenti jika nilai K ditemukan.
Dengan pencarian secara sekuensial
Best case: 1
Worst case: n
Average case: n/2
![Page 12: Pengantar Analisa Algoritma - Website Personalpersonal.its.ac.id/files/material/3654-budi-Pengantar Analisa... · Best, Worst dan Average Cases Untuk beberapa algoritma, input yang](https://reader034.vdocuments.pub/reader034/viewer/2022052306/5c96ddb109d3f26b0a8d12e5/html5/thumbnails/12.jpg)
Best, Worst dan Average Cases
Best case
Umumnya kita tidak digunakan karena jarang terjadi dan terlalu optimistik untuk karakteristik umum dari running-time suatu algoritma.
Worst case
Bisa diketahui secara pasti bahwa paling buruk algoritma akan memerlukan proses sebanyak kasus terburuk ini.
Analisa ini juga sangat penting digunakan untuk aplikasi real-time (waktu-nyata)
Average case
Menyatakan ‘perilaku umum’ suatu algoritma bila diberikan input dengan ukuran n
![Page 13: Pengantar Analisa Algoritma - Website Personalpersonal.its.ac.id/files/material/3654-budi-Pengantar Analisa... · Best, Worst dan Average Cases Untuk beberapa algoritma, input yang](https://reader034.vdocuments.pub/reader034/viewer/2022052306/5c96ddb109d3f26b0a8d12e5/html5/thumbnails/13.jpg)
Komputer Lebih Cepat vs Algoritma Lebih Cepat
Apa yang terjadi jika kita membeli komputer baru
yang mempunyai kecepatan 10 kali lebih cepat
(misal dapat memproses 100.000 input dalam satu
satuan waktu) dibandingkan komputer lama (misal
dapat memproses 10.000 input)?
Pada kasus tertentu, penambahan kecepatan
komputer kurang berpengaruh pada jumlah input
yang diproses. Mengapa?
![Page 14: Pengantar Analisa Algoritma - Website Personalpersonal.its.ac.id/files/material/3654-budi-Pengantar Analisa... · Best, Worst dan Average Cases Untuk beberapa algoritma, input yang](https://reader034.vdocuments.pub/reader034/viewer/2022052306/5c96ddb109d3f26b0a8d12e5/html5/thumbnails/14.jpg)
Komputer Lebih Cepat vs Algoritma Lebih Cepat
10n
10n
n' =
T(n) n n' Perubahan n'/n
10n 1.000 10.000 n' = 10n 10
20n 500 5.000 n' = 10n 10
5n log n 250 1.842 < n' < 10n 7,37
2n2 70 223 3,16
2n 13 16 n' = n + 3 --
n: ukuran input yang dapat diproses dalam satu detik pada komputer 1
n’: ukuran input yang dapat diproses dalam satu detik pada komputer 2
![Page 15: Pengantar Analisa Algoritma - Website Personalpersonal.its.ac.id/files/material/3654-budi-Pengantar Analisa... · Best, Worst dan Average Cases Untuk beberapa algoritma, input yang](https://reader034.vdocuments.pub/reader034/viewer/2022052306/5c96ddb109d3f26b0a8d12e5/html5/thumbnails/15.jpg)
Growth Rate Graph
![Page 16: Pengantar Analisa Algoritma - Website Personalpersonal.its.ac.id/files/material/3654-budi-Pengantar Analisa... · Best, Worst dan Average Cases Untuk beberapa algoritma, input yang](https://reader034.vdocuments.pub/reader034/viewer/2022052306/5c96ddb109d3f26b0a8d12e5/html5/thumbnails/16.jpg)
Analisis Asimptotis: Batas Atas (Big-Oh)
Definisi :
T(n) adalah anggota dari himpunan Ο(f(n)) jika ada dua konstanta positip c dan n0 sedemikian hingga
| T(n) | ≤ c | f(n) | untuk semua n > n0
Definisi ini memberikan arti bahwa untuk semua himpunan data yang cukup besar (yaitu n > n0) algoritma akan selalu mengeksekusi lebih kecil dari c | f(n) | step pada best, average dan worst case.
![Page 17: Pengantar Analisa Algoritma - Website Personalpersonal.its.ac.id/files/material/3654-budi-Pengantar Analisa... · Best, Worst dan Average Cases Untuk beberapa algoritma, input yang](https://reader034.vdocuments.pub/reader034/viewer/2022052306/5c96ddb109d3f26b0a8d12e5/html5/thumbnails/17.jpg)
Contoh-contoh
Contoh 2.4:
Jika T(n) = 3n2 maka T(n) ada dalam O(n2).
Demikian juga, T(n) ada dalam O(n3), O(n4) dan seterusnya, sehingga yang kita pilih adalah batas atas terkecil (least upper bound).
Contoh 2.5:
Mencari nilai K yang disimpan dalam suatu array.
T(n) = csn/2
Untuk semua nilai n > 1, |csn/2| ≤ cs |n|
Sehingga, dengan definisi, T(n) adalah anggota O(n) untuk n0 = 1 dan c = cs
![Page 18: Pengantar Analisa Algoritma - Website Personalpersonal.its.ac.id/files/material/3654-budi-Pengantar Analisa... · Best, Worst dan Average Cases Untuk beberapa algoritma, input yang](https://reader034.vdocuments.pub/reader034/viewer/2022052306/5c96ddb109d3f26b0a8d12e5/html5/thumbnails/18.jpg)
Contoh-contoh:
Contoh 2.6 :
Diketahui T(n) = c1n2 + c2n pada average case.
Dapatkan O(f(n))
|c1 n2 + c2n| ≤ |c1n2 + c2n
2 | ≤ (c1 + c2) | n2 |
untuk semua n > 1, sehingga,
| T(n) | ≤ c |n2| untuk c = c1 + c2 dan n0 = 1
Jadi, dengan definisi, T(n) adalah anggota dari O(n2).
Contoh 2.7 :
T(n) = c adalah anggota dari O(1).
![Page 19: Pengantar Analisa Algoritma - Website Personalpersonal.its.ac.id/files/material/3654-budi-Pengantar Analisa... · Best, Worst dan Average Cases Untuk beberapa algoritma, input yang](https://reader034.vdocuments.pub/reader034/viewer/2022052306/5c96ddb109d3f26b0a8d12e5/html5/thumbnails/19.jpg)
Batas Bawah : Big-Omega
Definisi :
T(n) adalah anggota dari himpunan Ω(g(n)) jika ada dua konstanta positip c dan n0 sedemikian hingga
| T(n) | ≥ c | g(n) | untuk semua n > n0
Definisi ini memberikan arti bahwa untuk semua himpunan data yang cukup besar (yaitu n > n0) algoritma akan selalu mengeksekusi lebih besar dari c|g(n)| step pada best, average dan worst case.
![Page 20: Pengantar Analisa Algoritma - Website Personalpersonal.its.ac.id/files/material/3654-budi-Pengantar Analisa... · Best, Worst dan Average Cases Untuk beberapa algoritma, input yang](https://reader034.vdocuments.pub/reader034/viewer/2022052306/5c96ddb109d3f26b0a8d12e5/html5/thumbnails/20.jpg)
Contoh
Diketahui T(n) = c1n2 + c2n pada average case.
Dapatkan Ω(g(n))
|c1n2 + c2n| ≥ c1|n2| untuk semua n > 1
Sehingga,
|T(n)| ≥ c|n2| untuk c=c1 dan n0=1
Jadi, berdasarkan definisi, T(n) adalah anggota dari Ω(n2).
Demikian juga, T(n) juga merupakan anggota dari Ω(n) dan Ω(1). Pada kasus ini yang kita pilih adalah batas bawah terbesar (greatest lower bound).
![Page 21: Pengantar Analisa Algoritma - Website Personalpersonal.its.ac.id/files/material/3654-budi-Pengantar Analisa... · Best, Worst dan Average Cases Untuk beberapa algoritma, input yang](https://reader034.vdocuments.pub/reader034/viewer/2022052306/5c96ddb109d3f26b0a8d12e5/html5/thumbnails/21.jpg)
Big-Theta
Definisi :
Suatu algoritma dikatakan anggota Θ(h(n)) jika algoritma itu adalah anggota O(h(n)) dan anggota Ω(h(n))
Contoh 2.9 :
Karena T(n) = c1n2 + c2n adalah angota O(n2) dan
anggota Ω(n2), maka T(n) adalah anggota Θ(n2).
![Page 22: Pengantar Analisa Algoritma - Website Personalpersonal.its.ac.id/files/material/3654-budi-Pengantar Analisa... · Best, Worst dan Average Cases Untuk beberapa algoritma, input yang](https://reader034.vdocuments.pub/reader034/viewer/2022052306/5c96ddb109d3f26b0a8d12e5/html5/thumbnails/22.jpg)
Contoh:
![Page 23: Pengantar Analisa Algoritma - Website Personalpersonal.its.ac.id/files/material/3654-budi-Pengantar Analisa... · Best, Worst dan Average Cases Untuk beberapa algoritma, input yang](https://reader034.vdocuments.pub/reader034/viewer/2022052306/5c96ddb109d3f26b0a8d12e5/html5/thumbnails/23.jpg)
Aturan Simplifikasi
Ketika kita menentukan persamaan running time
suatu algoritma, kita akan menentukan bentuk yang
paling sederhana, sehingga diperlukan aturan-
aturan penyederhanaan untuk ketiga big-Oh, big-
Omega dan big-Theta
![Page 24: Pengantar Analisa Algoritma - Website Personalpersonal.its.ac.id/files/material/3654-budi-Pengantar Analisa... · Best, Worst dan Average Cases Untuk beberapa algoritma, input yang](https://reader034.vdocuments.pub/reader034/viewer/2022052306/5c96ddb109d3f26b0a8d12e5/html5/thumbnails/24.jpg)
Beberapa Aturan Penyederhanaan:
1) Jika f(n) adalah anggota O(g(n)) dan g(n) adalah anggota O(h(n)), maka f(n) adalah anggota O(h(n)).
2) Jika f(n) adalah anggota O(kg(n)) untuk konstanta k > 0, makaf(n) adalah anggota O(g(n)).
3) Jika f1(n) adalah anggota O(g1(n)) dan f2(n) adalah anggotaO(g2(n)), maka (f1+ f2)(n) adalah anggota
O(max(g1(n), g2(n))).
4) Jika f1(n) adalah anggota O(g1(n)) dan f2(n) adalah anggotaO(g2(n)), maka f1(n) f2(n) adalah anggota O(g1(n) g2(n)).
Aturan ini juga berlaku untuk big-omega dan big-theta.
![Page 25: Pengantar Analisa Algoritma - Website Personalpersonal.its.ac.id/files/material/3654-budi-Pengantar Analisa... · Best, Worst dan Average Cases Untuk beberapa algoritma, input yang](https://reader034.vdocuments.pub/reader034/viewer/2022052306/5c96ddb109d3f26b0a8d12e5/html5/thumbnails/25.jpg)
25
Time Complexity Examples (1)
Contoh 3.9:
a = b;
This assignment takes constant time, so it is
(1).
Contoh 3.10:sum = 0;for (i=1; i<=n; i++)sum += n;
![Page 26: Pengantar Analisa Algoritma - Website Personalpersonal.its.ac.id/files/material/3654-budi-Pengantar Analisa... · Best, Worst dan Average Cases Untuk beberapa algoritma, input yang](https://reader034.vdocuments.pub/reader034/viewer/2022052306/5c96ddb109d3f26b0a8d12e5/html5/thumbnails/26.jpg)
26
Time Complexity Examples (2)
Contoh 3.11:
sum = 0;for (j=1; j<=n; j++)for (i=1; i<=j; i++)sum++;
for (k=0; k<n; k++)A[k] = k;
![Page 27: Pengantar Analisa Algoritma - Website Personalpersonal.its.ac.id/files/material/3654-budi-Pengantar Analisa... · Best, Worst dan Average Cases Untuk beberapa algoritma, input yang](https://reader034.vdocuments.pub/reader034/viewer/2022052306/5c96ddb109d3f26b0a8d12e5/html5/thumbnails/27.jpg)
27
Time Complexity Examples (3)
Contoh 3.12:
sum1 = 0;for (i=1; i<=n; i++)for (j=1; j<=n; j++)sum1++;
sum2 = 0;for (i=1; i<=n; i++)for (j=1; j<=i; j++)sum2++;
![Page 28: Pengantar Analisa Algoritma - Website Personalpersonal.its.ac.id/files/material/3654-budi-Pengantar Analisa... · Best, Worst dan Average Cases Untuk beberapa algoritma, input yang](https://reader034.vdocuments.pub/reader034/viewer/2022052306/5c96ddb109d3f26b0a8d12e5/html5/thumbnails/28.jpg)
28
Time Complexity Examples (4)
Contoh 3.13:
sum1 = 0;for (k=1; k<=n; k*=2)for (j=1; j<=n; j++)sum1++;
sum2 = 0;for (k=1; k<=n; k*=2)for (j=1; j<=k; j++)sum2++;
![Page 29: Pengantar Analisa Algoritma - Website Personalpersonal.its.ac.id/files/material/3654-budi-Pengantar Analisa... · Best, Worst dan Average Cases Untuk beberapa algoritma, input yang](https://reader034.vdocuments.pub/reader034/viewer/2022052306/5c96ddb109d3f26b0a8d12e5/html5/thumbnails/29.jpg)
Statement Control yang lain?
Perhitungan running time dapat dinyatakan secara garis besar sebagai berikut :
Untuk loop while, perhitungannya sama dengan loop for
Statemen if lebih besar daripada then/else, mungkin melibatkan probabilitas karena adanya penyeleksian kondisi
Rekursifitas: diselesaikan dengan relasi berulang
Subrotine call: Kompleksitas dari subroutine yang dipanggil
Slide berikutnya……