STRATEGI DIVIDE AND CONQUER

dokumen-dokumen yang mirip
BAB VII ALGORITMA DIVIDE AND CONQUER

METODE DEVIDE AND CONQUER (DANDC)

SORTING. Brigida Arie Minartiningtyas, M.Kom

Kompleksitas Algoritma

Algoritma Heap Sort. Sekolah Teknik Elektro & Informatika Departemen Teknik Informatika, Institut Teknologi Bandung Jl. Ganesha 10, Bandung

Quick Sort dan Merge Sort. Arna Fariza Yuliana Setiowati

Sebuah algoritma tidak saja harus benar, tetapi juga harus mangkus (efisien). Algoritma yang bagus adalah algoritma yang mangkus.

Pendahuluan. Sebuah algoritma tidak saja harus benar, tetapi juga harus efisien. Algoritma yang bagus adalah algoritma yang efektif dan efisien.

Kompleksitas Algoritma

Decrease and Conquer

Algoritma Divide and Conquer (Bagian 2)

SATUAN ACARA PERKULIAHAN (SAP) Mata Kuliah : Struktur Data Kode : TIS3213 Semester : III Waktu : 2 x 3 x 50 Menit Pertemuan : 14 & 15

Kompleksitas Algoritma (1)

Algoritma Divide and Conquer. (Bagian 2)

Kompleksitas Algoritma

FAKULTAS TEKNIK UNIVERSITAS NEGERI YOGYAKARTA SILABUS ALGORITMA PEMROGRAMAN

Sorting Algorithms. Algoritma dan Struktur Data. Sorting algorithms

Studi Mengenai Perbandingan Sorting Algorithmics Dalam Pemrograman dan Kompleksitasnya

BAB 2 LANDASAN TEORI

Matematika Diskrit Kompleksitas Algoritma. Instruktur : Ferry Wahyu Wibowo, S.Si., M.Cs.

ANALISIS PERBANDINGAN ALGORITMA SELECTION SORT DENGAN MERGE SORT

STRUKTUR DATA. Nama : Sulfikar Npm : STMIK Handayani Makassar

SORTING ARRAY FAKULTAS TEKNOLOGI INFORMASI UNISBANK SEMARANG : ANDY KRISTIANTO : Disusun Oleh :

BAB I PENDAHULUAN Latar Belakang

Algoritma Bubble Sort dan Quick Sort

PROGRAM STUDI S1 SISTEM KOMPUTER UNIVERSITAS DIPONEGORO. Oky Dwi Nurhayati, ST, MT

SORTING. Hartanto Tantriawan, S.Kom., M.Kom

PENCARIAN BERUNTUN (SEQUENTIAL SEARCHING)

BAB 8 SORTING DAN SEARCHING

Yaitu proses pengaturan sekumpulan objek menurut urutan atau susunan tertentu Acuan pengurutan dibedakan menjadi :

DIKTAT STRUKTUR DATA Oleh: Tim Struktur Data IF

AnalisisFramework. Mengukur ukuran atau jumlah input Mengukur waktu eksekusi Tingkat pertumbuhan Efiesiensi worst-case, best-case dan average-case

7. SORTING DAN SEARCHING

1. Kompetensi Mengenal dan memahami notasi-notasi algoritma yang ada.

BAB VI SEARCHING (PENCARIAN)

SORTING DENGAN ALGORITMA DIVIDE AND CONQUER

Design and Analysis Algorithm. Ahmad Afif Supianto, S.Si., M.Kom. Pertemuan 07

Analisis Kecepatan Sorting Dengan Notasi Big O

Kompleksitas Algoritma

ALGORITMA PENGURUTAN & PENCARIAN

Pencarian pada Array. Tim PHKI Modul Dasar Pemrograman Fakultas Ilmu Komputer UDINUS Semarang

Solusi UTS Stima. Alternatif 1 strategi:

Kompleksitas Algoritma Sorting yang Populer Dipakai

BAB VI Pengurutan (Sorting)

NASKAH UJIAN UTAMA. JENJANG/PROG. STUDI : DIPLOMA TIGA / MANAJEMEN INFORMATIKA HARI / TANGGAL : Kamis / 18 FEBRUARI 2016

Kemangkusan Algoritma Pada Beberapa Variasi Quick Sort

Perbandingan Algoritma Pengurutan Merge Sort, Quick Sort dan Heap Sort Dilihat dari Kompleksitasnya

Algoritma dan Pemrograman Searching/Pencarian

BAB 1 PENDAHULUAN. Universitas Sumatera Utara

PERBANDINGAN KOMPLEKSITAS ALGORITMA PENCARIAN BINER DAN ALGORITMA PENCARIAN BERUNTUN

1. Kompetensi Mengenal dan memahami algoritma percabangan yang komplek.

TELAAH WAKTU EKSEKUSI PROGRAM TERHADAP KOMPLEKSITAS WAKTU ALGORITMA BRUTE FORCE DAN DIVIDE AND CONQUER DALAM PENYELESAIAN OPERASI LIST

SEARCHING. Pusat Pengembangan Pendidikan Universitas Gadjah Mada 1

BAB VIII Pencarian(Searching)

SORTING (BAGIAN II) Proses kelima

MAKALAH ALGORITMA DIVIDE AND CONQUER

ALGORITMA DIVIDE AND CONQUER

Kompleksitas Algoritma Dalam Algoritma Pengurutan

SEQUENTIAL SEARCH 11/11/2010. Sequential Search (Tanpa Variabel Logika) untuk kondisi data tidak terurut

Analisis Kompleksitas Waktu Untuk Beberapa Algoritma Pengurutan

Analisis Algoritm. Fundamentals of the Anlysis of Algorithm Efficiency

ANALISIS PERBANDINGAN METODE ALGORITMA QUICK SORT DAN MERGE SORT DALAM PENGURUTAN DATA TERHADAP JUMLAH LANGKAH DAN WAKTU

Analisa dan Perancangan Algoritma. Ahmad Sabri, Dr Sesi 2: 16 Mei 2016

PENGGUNAAN ALGORITMA DIVIDE AND CONQUER UNTUK OPTIMASI KONVERSI BILANGAN DESIMAL KE BINER

Konsep Sorting dalam Pemrograman Saniman dan Muhammad Fathoni

Analisa dan Perancangan Algoritma. Ahmad Sabri, Dr Sesi 1: 9 Mei 2016

Divide and Conqueradalah strategi militer yang dikenal dengan nama divide ut imperes.

MODUL IV PENCARIAN DAN PENGURUTAN

Searching [pencarian] Algoritma Pemrograman

Logika dan Algoritma Yuni Dwi Astuti, ST 2

: Mahasiswa mampu menjelaskan teknik pemrograman menggunakan Sorting. Quick Sort

Politeknik Elektronika Negeri Surabaya

SEKOLAH TINGGI MANAJEMEN INFORMATIKA & KOMPUTER JAKARTA STI&K SATUAN ACARA PERKULIAHAN

ANALISIS ALGORITMA BINARY SEARCH

1. Inggriani Liem Catatan Kuliah Algoritma & Pemrograman, Jurusan Teknik Informatika ITB

Algoritma Divide and Conquer

Algoritma Pemrograman

ANALISIS PERBANDINGAN ALGORITMA BUBBLE SORT, MERGE SORT, DAN QUICK SORT DALAM PROSES PENGURUTAN KOMBINASI ANGKA DAN HURUF

BAB 2 LANDASAN TEORI

FAKULTAS TEKNIK UNIVERSITAS NEGERI YOGYAKARTA SILABUS ALGORITMA DAN STRUKTUR DATA

Algoritma dan Kompleksitas Algoritma

Algoritma Divide and Conquer (Bagian 1)

Kompleksitas Algoritma Pengurutan Selection Sort dan Insertion Sort

ANALISIS ALGORITMA QUICKSORT

ANALISIS ALGORITMA. Disusun Oleh: Analisis Masalah dan Running Time. Adam Mukharil Bachtiar Teknik Informatika UNIKOM

Sorting. Selection Sort. Straight insertion Sort. Merge Sort Paradigma Divide-and-Conquer. Quicksort

Outline STRUKTUR DATA. VII. Sorting

Array (Tabel) Tim Pengajar KU1071 Sem /11/3 TW/KU1071 1

Searching. Algoritma dan Struktur Data. Ramos Somya, S.Kom., M.Cs.

UNIVERSITAS GUNADARMA

Pengurutan (Sorting) Keuntungan Data Terurut. Pengurutan Terbagi Dua Kelompok:

Pengertian Algoritma Pengurutan

BAB V SORTING (PENGURUTAN) INTERNAL

Sorting Algorithms. Buble Sort

Adam Mukharil Bachtiar English Class Informatics Engineering Algorithms and Programming Searching

BAB II PEMBAHASAN. A. USE CASE 1. Pengertian Use Case

Perbandingan Kecepatan/Waktu Komputasi Beberapa Algoritma Pengurutan (Sorting)

BAB 2 TINJAUAN PUSTAKA

Algoritma dan Pemrograman Lanjut. Pertemuan Ke-7 Pencarian (Searching) 2

LATIHAN UTS Tim Pengajar KU1071 Sem

Transkripsi:

Pemrogram bertanggung jawab atas implementasi solusi. Pembuatan program akan menjadi lebih sederhana jika masalah dapat dipecah menjadi sub masalah - sub masalah yang dapat dikelola. Penyelesaian masalah dengan komputer berhadapan dengan 4 hal, yaitu : 1. Pemahaman keterhubungan elemen-elemen data yang relevan terhadap solusi secara menyeluruh. 2. Pengambilan keputusan mengenai operasi-operasi yang dilakukan terhadap elemen-elemen data. 3. Perancangan representasi elemen-elemen data di memori sehingga memenuhi kriteria berikut: a. Memenuhi keterhubungan logik antara elemen-elemen data. b. Operasi-operasi terhadap elemen-elemen data dapat dilakukan secara mudah dan efisien. 4. Pengambilan keputusan mengenai mengenai bahasa pemrograman terbaik untuk menerjemahkan solusi persoalan menjadi program. STRATEGI DIVIDE AND CONQUER Metode Strategi Divide dan Conquer memecah masalah menjadi submasalah-submasalah independen yang lebih kecil sehingga solusi submasalah-submasalah dapat diperoleh secara mudah, solusi submasalah-submasalah digabung menjadi solusi seluruh masalah. Skema umum algoritma divide dan conquer Procedure DNC ( i,j : integer ) Var K : integer ; If SMALL (i,j) then SOLVE (i,j) Else begin K : = DIVIDE (i,j) COMBINE (DNC(i,k),DNC(k+1,j)) End if halaman 1 dari 9 halaman

Keterangan : 1. SMALL adalah fungsi yang mengirim BOOLEAN, menentukan apakah ukuran telah cukup kecil sehingga solusi dapat diperoleh.. Ukuran dinyatakan sebagai telah berukuran kecil bergantung masalah. 2. DIVIDE adalah fungsi membagi menjadi 2 bagian pada posisi K. Biasanya bagian berukuran sama. 3. COMBINE adalah fungsi menggabungkan solusi X dan Y submasalah. Solusi diperoleh dengan memanggil prosedur rekursif DNC. Jika ukuran kedua submasalah sama, waktu komputasi DNC dideskripsikan hubungan rekuren berikut : T(n) = g (n), n kecil 2 T (n/2) + f (n), selainnya dimana : T(n) adalah waktu untuk DNC dengan n masukan, g(n) adalah waktu komputasi jawaban secara langsung untuk masukan kecil dan f(n) adalah waktu COMBINE. Untuk algoritma divide dan conquer yang menghasilkan submasalah-submasalah dengan tipe masalah yang sama dengan masalah awal, sangat alami untuk mendeskripsikan algoritma secara rekursi. Kemudian untuk meningkatkan efisiensi dilakukan penerjemahan menjadi bentuk iterasi. Pemakaian teknik Divide dan Conquer banyak digunakan dalam menyelesaikan berbagai macam persoalan, antara lain : 1. Searching 2. Sorting halaman 2 dari 9 halaman

Binary Search (Pencarian Biner) dapat dilakukan jika data sudah dalam keadaan urut. Dengan kata lain, apabila data belum dalam keadaan urut, pencarian biner tidak dapat dilakukan. Dalam kehidupan sehari-hari, sebenarnya kita juga sering menggunakan pencarian biner. Misalnya saat ingin mencari suatu kata dalam kamus. Prinsip dari pencarian biner dapat dijelaskan sebagai berikut : 1. Mula-mula diambil posisi awal = 1 dan posisi akhir = N 2. Cari posisi data tengah dengan rumus (posisi awal + posisi akhir) / 2 3. Data yang dicari dibandingkan dengan data tengah. 4. Jika lebih kecil, proses dilakukan kembali tetapi posisi akhir dianggap sama dengan posisi tengah 1. 5. Jika lebih besar, proses dilakukan kembali tetapi posisi awal dianggap sama dengan posisi tengah + 1. 6. Demikian seterusnya sampai data tengah sama dengan yang dicari. Untuk lebih jelasnya, perhatikan contoh berikut. Misalkan kita ingin mencari 17 pada sekumpulan data berikut : 3 9 11 12 15 17 23 31 35 awal tengah akhir 1. Mula mula dicari data tengah, dengan rumus (1+ 9) / 2 = 5. 2. Berarti data tengah adalah data ke-5, yaitu 15. 3. Data yang dicari, yaitu 17, dibandingkan dengan data tengah ini. halaman 3 dari 9 halaman

4. Karena 17 > 15, berarti proses dilanjutkan tetapi kali ini posisi awal dianggap sama dengan posisi tengah + 1 atau 6. 3 9 11 12 15 17 23 31 35 awal tengah akhir 1. Data tengah yang baru didapat dengan rumus (6 + 9) / 2 = 7. Berarti data tengah yang baru adalah data ke-7, yaitu 23. 2. Data yang dicari, yaitu 17 dibandingkan dengan data tengah ini. 3. Karena 17 < 23, berarti proses dilanjutkan tetapi kali ini posisi akhir dianggap sama dengan posisi tengah 1 atau 6. 3 9 11 12 15 17 23 31 35 awal = akhir 1. Data tengah yang baru didapat dengan rumus (6 + 6) / 2 = 6. Berarti data tengah yang baru adalah data ke-6, yaitu 17. 2. Data yang dicari dibandingkan dengan data tengah ini dan ternyata sama. Jadi data ditemukan pada indeks ke-6. 3. Bagaimana jika data yang dicari tidak ada, misalnya 16? 4. Pencarian biner ini akan berakhir jika data ditemukan atau posisi awal lebih besar dari posisi akhir. 5. Jika posisi awal sudah lebih besar daripada posisi akhir berarti data tidak ditemukan. halaman 4 dari 9 halaman

Untuk lebih jelasnya perhatikan proses pencarian 16 pada data di atas. Prosesnya hampir sama dengan pencarian 17. Tetapi setelah posisi awal = posisi akhir = 6, proses masih dilanjutkan lagi dengan posisi awal = 6 dan posisi akhir = 5 3 9 11 12 15 17 23 31 35 akhir awal Disini dapat dilihat bahwa posisi awal lebih besar daripada posisi akhir, yang artinya data tidak ditemukan. Secara umum, algoritma pencarian biner dapat dituliskan sebagai berikut : 1. l 1. 2. r N. 3. ketemu false. 4. selama ( l < = r ) dan (not ketemu) kerjakan baris 5 sampai dengan 8. 5. m ( l + r ) / 2 6. Jika ( Data [m] = x ) maka ketemu true. 7. Jika ( x < Data [m] ) maka r m 1. 8. Jika ( x > Data [m] ) maka l m + 1. 9. If (ketemu) maka m adalah indeks dari data yang dicari, jika tidak data tidak ditemukan. Berikut ini adalah contoh fungsi untuk mencari data menggunakan pencarian biner. Function BinarySearch (x: word) : integer; var l, r, m : word; ketemu : boolean; begin halaman 5 dari 9 halaman

l : = 1; r : = N; ketemu : = false; while (1 <= r ) and ( not ketemu ) do begin m : = (1 + r ) div 2; if (Data [m] = x ) then Ketemu := true else if (x < Data [m] ) then r : = m 1 else l : = m + 1; end; end; if ( ketemu ) then BinarySearch : = m else BinarySearch : = -1; Fungsi di atas akan mengembalikan indeks dari data yang dicari. Apabila data tidak ditemukan, maka yang yang dikembalikan adalah 1. Jumlah pembandingan minimum pada pencarian biner adalah 1 kali, yaitu bila data yang dicari tepat berada di tengah-tengah. Jumlah pembandingan maksimum yang dilakukan dengan pencarian biner dapat dicari dengan rumus logaritma, yaitu : C = ²log (N) Metode Quick atau yang sering disebut juga metode partisi diperkenalkan pertama kali oleh C. A. R. Hoare pada tahun 1962. Pada metode quick, jarak dari kedua elemen yang ditukarkan dibuat cukup besar dengan tujuan untuk mempertinggi efektivitasnya. Hal ini mengingat metode gelembung yang menggunakan jarak cukup dekat ternyata kurang efektif. halaman 6 dari 9 halaman

Proses pengurutan dengan metode quick dapat dijelaskan sebagai berikut : mula-mula dipilih data tertentu yang dinamakan pivot, misalnya x. Pivot ini harus diletakkan pada posisi kej sedemikian hingga data antara 1 sampai dengan (j 1) lebih kecil daripada x; sedangkan data pada posisi ke-(j+1) sampai dengan N lebih besar daripada x. Cara pengaturannya adalah menukarkan data di antara posisi 1 sampai dengan (j 1) yang lebih besar daripada x dengan data di antara posisi (j + 1) sampai dengan N yang lebih kecil daripada x. Algoritma penyisipan langsung sendiri dapat dituliskan sebagai berikut: 1. x Data [( L + R) / 2)]. 2. i L 3. j R 4. Selama ( i < = j ) kerjakan baris 5 sampai dengan 12. 5. Selama ( Data [ i ] < x ) kerjakan i i + 1 6. Selama ( Data [ j ] > x ) kerjakan i j - 1 7. Jika (i < = j ) maka kerjakan baris 8 sampai dengan 10; jika tidak kerjakan baris 11. 8. Tukar Data [ i ] dengan Data [ j ]. 9. i i + 1 10. j j - 1 11. Jika ( L < j ) kerjakan lagi baris 1 dengan R = j. 12. Jika ( i < R ) kerjakan lagi baris 1 dengan L = i. Jika suatu barisan yang terdiri dari n elemen yang ditempatkan dalam suatu array dan urutan yang diinginkan adalah urutan yang tidak turun (non decreasing) maka dapat digunakan metode Quick Sort yang dengan teknik Divide and Conquer. Adapun algoritma Quick Sort tersebut terdiri dari dua prosedur yaitu prosedur PARTITION dan prosedur QUICKSORT. Berikut ini disajikan algoritma Quick Sort yang dimaksud, yaitu : PROCEDURE QUICKSORT(p,q) IF p < q then j q + 1 CALL PARTITION(p,j) CALL QUICKSORT(p,j-1) halaman 7 dari 9 halaman

CALL QUICKSORT(j+1,q) END IF END QUICKSORT PROCEDURE PARTITION(m,p) INTEGER m,p,i ; GLOBAL A(m-1,p) V A(m) ; i m LOOP LOOP i i + 1 UNTIL A( i ) > = V REPEAT LOOP p p - 1 UNTIL A( p ) < = V REPEAT IF i < p THEN CALL INTERCHANGE (A(i),A(p)) ELSE EXIT END IF REPEAT A(m) A(p) A(p) V END PARTITION Contoh : Suatu Array A terdiri dari 9 elemen, yaitu : A(1) = 65 A(4) = 80 A(7) = 60 A(2) = 70 A(5) = 85 A(8) = 50 A(3) = 75 A(6) = 60 A(9) = 45 Elemen-elemen tersebut akan disusun secara tidak turun berdasarkan algoritma Quick Sort. Jalannya proses pada algoritma tersebut disajikan dalam bentuk tabel sebagai berikut : 1 2 3 4 5 6 7 8 9 10 i p 65 70 75 80 85 60 55 50 45 2 9 65 45 75 80 85 60 55 50 70 3 8 65 45 50 80 85 60 55 75 70 4 7 halaman 8 dari 9 halaman

65 45 50 55 85 60 80 75 70 5 6 65 45 50 55 60 85 80 75 70 6 5 1 2 3 4 5 6 7 8 9 10 i p 65 45 50 55 60 85 80 75 70 6 9 65 45 50 55 60 70 80 75 85 7 8 65 45 50 55 60 70 75 80 85 8 7 Dan seterusnya EXIT Analisisnya : Hitung jumlah dari perbandingan-perbandingan elemennya dalam hal ini disimpan dalam variable C(n) dan kita asumsikan bahwa : n elemen yang disortir berbeda, proses pembagian (partisi) elemen V dalam prosedur PARTITION dilakukan dengan proses seleksi secara acak. Worst Case dari C(n) dinotasikan dengan Cw(n). C(n) di dalam setiap pemanggilan prosedur PARTITION maksimum sebesar ( p q + 1 ) kali. Misalkan r adalah jumlah kumulatif dari elemen-elemen di dalam seluruh pemanggilan prosedur PARTITION pada setiap tingkat dari teknik rekursif tersebut. Pada tingkat pertama terjadi pemanggilan prosedur PARTITION sebanyak satu (1) kali yakni CALL PARTITION ( 1, n + 1 ) dan nilai r = n. Pada tingkat kedua terjadi pemanggilan prosedur PARTITION paling banyak dua (2) kali dan nilai r = n 1, dan seterusnya dengan cara yang sama pada tingkat berikutnya. Dengan demikian dari proses tersebut diperoleh Cw(n) akan sama dengan jumlah seluruh tingkat (r) dan nilai r berkisar didalam interval [ 2, n ]. Jadi kompleksitas waktunya (Worst Case) = Cw (n ) = O ( n² ) dan Average Case = CA(n) = O ( n log n ). halaman 9 dari 9 halaman