Presentasi sedang didownload. Silahkan tunggu

Presentasi sedang didownload. Silahkan tunggu

Pertemuan 4 ANALISIS KOMPLEKSITAS ALGORITMA

Presentasi serupa


Presentasi berjudul: "Pertemuan 4 ANALISIS KOMPLEKSITAS ALGORITMA"— Transcript presentasi:

1

2 Pertemuan 4 ANALISIS KOMPLEKSITAS ALGORITMA
Matakuliah : T0034 / Perancangan & Analisis Algoritma Tahun : 2008 Pertemuan 4 ANALISIS KOMPLEKSITAS ALGORITMA

3 Cara menghitung pembagian dalam pseudocode
BILANGAN PRIMA Bilangan Prima : bilangan yang hanya memiliki 2 faktor pembagi, yaitu hanya habis dibagi bilangan 1 dan bilangan itu sendiri Cara menghitung pembagian dalam pseudocode 21 div 4 = 5 21 mod 4 = 1 Kasus : bagaimana membuat sebuah pseudocode yang dapat menyatakan apakah N bilangan prima atau bukan? Bina Nusantara

4 ALGORITMA DASAR BILANGAN PRIMA
Sesuai dengan definisi bilangan prima, algoritma harus mencari apakah sebuah bilangan N memiliki 2 faktor. Cara menyelidiki dengan mencoba satu per satu kemungkinan. Pseudocode 3.7a berisi sebuah algoritma dasar. Algoritma itu diperbaiki tahap demi tahap hingga menghasilkan pseudocode 3.7d [buku utama, bab 3.3] Bina Nusantara

5 PSEUDOCODE 3.7a 1 iJumFak=0 1 2 for i=1 to N do N
3 if (N mod i)=0 then N 4 iJumFak=iJumFak+1 N 5 end if 6 end for 7 if iJumFak=2 then 1 8 bPrima=true 1 9 else 10 bPrima=false 11 end if Bina Nusantara

6 PSEUDOCODE 3.7b 1 iJumFak=2 1 2 for i=2 to (N-1) do N-2
3 if (N mod i)=0 then N-2 4 iJumFak=iJumFak+1 N-2 5 end if 6 end for 7 if iJumFak=2 then 1 8 bPrima=true 1 9 else 10 bPrima=false 11 end if Bina Nusantara

7 PSEUDOCODE 3.7c 1 if N>1 then 1 2 iJumFak=2 1 3 else 4 iJumFak=1
5 end if 6 for i=2 to (N-1) do N-2 7 if (N mod i)=0 then N-2 8 iJumFak=iJumFak+1 N-2 9 end if 10 end for 11 if iJumFak=2 then 1 12 bPrima=true 1 13 else 14 bPrima=false 15 end if Bina Nusantara

8 PSEUDOCODE 3.7d 1 if N>1 then 1 2 iJumFak=2 1 3 else 4 iJumFak=1
5 end if 6 for i=2 to (N div 2) do N/2-1 7 if (N mod i)=0 then N/2-1 8 iJumFak=iJumFak+1 N/2-1 9 end if 10 end for 11 if iJumFak=2 then 1 12 bPrima=true 1 13 else 14 bPrima=false 15 end if Bina Nusantara

9 Apakah pseudocode 3.7d masih bisa diperbaiki?
MASALAH BARU Apakah pseudocode 3.7d masih bisa diperbaiki? Mungkin saja masih bisa, tapi untuk pembahasan selanjutnya akan digunakan pseudocode 3.7d sebagai acuan. Masalah tadi baru meneliti apakah N bilangan prima atau bukan. Sekarang bagimana jika masalah diubah menjadi “tampilkan bilangan prima dari 1 sampai N!” Berarti kita perlu memeriksa bilangan 1, 2, 3, ... sampai N dan memeriksa apakah prima atau bukan. Jika prima, tampilkan. Bina Nusantara

10 PSEUDOCODE 3.8 1 for X=2 to N do 2 iJumFak=2 3 for i=2 to (X div 2) do
4 if (X mod i)=0 then iJumFak=iJumFak+1 6 end if 7 end for 8 if iJumFak=2 then 9 display X,” ” 10 end if 11 end for Bina Nusantara

11 MENGUJI ALGORITMA Berikutnya kita akan menguji jalannya pseudocode 3.8 untuk menghitung bilangan prima 1 hingga Ternyata untuk menghitung bilangan prima antara 1 sampai saja memerlukan waktu sekitar 1 jam 10 menit Bayangkan jika kita perlu menghitung bilangan prima antara 1 hingga ! N Waktu yang diperlukan 1 0 ms 10 100 1.000 5.000 ms 10.000 ms ms Sekitar ms Bina Nusantara

12 TEKNIK FLAGGING/SIEVE
Mencari bilangan mana saja yang tidak prima. Ide dasar : Bilangan tidak prima adalah bilangan yang merupakan kelipatan dari bilangan prima lainnya. Bilangan yang tidak prima bisa dicatat dalam sebuah array Array berisi flag (penanda) apakah sebuah bilangan prima atau bukan Bina Nusantara

13 PSEUDOCODE 3.9 1 T[1]=”X” 2 for Z=2 to N do 3 T[Z]=”?” 4 end for
6 if T[Z]=”?” then 7 T[Z]=”P” 8 for i=2 to (N div Z) do if T[Z*i]=”?” then T[Z*i]=”X” end if end for 13 end if 14 end for 15 for Z=1 to N do 16 if T[Z]=”P” then display Z,” ” 18 end if 19 end for Bina Nusantara

14 MEMBANDINGKAN ALGORITMA
Hasil pengujian membandingkan pseudocode 3.8 dan pseudocode 3.9 menunjukkan perbedaan yang sangat mencolok. Perhitungan untuk N= yang memerlukan waktu sejam lebih dengan pseudocode 3.8 ternyata memerlukan waktu kurang dari 0,2 detik dengan pseudocode 3.9 Kontras sekali bukan? N Pseudocode 3.8 Pseudocode 3.9 < 1.000 0 ms 5.000 ms ms 10.000 ms ms Sekitar ms ms Bina Nusantara

15 MENGHITUNG JUMLAH PERULANGAN
3.8 3.9 1 11 25 28 2 3 12 30 32 5 13 36 34 4 8 14 42 38 10 15 48 6 7 100 2.426 345 16 1.000 3.957 19 5.000 21.068 9 22 10.000 43.070 20 26 Bina Nusantara

16 EFEKTIVITAS ITU RELATIF
Apakah kita bisa menyimpulkan bahwa teknik flagging selalu lebih baik untuk memecahkan kasus bilangan prima? Ternyata tidak selalu ! Teknik flagging efektif untuk menghitung bilangan prima 1 hingga N Coba terapkan teknik flagging untuk menghitung apakah N bilangan prima atau bukan Bina Nusantara

17 PSEUDOCODE 3.10 1 T[1]=0 2 for X=2 to N do 3 T[X]=1 4 end for
6 if T[X]=1 then 7 for i=2 to (N div X) do if T[X*i]=1 then T[X*i]=0 end if end for 12 end if 13 end for 14 if T[X]=1 then 15 bPrima=true 16 else 17 bPrima=false 18 end if Bina Nusantara

18 PERBANDINGAN Pseudocode 3.10 dan pseudocode 3.7d memecahkan kasus yang sama, karena itu akan coba dibandingkan N 3.7d 3.10 1 11 4 17 2 12 5 20 3 13 21 14 6 24 15 27 8 100 49 245 7 9 1.000 499 2.957 5.000 2.499 16.068 10.000 4.999 33.070 10 16 49.999 Bina Nusantara

19 ANALISIS Ternyata teknik flagging justru bekerja sangat lambat jika digunakan untuk menangani kasus awal, yakni menghitung apakah N bilangan prima atau bukan. Sebuah teknik yang baik untuk mengatasi sebuah kasus belum tentu baik untuk mengatasi masalah yang lain Bina Nusantara

20 Pikirkan lagi sebuah cara untuk memperbaiki pseudocode 3.7d !
LATIHAN Pikirkan lagi sebuah cara untuk memperbaiki pseudocode 3.7d ! Buatlah sebuah algoritma untuk menampilkan N bilangan prima yang pertama! Bina Nusantara

21 Apa yang sudah dipahami? Apa yang akan dibahas selanjutnya?
REVIEW Apa yang sudah dipahami? Apa yang akan dibahas selanjutnya? Bina Nusantara


Download ppt "Pertemuan 4 ANALISIS KOMPLEKSITAS ALGORITMA"

Presentasi serupa


Iklan oleh Google