Pertemuan 4 ANALISIS KOMPLEKSITAS ALGORITMA

Slides:



Advertisements
Presentasi serupa
Pencarian ( Searching)
Advertisements

ALGORITMA 6 April 2017 Pseudocode #3 STIKOM.
MATERI 11. TAS Tanggal 30 Nopember 2011 (RABU). Jam 7-9 TUTUP BUKU Materi : 1-11.
Struktur Percabangan Komang Kurniawan W., M.Cs.
Pertemuan 2 INDUKSI MATEMATIKA & FUNGSI REKURSIF
sebuah fungsi yang memanggil dirinya sendiri
Pseudocode Dengan Modularisasi
Algoritma dan Struktur Data
PEMROGRAMAN TERSTRUKTUR
Bab 2 PERINTAH-PERINTAH DASAR (BAG. 1) Program Pendidikan Sarjana Ekstensi DTE FTUI Slide ©2008.
Pertemuan 6 TREE & BINARY TREE
PERTEMUAN 1 Pendahuluan Materi - Endra Rahmawati, S.Kom -
Bab 2 – b PERINTAH 2 B Percabangan. PERCABANGAN Tidak setiap baris program akan dikerjakan Hanya yang memenuhi syarat (kondisi) Syarat terdiri dari operand-operand,
*Operator - ARITMATIKA
Pemprograman Terstruktur 1
Operasi Perulangan pada FORTRAN Pertemuan 6
Matakuliah: T0034 / Perancangan & Analisis Algoritma Tahun: 2008 Pertemuan 1 PENGENALAN PERANCANGAN & ANALISIS ALGORITMA.
Metode Perancangan Program
Matakuliah : T0034 / Perancangan & Analisis Algoritma
Algoritma dan Pemrograman
PERTEMUAN 2 PENGERTIAN DASAR LOGIKA DAN ALGORITMA.
Pertemuan 23 BRANCH AND BOUND (1)
Pertemuan 3 ALGORITMA & FUNGSI KOMPLEKSITAS
Pertemuan 7 PRIORITY QUEUE & HEAP
Pertemuan 16 DYNAMIC PROGRAMMING : TRAVELING SALESMAN PROBLEM (TSP)
Pertemuan 5 STACK & QUEUE
Pertemuan Pengembangan Algoritma
Matakuliah: T0034 / Perancangan & Analisis Algoritma Tahun: 2008 Pertemuan 9 DIVIDE AND CONQUER (1)
{Pertemuan 4 Struktur Kondisi IF}
TEL 2112 Dasar Komputer & Pemograman Contoh Pemecahan Masalah
TEL 2112 Dasar Komputer & Pemograman Contoh Pemecahan Masalah
Materi Kuliah 1. Pertemuan ke : 1 Pengenalan Komputer dan Pemrograman
Materi 9 LOGIKA & ALGORITMA.
Pertemuan 22 BACKTRACKING
if (condition) statement if (x == 100) cout << "x is 100";
Prodi S1-Sistem Komputer, F Teknik Elektro
{Pertemuan 4 Struktur Kondisi IF}
Notasi Algoritma & Tipe Data
Pertemuan 25 MERANCANG ALGORITMA DENGAN KOMPLEKSITAS TERTENTU
MODUL 3 PSEUDOCODE.
{Pertemuan 4 Struktur Kondisi IF}
Flowchart.
Pertemuan 13 DYNAMIC PROGRAMMING : FIBONACCI SEQUENCE PROBLEM
Pertemuan 26 PRAKTEK ANALISIS ALGORITMA
Metode Perancangan Program
LATIHAN 26 Buatlah sebuah algoritma untuk menampilkan jumlah faktor pembagi bilangan X, dengan X adalah 1 hingga N ! Misal Jumlah faktor dari 1 adalah.
Algoritma dan Pemrograman Pertemuan 1
Pertemuan 20 GRAPH COLORING
Pseudo-code.
TEL 2112 Dasar Komputer & Pemograman Contoh Pemecahan Masalah
Algoritma Percabangan
Array Buat algoritma untuk mencari nilai terbesar dari 5 nilai mahasiswa yang diinputkan dengan array.
Dasar-dasar Pemrograman
I Gusti Agung Made Wirautama, S.Kom
Pertemuan ke 9.
Seleksi Kondisi merupakan perintah yang memungkinkan pemilihan atas perintah yang akan dijalankan sesuai dengan kondisi tertentu. Operator yang digunakan.
Algoritma dan Pemrograman (Pertemuan 04)
JENIS DAN SIMBOL FLOWCHART PRODI MIK | FAKULTAS ILMU-ILMU KESEHATAN
Minggu 10 Imam Fahrur Rozi
Pertemuan 18 CODE OPTIMIZATION
Dasar-Dasar Komputer FKIP Prodi Matematika Univ. Muhammadiyah Gresik
Algoritma Rekursif Alpro-2.
Latihan Kasus Algoritma
ALGORITMA & PEMROGRAMAN
Dasar-Dasar Pemrograman
Pertemuan 19 HUFFMAN CODE
LOGIKA & ALGORITMA KONSEP ALGORITMA & FLOWCHART M. Febriansyah, ST., MT.
if (condition) statement if (x == 100) cout << "x is 100";
Pengulangan FOR - DO Temu 9.
Pemilihan Dua Kasus, tiga kasus dan banyak kasus
Transcript presentasi:

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

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

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

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

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

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

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

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

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 5 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

MENGUJI ALGORITMA Berikutnya kita akan menguji jalannya pseudocode 3.8 untuk menghitung bilangan prima 1 hingga 1.000.000 Ternyata untuk menghitung bilangan prima antara 1 sampai 1.000.000 saja memerlukan waktu sekitar 1 jam 10 menit Bayangkan jika kita perlu menghitung bilangan prima antara 1 hingga 1.000.000.000! N Waktu yang diperlukan 1 0 ms 10 100 1.000 5.000 100 - 135 ms 10.000 450 - 600 ms 100.000 45.000 - 50.000 ms 1.000.000 Sekitar 4.200.000 ms 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 Bina Nusantara

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

MEMBANDINGKAN ALGORITMA Hasil pengujian membandingkan pseudocode 3.8 dan pseudocode 3.9 menunjukkan perbedaan yang sangat mencolok. Perhitungan untuk N=1.000.000 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 100 - 135 ms 0 - 15 ms 10.000 450 - 600 ms 100.000 45.000 - 50.000 ms 1.000.000 Sekitar 4.200.000 ms 120 - 125 ms Bina Nusantara

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 249.169 3.957 19 5.000 6.245.670 21.068 9 22 10.000 24.991.230 43.070 20 26 100.000 2.499.909.593 456.807 1.000.000 249.999.078.499 4.775.209 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 Bina Nusantara

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

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 100.000 49.999 356.807 1.000.000 499.999 3.775.209 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 Bina Nusantara

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

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