Upload presentasi
Presentasi sedang didownload. Silahkan tunggu
Diterbitkan olehDhimas Sholeh Telah diubah "9 tahun yang lalu
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
Presentasi serupa
© 2024 SlidePlayer.info Inc.
All rights reserved.