Presentasi sedang didownload. Silahkan tunggu

Presentasi sedang didownload. Silahkan tunggu

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

Presentasi serupa


Presentasi berjudul: "Matakuliah: T0034 / Perancangan & Analisis Algoritma Tahun: 2008 Pertemuan 4 ANALISIS KOMPLEKSITAS ALGORITMA."— Transcript presentasi:

1

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

3 Bina Nusantara 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?

4 Bina Nusantara 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]

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

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

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

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

9 Bina Nusantara 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.

10 Bina Nusantara PSEUDOCODE 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 5 iJumFak=iJumFak+1 6 end if 7 end for 8 if iJumFak=2 then 9 display X,” ” 10 end if 11 end for

11 Bina Nusantara 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 ! NWaktu yang diperlukan 10 ms 100 ms 1000 ms ms ms ms ms Sekitar ms

12 Bina Nusantara 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

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

14 Bina Nusantara 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? NPseudocode 3.8Pseudocode 3.9 < ms ms ms ms ms ms ms Sekitar ms ms

15 Bina Nusantara MENGHITUNG JUMLAH PERULANGAN N3.83.9N

16 Bina Nusantara 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

17 Bina Nusantara PSEUDOCODE T[1]=0 2 for X=2 to N do 3 T[X]=1 4 end for 5 for X=2 to N do 6 if T[X]=1 then 7 for i=2 to (N div X) do 8 if T[X*i]=1 then 9 T[X*i]=0 10 end if 11 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

18 Bina Nusantara PERBANDINGAN Pseudocode 3.10 dan pseudocode 3.7d memecahkan kasus yang sama, karena itu akan coba dibandingkan N3.7d3.10N3.7d

19 Bina Nusantara 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

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

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


Download ppt "Matakuliah: T0034 / Perancangan & Analisis Algoritma Tahun: 2008 Pertemuan 4 ANALISIS KOMPLEKSITAS ALGORITMA."

Presentasi serupa


Iklan oleh Google