Solusi UTS Stima. Alternatif 1 strategi:

dokumen-dokumen yang mirip
Algoritma Divide and Conquer (Bagian 2)

Decrease and Conquer

Algoritma Divide and Conquer. (Bagian 2)

Quick Sort dan Merge Sort. Arna Fariza Yuliana Setiowati

STRATEGI DIVIDE AND CONQUER

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

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

Sorting Algorithms. Algoritma dan Struktur Data. Sorting algorithms

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

Aplikasi Strategi Algoritma dalam Pembagian Kelompok Tugas Besar

SATUAN ACARA PERKULIAHAN MATA KULIAH LOGIKA DAN ALGORITMA (MI/D3) KODE: IT SKS: 3 SKS. Kemampuan Akhir Yang Diharapkan

UNIVERSITAS GUNADARMA

ALGORITMA GREEDY : MINIMUM SPANNING TREE. Perbandingan Kruskal dan Prim

Penggunaan Algoritma Greedy dalam Membangun Pohon Merentang Minimum

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

STRUKTUR DATA. Nama : Sulfikar Npm : STMIK Handayani Makassar

ANALISIS PERBANDINGAN ALGORITMA SELECTION SORT DENGAN MERGE SORT

Algoritma Bubble Sort dan Quick Sort

Gambar 6. Graf lengkap K n

Studi Algoritma Optimasi dalam Graf Berbobot

SORTING DENGAN ALGORITMA DIVIDE AND CONQUER

RESUME ALGORITMA MERGE SORT DAN REKURENS

Algoritma Brute-Force dan Greedy dalam Pemrosesan Graf

Algoritma Greedy (lanjutan)

Analisis Kompleksitas Waktu Untuk Beberapa Algoritma Pengurutan

Analisis Kecepatan Sorting Dengan Notasi Big O

OPTIMASI ALGORITMA POHON MERENTANG MINIMUM KRUSKAL

BAB VI SORTIR ATAU PENGURUTAN

BAB I PENDAHULUAN Latar Belakang

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

BAB VII ALGORITMA DIVIDE AND CONQUER

SATUAN ACARA PERKULIAHAN MATA KULIAH GRAPH & ANALISIS ALGORITMA (SI / S1) KODE / SKS : KK / 3 SKS

Kemangkusan Algoritma Pada Beberapa Variasi Quick Sort

Perbandingan Kecepatan/Waktu Komputasi Beberapa Algoritma Pengurutan (Sorting)

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

Pohon Biner Sebagai Struktur Data Heap dan Aplikasinya

Algoritma Divide and Conquer

Implementasi Logika Penurunan Persamaan Aritmatika pada Program Komputer

SILABUS MATAKULIAH. Indikator Pokok Bahasan/Materi Aktifitas Pembelajaran

BAB 2 TINJAUAN PUSTAKA

Algoritma Transposisi (Bubble Sort/pengurutan gelembung)

UNIVERSITAS GUNADARMA

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

Algoritma Greedy (lanjutan)

SATUAN ACARA PERKULIAHAN PERANCANGAN DAN ANALISIS ALGORITMA ** (S1/TEKNIK INFORMATIKA) PTA 2010/2011

ALGORITMA DIVIDE AND CONQUER

Kompleksitas Algoritma Dalam Algoritma Pengurutan

Aplikasi Divide and Conquer pada Perkalian Large Integer untuk Menghitung Jumlah Rute TSP Brute Force

MEMBANDINGKAN KEMANGKUSAN ALGORITMA PRIM DAN ALGORITMA KRUSKAL DALAM PEMECAHAN MASALAH POHON MERENTANG MINIMUM

Algoritma Brute Force (lanjutan)

Kompleksitas Algoritma

Modul Praktikum 6 Pemograman Berorientasi Objek

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

MAKALAH ALGORITMA DIVIDE AND CONQUER

Pemanfaatan Algoritma Hybrid Ant Colony Optimization dalam Menyelesaikan Permasalahan Capacitated Minimum Spanning Tree. Tamam Asrori ( )

PERTEMUAN 15 REVEW/QUIZ

Analisis Pengimplementasian Algoritma Greedy untuk Memilih Rute Angkutan Umum

Algoritma Divide and Conquer (Bagian 1)

Perbandingan Algoritma Brute Force dan Breadth First Search dalam Permainan Onet

BAB 3 ANALISA SISTEM

Penerapan BFS dan DFS pada Pencarian Solusi

TERAPAN POHON BINER 1

Aplikasi Algoritma Dijkstra dalam Pencarian Lintasan Terpendek Graf

PERBANDINGAN KOMPLEKSITAS PENERAPAN ALGORITMA GREEDY UNTUK BEBERAPA MASALAH

BAB 2 LANDASAN TEORI

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

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

STRUKTUR DATA SORTING ARRAY

Penerapan Algoritma Greedy untuk Memecahkan Masalah Pohon Merentang Minimum

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

Design and Analysis Algorithm

Bab Tujuan. 6.2 Insertion Sort

Bab 1 Pengantar Struktur Data

BAB 2 LANDASAN TEORI

BAB II TINJAUAN PUSTAKA

CRITICAL PATH. Menggunakan Graph berbobot dan mempunya arah dari Critical Path: simpul asal : 1 simpul tujuan : 5. Graph G. Alternatif

Algoritma Branch & Bound

INTRODUCTION TO GRAPH THEORY LECTURE 2

Penerapan BFS dan DFS pada Pencarian Solusi

Studi Mengenai Perbandingan Sorting Algorithmics Dalam Pemrograman dan Kompleksitasnya

MILIK UKDW BAB I PENDAHULUAN. 1.1 Latar Belakang Masalah

BAB 1 PENDAHULUAN. 1.1 Latar belakang

IF5110 Teori Komputasi. Teori Kompleksitas. (Bagian 1) Oleh: Rinaldi Munir. Program Studi Magister Informatika STEI-ITB

ALGORITMA RUTE FUZZY TERPENDEK UNTUK KONEKSI SALURAN TELEPON

8/29/2014. Kode MK/ Nama MK. Matematika Diskrit 2 8/29/2014

METODE DEVIDE AND CONQUER (DANDC)

Algoritma Greedy (Bagian 2) IF2251 Strategi Algoritmik Oleh: Rinaldi Munir

Perbandingan Algoritma Dijkstra dan Algoritma Floyd-Warshall dalam Penentuan Lintasan Terpendek (Single Pair Shortest Path)

BAB 1 PENDAHULUAN. 1.1 Latar Belakang

TINJAUAN PUSTAKA. Pada bagian ini akan diberikan konsep dasar graf dan bilangan kromatik lokasi pada

Penerapan Teori Graf Pada Algoritma Routing

PERTEMUAN 10 METODE DEVIDE AND CONQUER

IMPLEMENTASI ALGORITMA GREEDY PADA PERMAINAN OTHELLO

BAB III ALGORITMA BRANCH AND BOUND. Algoritma Branch and Bound merupakan metode pencarian di dalam ruang

BAB 2 LANDASAN TEORI

PERBANDINGAN KOMPLEKSITAS ALGORITMA PENCARIAN BINER DAN ALGORITMA PENCARIAN BERUNTUN

RENCANA PEMBELAJARAN SEMESTER (RPS)

Penerapan Pohon Dalam Heap Sort

BAB 1 PENDAHULUAN. Universitas Sumatera Utara

KONTRAK PEMBELAJARAN (KP) MATA KULIAH. Algoritma dan Pemrograman

Transkripsi:

Solusi UTS Stima 1. a. (Nilai 5) Representasikanlah gambar kota di atas menjadi sebuah graf, dengan simpul merepresentasikan rumah, dan bobot sisi merepresentasikan jumlah paving block yang dibutuhkan. Jembatan dihitung sebagai satu paving block. A 5 F B 2 C 5 D E 2 2 G H I 2 J b. (Nilai 15) Jika diselesaikan dengan exhaustive search, jelaskan strateginya seperti apa (tidak perlu pseudo-code), lalu tentukanlah kompleksitas algoritmanya dalam notasi big O. Persoalan ini adalah persoalan minimum spanning tree. Alternatif 1 strategi: - enumerasi semua spanning tree berupa lintasan hamilton dgn cara membuat semua permutasi semua simpul (telah memenuhi syarat tidak siklik), terdapat (n-1)! - evaluasi setiap spanning tree dengan menghitung bobot lintasan - Ambil spanning tree dengan bobot paling minimum Kompleksitas: O(n.n!), n adalah jumlah simpul Alternatif 2 strategi: - enumerasi semua subset sisi, terdapat 2 n, dengan n adalah jumlah sisi. - evaluasi setiap subset yang memenuhi spanning tree (tidak siklik, melewati semua simpul) dengan menghitung bobot lintasan - Ambil spanning tree dengan bobot paling minimum Kompleksitas: O(n.2 n ), n adalah jumlah sisi

2. (Nilai 15) Jika diselesaikan dengan greedy, rancanglah strategi greedy terbaiknya, dan tentukanlah kompleksitas algoritmanya dalam notasi big O. Alternatif 1: dgn menggunakan Kruskal: 1. Sort semua sisi berdasarkan jumlah paving block: BC(2), EH(2), FG(2), IJ(2), AD(), 2. Tambahkan sisi secara berurutan untuk membentuk pohon jika tidak membentuk siklik. Jika membentuk siklik, sisi diabaikan. Hal ini dilakukan sampai semua simpul sudah dicapai. Solusi optimum : BC(2)-EH(2)-FG(2)-IJ(2)-AD()-CE()-DF()-FI()-GH(). Total bobot=2. Kompleksitas: O( E log E ) Alternatif 2: dgn menggunakan Prim: Ambil simpul awal (misalnya A atau simpul dgn bobot terpendek), lalu bangun tree T secara greedy, dengan menambahkan sisi terpendek yang menghubungkan salah satu simpul yang telah terpilih dengan simpul yang belum terpilih. Solusi optimum: A-D-F-G-H-E-C-B-I-J atau B-C-E-H-G-F-D-A-I-J. Total bobot=2. Kompleksitas: O(n 2 ). Jawaban untuk MergeSort (Nilai 7) Banyaknya prosedur MergeSort yang dipanggil, tidak dinilai. Selama proses benar, maka mendapatkan nilai penuh. Partisi yang dilakukan harus konsisten: ((i+j div 2) atau ((i+j div 2)-1)). Jika mahasiswa menggunakan basis 2, maka harus menyertakan pseudo code untuk penanganan basis 2, karena basis 2 harus ada pemeriksaan nilai antara 2 elemen tersebut. Jika tidak ada pseudo code ketika menggunakan basis 2, nilai dikurangi 1.

Pemanggilan prosedur MergeSort: MergeSort (A,1,7) a. MergeSort (A,1,) i. MergeSort(A,1,2) 1. MergeSort(A,1,1) 2. MergeSort(A,2,2) ii. MergeSort(A,,)) 1. MergeSort(A,,) 2. MergeSort(A,,) b. MergeSort(A,5,7) i. MergeSort(A,5,6) 1. MergeSort(A,5,5) 2. MergeSort(A,6,6) ii. MergeSort(A,7,7) Jawaban untuk QuickSort (Nilai 8) Banyaknya prosedur QuickSort yang dipanggil, tidak dinilai. Selama proses benar, maka mendapatkan nilai penuh. Dalam kuliah diberikan 2 versi prosedur QuickSort, yaitu versi pivot disertakan dalam partisi (versi 1), dan versi pivot tidak disertakan dalam partisi (versi 2). Jika mahasiswa menggunakan versi campur-campur, harus menyertakan pseudo code agar jelas proses QuickSort yang dilakukan. Jika tidak, akan sulit diperiksa apakah prosedur QuickSort yang dilakukan konsisten atau tidak. Untuk kedua versi, swap dilakukan ketika: - A[p] pivot; dan - A[q] pivot; dan - p < q; dengan p adalah variabel yang bergerak dari kiri ke kanan, dan q adalah variabel yang bergerak dari kanan ke kiri. Setelah swap, p dimulai lagi dari p=p+1, dan q dimulai dari q=q-1. Dalam prosedur QuickSort tidak ada merge, karena selesai melakukan partisi, array sudah dalam posisi terurut. Versi 1, pivot masuk ke partisi, p dimulai dari elemen pertama. p=1, q=7 Iterasi 1 2 5 6 7 E X A M P L E 1 P q Tukar E di indeks 1 dengan E di indeks 7, A[p] pivot, dan A[q] pivot Mulai lagi penelusuran dengan indeks p= p+1=2, q=q-1=6, belum dipartisi, kondisi larik setelah di iterasi: E X A M P L E p Q Tukar X di indeks 2 dengan A di indeks, karena A[p] pivot, dan A[q] pivot, kondisi larik menjadi: E A X M P L X Mulai lagi penelusuran dengan indeks p=p+1=, dan q=q-1=2

Karena p > q maka penelusuran dihentikan, proses pemisahan dilakukan pada indeks q Panggil prosedur (2) QuickSort(A,1,2) dan () QuickSort(A,,7) QuickSort(A,1,2) 2 E A p q Tukar E di indeks 1 dengan A di indeks 2, A[p] pivot, dan A[q] pivot Mulai lagi penelusuran dengan indeks p= p+1=2, q=q-1=1 Karena p > q maka penelusuran dihentikan, proses pemisahan dilakukan pada indeks q Panggil prosedur () QuickSort(A,1,1) dan (5) QuickSort(A,2,2). Karena hanya satu elemen, tidak melakukan apapun pada pemanggilan dua prosedur tersebut. Kondisi larik setelah pemanggilan QuickSort(A,1,2): A E X M P L E QuickSort(A,,7) X M P L E p q Tukar X di indeks dengan E di indeks 7, karena A[p] pivot, dan A[q] pivot Mulai lagi penelusuran dengan indeks p= p+1=, q=q-1=6, belum dipartisi, kondisi larik setelah di iterasi: E M P L X Q p Iterasi berhenti ketika p=7 (karena sudah indeks terakhir), dan q tetap di 6 karena A[q] pivot. Penukaran tidak dilakukan karena p > q, jadi partisi dilakukan pada q = 6 Panggil prosedur (6) QuickSort(A,,6) dan (7) QuickSort(A,7,7). Karena prosedur QuickSort(A,7,7) hanya 1 elemen, maka sudah mencapai basis. 6 QuickSort(A,,6) E M P L P q Awal iterasi p berada pada indeks dan q berada pada indeks 6. Indeks p tidak maju karena A[p] pivot, sedangkan q akan terus berkurang hingga sampai pada indeks, karena A[q] pivot. Kemudian ditukar elemen pada indeks p dan q, namun karena mengacu pada hal yang sama, maka tetap. Partisi dilakukan pada indeks q, dan memanggil prosedur (8) QuickSort(A,,) dan (9) QuickSort(A,,6). Karena prosedur QuickSort(A,,) hanya terdiri atas 1 elemen maka sudah mencapai basis. 9 QuickSort(A,,6) M P L p q Tukar M di indeks dengan L di indeks 6, karena A[p] pivot, dan A[q] pivot Mulai lagi penelusuran dengan indeks p= p+1=5, q=q-1=5. Setelah penelusuran, p berhenti di indeks 5 karena A[p] pivot, dan q berhenti di indeks karena A[q] pivot. Karena p > q maka penelusuran dihentikan, proses pemisahan dilakukan pada indeks q. Panggil prosedur (10) QuickSort(A,,) dan (11) QuickSort(A,5,6). Karena QuickSort(A,,) hanya satu elemen, maka sudah mencapai basis. 11 QuickSort(A,5,6) P M p q Tukar P di indeks 5 dengan M di indeks 6, karena A[p] pivot, dan A[q] pivot Mulai lagi penelusuran dengan indeks p= p+1=6, q=q-1=5. Karena p > q maka penelusuran dihentikan, proses pemisahan dilakukan pada indeks q. Panggil prosedur (12) QuickSort(A,5,5) dan (1) QuickSort(A,6,6). Karena keduanya hanya satu elemen, maka sudah mencapai basis. Kondisi setelah pemanggilan terakhir QuickSort adalah sebagai berikut. Hasil: A E E L M P X

Versi 2, pivot tidak termasuk partisi manapun, pemeriksaan p dimulai setelah elemen pertama Iterasi 1 2 5 6 7 E X A M P L E 1 pivot p q Tukar X di indeks 2 dengan E di indeks 7 Mulai lagi penelusuran dengan indeks p= p+1=, q=q-1=6, belum dipartisi, kondisi larik: E E A M P L X pivot q p Karena p>q maka partisi dilakukan di sini, swap pivot dengan posisi terakhir q (A[1] dengan A[]) Panggil prosedur: QuickSort(A,E) QuickSort(MPLX) Posisi akhir pada tahap ini: A E E M P L X 2 QuickSort(A, E) A E pivot pq q bergerak ke kiri, p berhenti di indeks 2, sehingga p=2, q=1. Karena p>q maka partisi dilakukan di sini, swap A[q] dengan pivot (A dengan A), panggil prosedur: QuickSort(E) QuickSort(E) E Sudah basis M P L X pivot p q Tukar P di indeks 5 dengan L di indeks 6 Mulai lagi penelusuran dengan indeks p=5+1=6, q=6-1=5 Karena p>q maka partisi dilakukan di sini, swap A[] dengan A[5] Panggil: QuickSort(L) QuickSort(P,X) Posisi akhir pada tahap ini: L M P X 5 QuickSort(L) L Sudah basis 6 QuickSort(P,X) P X pivot pq q bergerak ke kiri, p berhenti di indeks 7, sehingga p=7, q=6. Karena p>q maka partisi dilakukan di sini, panggil prosedur: QuickSort(X) 7 QuickSort(X) X Sudah basis Hasil: A E E L M P X

. Jawaban untuk maximum sub-array (Terdapat sebuah larik A yang berisi bilangan bulat positif dan negatif sebagai berikut. {2,-, 1, 9, -6, 7, -}). a. (Nilai 10) o Bagi larik menjadi dua bagian dengan ukuran yang relatif sama. o Cari nilai maksimum di antara ketiga nilai berikut ini: Maksimum jumlah upalarik dari bagian kiri (pemanggilan rekursif) Maksimum jumlah upalartik bagian kanan (pemanggilan rekursif) Maksimum jumlah upalarik yang melewati bagian tengah larik (mengandung bagian kiri dan kanan), dengan cara: Cari jumlah maksimum upalarik mulai dari elemen tengah ke kiri Cari jumlah maksimum upalarik mulai dari elemen tengah+1 ke kanan Kombinasikan keduanya dan jumlahkan hasilnya b. (Nilai 5) Kasus basis: terdiri atas 1 elemen, mengembalikan elemen itu sendiri. Kasus rekurens: 2 kali pemanggilan prosedur dengan parameter setengahnya, ditambah waktu untuk mencari jumlah upalarik yang melewati bagian tengah (waktu linear). a T ( n) = 2T ( n / 2) + cn, n = 1, n > 1 c. (Nilai 5) Dari formula di butir (b), diketahui nilai a = 2, b = 2, dan d = 1. Berdasarkan teorema master, karena = maka kompleksitas pendekatan Divide and Conquer untuk kasus (a) adalah: O(n log n) 5. Diketahui n = 9 (jumlah data) s = Bilangan terbesar ke-5 = bilangan terkecil ke 9/2 = median Partisi latrik dengan metode partisi di dalam algoritma Quicksort varian 2 1 9 18 6 8 11 15 7 12 p Pertukarkan 18 12, lalu pindai dari p+1 dan q-1 1 9 12 6 8 11 15 7 18 p Pertukarkan 15 7, lalu pindai dari p+1 dan q-1 1 9 12 6 8 11 7 15 18 p (p > q stop) 7 9 12 6 8 11 1 15 18 Karena s = 7 > 5 maka ambil larik bagian kiri 7 9 12 6 8 11

p Pertukarkan 9 8, lalu pindai dari p+1 dan q-1 7 6 12 9 8 11 p (p > q stop) 6 7 12 9 8 11 Karena s = 2 < 5 maka ambil larik bagian kanan 12 9 8 11 11 9 8 12 Karena s = 6 > 5 maka ambil larik bagian kiri 11 9 8 9 8 11 Karena s = 5 maka nilai terbesar ke-5 ditemukan, yaitu 11 6. BFS Salah satu kemungkinan solusi:

Kemungkinan lain: DFS: Salah satu kemungkinan solusi