Pembahasan UTS IF2211. Tim Pengajar IF2211 Strategi Algoritma

dokumen-dokumen yang mirip
Solusi UTS Stima. Alternatif 1 strategi:

Decrease and Conquer

Algoritma Greedy (lanjutan)

Algoritma Greedy (lanjutan)

UNIVERSITAS GUNADARMA

Algoritma Brute-Force dan Greedy dalam Pemrosesan Graf

Algoritma Branch & Bound

UNIVERSITAS GUNADARMA

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

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

Branch & Bound. Bahan Kuliah IF2211 Strategi Algoritma Rinaldi Munir & Masayu Leylia Khodra

Create PDF with GO2PDF for free, if you wish to remove this line, click here to buy Virtual PDF Printer

Penerapan BFS dan DFS pada Pencarian Solusi

Penggunaan Algoritma Greedy dalam Membangun Pohon Merentang Minimum

Pengantar Strategi Algoritmik. Oleh: Rinaldi Munir

Studi Algoritma Optimasi dalam Graf Berbobot

Pengantar Strategi Algoritma

Analisis Beberapa Algoritma dalam Menyelesaikan Pencarian Jalan Terpendek

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

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

Algoritma Brute Force (lanjutan)

Penerapan Pohon dengan Algoritma Branch and Bound dalam Menyelesaikan N-Queen Problem

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

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

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

Aplikasi Algoritma Branch and Bound dalam Pencarian Solusi Optimum Job Assignment Problem

Perbandingan Algoritma Brute Force dan Breadth First Search dalam Permainan Onet

Penerapan Algoritma Greedy dan Breadth First Search pada Permainan Kartu Sevens

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

Kecerdasan Buatan. Penyelesaian Masalah dengan Pencarian... Pertemuan 02. Husni

Pencarian Pohon Solusi Permainan Alchemy Menggunakan Algoritma BFS dan DFS

Aplikasi Algoritma Dijkstra dalam Pencarian Lintasan Terpendek Graf

Implementasi Logika Penurunan Persamaan Aritmatika pada Program Komputer

Pembahasan Pencarian Lintasan Terpendek Menggunakan Algoritma Dijkstra dan A*

Kecerdasan Buatan Penyelesaian Masalah dengan Pencarian

Penerapan Algoritma Branch And Bound Dalam Optimasi Assigment Problem

Pohon Biner Sebagai Struktur Data Heap dan Aplikasinya

Menyelesaikan Puzzle Matematika Braingle dengan Algoritma Brute Force

Penerapan Algoritma DFS pada Permainan Sudoku dengan Backtracking

Penerapan BFS dan DFS pada Pencarian Solusi

ALGORITMA MENCARI LINTASAN TERPENDEK

Penerapan Algoritma Runut-balik pada Permainan Math Maze

ALGORITMA GREEDY : MINIMUM SPANNING TREE. Perbandingan Kruskal dan Prim

Soal dan Jawaban Materi Graf, Pohon, dan Kompleksitas Algoritma

PENERAPAN ALGORITMA BRANCH AND BOUND DALAM MENENTUKAN RUTE TERPENDEK UNTUK PERJALANAN ANTARKOTA DI JAWA BARAT

METODE BRANCH AND BOUND UNTUK MENEMUKAN SHORTEST PATH

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

Implementasi Algoritma Greedy dalam Pembagian kerja pada Mesin yang Identik

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

Branch and Bound untuk Rute Terpendek Tur Pengenalan Labtek V Gedung Benny Subianto Chita Najmi Nabila /

Algoritma Divide and Conquer (Bagian 1)

Pemecahan Masalah Knapsack dengan Menggunakan Algoritma Branch and Bound

Algoritma Branch and Bound dalam Kegunaannya Memecahkan Assignment Problem

Deteksi Wajah Menggunakan Program Dinamis

Analisis Penerapan Algoritma Kruskal dalam Pembuatan Jaringan Distribusi Listrik

PERBANDINGAN APLIKASI ALGORITMA BRUTE-FORCE DAN KOMBINASI ALGORITMA BREADTH FIRST SEARCH DAN GREEDY DALAM PENCARIAN SOLUSI PERMAINAN TREASURE HUNT

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

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

Menentukan Titik Evakuasi Selanjutnya bagi Sekelompok Regu Tim SAR dengan Algoritma Branch and Bound

Tujuan Instruksional

Algoritma Branch & Bound untuk Optimasi Pengiriman Surat antar Himpunan di ITB

Graf untuk soal nomor 7

Menentukan Susunan Terbaik Tim Proyek dengan Algoritma Branch and Bound

Analisis Pengimplementasian Algoritma Greedy untuk Memilih Rute Angkutan Umum

Penerapan DFS dan BFS dalam Pencarian Solusi Game Japanese River IQ Test

ALGORITMA PENCARIAN SIMPUL SOLUSI DALAM GRAF

Penerapan Algoritma Greedy dalam Pencarian Rantai Penjumlahan Terpendek

dengan Algoritma Branch and Bound

Algoritma Brute Force(lanjutan) Lecture 6 CS3024

Penyelesaian Traveling Salesman Problem dengan Algoritma Heuristik

Penerapan Algoritma Branch and Bound untuk Optimasi Rute Penempelan Poster di Papan Mading ITB

ALGORITMA RUNUT-BALIK UNTUK MENGGANTIKAN ALGORITMA BRUTE FORCE DALAM PERSOALAN N-RATU

Penerapan Algoritma Greedy untuk Memecahkan Masalah Pohon Merentang Minimum

Perbandingan Algoritma Brute Force dan Backtracking dalam Permainan Word Search Puzzle

BAB 2 LANDASAN TEORI

Penggabungan Algoritma Brute Force dan Backtracking dalam Travelling Thief Problem

Algoritma Brute Force (lanjutan)

IMPLEMENTASI GRAF DENGAN MENGGUNAKAN STRATEGI GREEDY

Penggunaan BFS dan DFS untuk Pixel Traversing

Algoritma Runut-balik (Backtracking)

TERAPAN POHON BINER 1

Penggunaan Algoritma Divide and Conquer Dalam Pewarnaan Graf

SILABUS MATAKULIAH. Indikator Pokok Bahasan/Materi Aktifitas Pembelajaran

PERBANDINGAN KOMPLEKSITAS ALGORITMA PENCARIAN BINER DAN ALGORITMA PENCARIAN BERUNTUN

Pemecahan Masalah Longest Increasing Subsequence Memanfaatkan Program Dinamis dan Binary Search

Pembahasan Penyisihan Competitive Programming Tingkat Mahasiswa. CompFest 2013

Design and Analysis Algorithm

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

Design and Analysis of Algorithm

ALGORITMA RUTE FUZZY TERPENDEK UNTUK KONEKSI SALURAN TELEPON

Analisis dan Strategi Algoritma

Pemanfaatan Pohon Biner dalam Pencarian Nama Pengguna pada Situs Jejaring Sosial

Penggunaan Algoritma Pathfinding pada Game

Penerapan Algoritma Branch and Bound untuk Penentuan Jalur Wisata

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

Penerapan Algoritma BFS dan DFS dalam Mencari Solusi Permainan Rolling Block

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

OPTIMASI ALGORITMA POHON MERENTANG MINIMUM KRUSKAL

UKDW BAB 1 PENDAHULUAN. 1.1 Latar Belakang Masalah

Transkripsi:

Pembahasan UTS IF2211 Tim Pengajar IF2211 Strategi Algoritma

Soal 1: Brute Foce dan Divide and Conquer 2

(a) Hitung jumlah inversi dan pasangan inversinya pada senarai A = [1, 5, 4, 8, 10, 2, 6, 9, 3, 7]. (7,5) Jawaban: ada 17 buah inversi: (5, 4), (4, 2), (8, 2), (10, 2), (6, 3), (9, 3) (5, 2), (4, 3), (8, 6), (10, 6), (9, 7) (5, 3), (8, 3), (10, 9), (10, 3), (8, 7), (10, 7) (b) Jika persoalan inversi diselesaikan dengan algoritma Brute-Force, bagaimana langkah-langkahnya? Jelaskan! Berapa jumlah perbandingan elemen yang dibutuhkan dan berapa kompleksitas algoritma dalam notasi Big-Oh? Jawaban: Mulai dari i = 1...n-1 Mulai dari k = i+1..n jika A[k] > A[i] maka catat sebagai inversi T(n) = (n 1) + (n 2) + + 2 + 1 = n(n 1)/2 = O(n 2 ) 3

(c) Jika diselesaikan dengan algoritma Divide and Conquer, bagaimana langkahlangkahnya? Jelaskan dengan contoh senarai delapan elemen! Berapa jumlah perbandingan elemen yang dibutuhkan dan berapa kompleksitas algoritma dalam notasi Big-Oh? Apakah kompleksitas algoritmanya lebih baik dari brute force? (10) Jawaban: Bagi larik menjadi dua bagian, lalu untuk setiap bagian hitung inversi. Tahap combine : bandingkan setiap elemen di larik bagian kiri dengan setiap elemen di bagian kanan. Jika elemen kiri > elemen kanan, catat sebagai inversi. Tahap combine ini membutuhkan perbandingan elemen sebanyak cn 2 T(n) = 1, n = 2 = 2T(n/2) + cn 2, n > 2 Jika diselesaikan dengan Torema Master, diperoleh T(n) = O(n 2 ). Tetap sama dengan Brute Force 4

(d) Jika digunakan algoritma Mergesort dalam menyelesaikan masalah ini, bagaimana caranya? Jelaskan dengan contoh senarai delapan elemen! Berapa kompleksitas algoritmanya? Apakah kompleksitas algoritmanya lebih baik dari jawaban b dan c? Jawaban: Pada tahap combine dengan Mergesort, masing larik bagian kiri dan larik bagian kanan sudah terurut menaik. Ketika menggabungkan ke matriks B, sekaligus diperiksa apakah elemen bagian kiri lebih besar dari elemen bagian kanan. Jika iya, catat sebagai inversi. Jumlah perbandingan pada tahap combine adalah cn. T(n) = 1, n = 2 = 2T(n/2) + cn, n > 2 Jika diselesaikan dengan Torema Master, diperoleh T(n) = O(n log n). Lebih baik daripada b dan c 5

Soal 2: DFS dan BFS (a) Dari setiap pernyataan di bawah ini, tentukan apakah pernyataan tersebut benar atau salah. Jika benar cukup tuliskan Benar, jika salah, tuliskan pernyataan yang seharusnya sehingga menjadi pernyataan yang benar. (i) Cara kerja algoritma DFS seperti struktur data queue, dan cara kerja algoritma BFS seperti struktur data stack. (Nilai 3) Jawab: Salah Cara kerja algoritma DFS seperti struktur data stack, dan cara kerja algoritma BFS seperti struktur data queue. (ii) Penelusuran secara DFS pada sebuah graf berarah, akan menghasilkan pohon-pohon penelusuran yang sama jika dimulai dari sembarang simpul pada graf tersebut. (Nilai 3) Jawab: Salah Penelusuran secara DFS pada sebuah graf berarah, akan menghasilkan pohon-pohon penelusuran yang belum tentu sama jika dimulai dari sembarang simpul pada graf tersebut. (iii) Terdapat graf pada Gambar 1, dan penelusuran secara BFS pada graf tersebut jika dimulai dari simpul Q (dengan expand selanjutnya memperhatikan urutan alfabet) adalah QMNPOR. (Nilai 3) Jawab: Salah Seharusnya: QMNPRO 6

Soal 2: DFS dan BFS (2) (b) Terdapat sebuah graf pada Gambar 2, yang menunjukkan keterhubungan antar simpul dan jarak antar simpul. (i) Tuliskan dengan lengkap tabel yang menunjukkan pohon pencarian jalur dari simpul A ke simpul G dengan cara DFS, dengan urutan pemeriksaan tetangga sesuai urutan alfabet. Tabel berisi informasi simpul ekspan dan simpul hidup. Tuliskan jalur yang dihasilkan dan jarak dari jalur yang dihasilkan. (Nilai 5) Jawab: Simpul Ekspan Simpul Hidup A B A,C A, F A B A D AB, J AB, C A, F A D AB E ABD, G ABD, H ABD, J AB, C A, F A E ABD G ABDE, G ABD, H ABD, J AB, C A, F A G ABDE Goal ditemukan Jadi jalur yang ditemukan dengan cara DFS adalah A-B-D-E-G dengan jarak 16. 7

Soal 2: DFS dan BFS (3) (b) Terdapat sebuah graf pada Gambar 2, yang menunjukkan keterhubungan antar simpul dan jarak antar simpul. (ii) Tuliskan dengan lengkap tabel yang menunjukkan pohon pencarian jalur dari simpul A ke simpul G dengan cara BFS, dengan urutan pemeriksaan tetangga sesuai urutan alfabet. Tabel berisi informasi simpul ekspand dan simpul hidup. Tuliskan jalur yang dihasilkan dan jarak dari jalur yang dihasilkan. (Nilai 5) Simpul Ekspan A B A C A F A D AB Simpul Hidup B A,C A, F A C A, F A, D AB, J AB F A, D AB, J AB, F AC D AB, J AB, F AC, H AF, K AF J AB, F AC, H AF, K AF, E ABD, G ABD, H ABD Jawab: Jadi jalur yang ditemukan dengan cara BFS adalah A-B-D-G dengan jarak 14. J AB F AC F AC, H AF, K AF, E ABD, G ABD, H ABD, G ABJ, I ABJ, K ABJ H AF, K AF, E ABD, G ABD, H ABD, G ABJ, I ABJ, K ABJ, H ACF, K ACF H AF K AF, E ABD, G ABD, H ABD, G ABJ, I ABJ, K ABJ, H ACF, K ACF, I AFH K AF E ABD, G ABD, H ABD, G ABJ, I ABJ, K ABJ, H ACF, K ACF, I AFH, J AFK E ABD G ABD, H ABD, G ABJ, I ABJ, K ABJ, H ACF, K ACF, I AFH, J AFK, G ABDE G ABD Goal ditemukan 8

Soal 3: Decrease and Conquer Terdapat sebuah matriks A berukuran, yang sudah terurut menaik elemen-elemennya, sedemikian sehingga untuk ; dan untuk. Persoalan yang akan diselesaikan adalah menentukan apakah sebuah elemen ada pada matriks tersebut. Gunakan pendekatan Decrease and Conquer untuk menyelesaikan persoalan tersebut. (a) Tuliskan langkah-langkah pendekatan yang anda usulkan, dan tuliskan apakah pendekatan tersebut termasuk decrease by a contant, decrease by factor, atau decrease by variable size. Tentukan juga kompleksitas pendekatan usulan anda dalam notasi Big O. (Nilai 10) Jawab: Alternatif I: Penerapan binary search di tiap baris pada matriks. Setiap baris, periksa elemen tengah (e): (i) jika e<x maka periksa elemen sebelah kanan dari e, dan abaikan elemen kiri dari e; (ii) Jika e>x maka periksa elemen sebealah kiri dari e, dan abaikan elemen kanan dari e; (iii) Jika e=x maka elemen yang dicari ditemukan. Pendekatan ini termasuk decrease by variable. Binary search pada tiap baris memerlukan waktu O(log n), dan jika diterapkan pada n baris maka kompleksitas waktunya adalah : O (n log n) Jika kurang tepat, nilai menjadi 3 9

Soal 3: Decrease and Conquer (2) Terdapat sebuah matriks A berukuran, yang sudah terurut menaik elemen-elemennya, sedemikian sehingga untuk ; dan untuk. Persoalan yang akan diselesaikan adalah menentukan apakah sebuah elemen ada pada matriks tersebut. Gunakan pendekatan Decrease and Conquer untuk menyelesaikan persoalan tersebut. (a) Tuliskan langkah-langkah pendekatan yang anda usulkan, dan tuliskan apakah pendekatan tersebut termasuk decrease by a contant, decrease by factor, atau decrease by variable size. Tentukan juga kompleksitas pendekatan usulan anda dalam notasi Big O. (Nilai 10) Jawab: Alternatif II: Pemeriksaan dimulai dari posisi kanan atas ( ), misal nilai elemennya adalah e (i) Jika e < x, maka seluruh baris pasti lebih kecil dari x, oleh karena itu abaikan seluruh baris, dan periksa baris berikutnya pada kolom yang sama. (ii) Jika e > x, maka abaikan seluruh kolom tersebut, karena nilai di kolom tersebut pasti lebih besar dari x, periksa kolom berikutnya ( 1 kolom sebelah kiri) pada baris yang sama. (iii) Jika e = x maka x ditemukan pada baris dan kolom tersebut. Untuk setiap langkah, maka seluruh baris atau kolom diabaikan, jadi pendekatannya adalah decrease by a constant (n), dan kompleksitas waktunya adalah O(n). 10

Soal 3: Decrease and Conquer (3) (b) Terapkan pendekatan usulan anda (jelaskan langkah-langkahnya) untuk mencari apakah terdapat pada matriks berikut ini, dan hasilkan posisi ditemukannya elemen tersebut. (Nilai 6) Jawab: Dengan pendekatan Alternatif II: (i). Periksa elemen [1][4], nilainya adalah 40, dan 40 > 29, maka abaikan seluruh kolom 4, dan bergerak ke 1 kolom di sebelah kiri, yaitu posisi [1][3]. (ii). Nilai pada [1][3] adalah 30, dan 30>29, maka abaikan seluruh kolom 3, dan bergerak 1 kolom ke sebelah kiri, yaitu posisi [1][2]. (iii). Nilai pada posisi [1][2] adalah 20, dan 20 < 29, maka abaikan seluruh baris 1, dan bergerak 1 baris setelahnya, sehingga berada pada posisi [2][2]. (iv). Nilai pada posisi [2][2] adalah 25, dan 25 < 29, maka abaikan seluruh baris 2, dan bergerak ke baris 3 sehingga berada pada posisi [3][2]. (v). Nilai pada posisi [3][2] adalah 29, dan nilai x yang dicari adalah 29. Solusi ditemukan pada posisi [3][2]. Jika jawaban (b) konsisten dengan cara di (a) walau tidak tepat caranya, nilai tetap 6. Jika tidak konsisten nilai menjadi 3. 11

Soal 4: Exhaustive Search + Greedy Lakukanlah penjadwalan untuk sebuah mesin yang menerima 7 job, dan setiap job diproses selama 1 satuan waktu. Fungsi objektifnya adalah memaksimumkan profit. (a) Jelaskanlah bagaimana penjadwalan dilakukan dengan exhaustive search, dan tentukan kompleksitas algoritmanya? (Nilai 7.5) (b) Jelaskanlah strategi greedy untuk penjadwalan ini, dan berikanlah solusinya langkah per langkah. (Nilai 7.5) Job ke-i 1 2 3 4 5 6 7 deadline 2 4 3 2 3 1 1 profit 40 15 60 20 10 45 55 12

Ji 1 2 3 4 5 6 7 Solusi Soal 4a: Exhaustive Search di 2 4 3 2 3 1 1 pi 40 15 60 20 10 45 55 Tahapan exhaustive search (nilai 5): 1. Enumerasi himpunan bagian (subset) job 2. Evaluasi kelayakan setiap subset dan hitung profitnya 3. Pilih subset dengan total keuntungan terbesar. Kompleksitas algoritma: O(n.2 n ) (nilai 2.5) 13

Ji 1 2 3 4 5 6 7 Solusi Soal 4b: Greedy Strategi greedy: Pada setiap langkah, pilih job i yang layak dengan p i yang terbesar untuk menaikkan nilai fungsi obyektif F. (nilai 2.5) Solusi: {7,1,3,2} (nilai 5) di 2 4 3 2 3 1 1 pi 40 15 60 20 10 45 55 Langkah J F=sigma(pi) Keterangan 0 {} 0-1 {3} 60 layak 2 {7,3} 115 layak 3 {7,3}+{6} - Tidak layak 4 {7,1,3} 155 layak 5 {7,1,3}+{4} - Tidak layak 6 {7,1,3,2} 170 layak 7 {7,1,3,2}+{5} - Tidak layak 14

Soal 5: Exhaustive Search + Greedy Diberikan graf berikut ini, kita akan menentukan lintasan terpendek dari simpul a ke semua simpul lainnya. (a) Gunakanlah algoritma Dijkstra untuk menentukan lintasan terpendek tersebut. Sebelum mengerjakan, tuliskanlah strategi greedy yang digunakan Dijkstra. (Nilai 10) (b) Gunakanlah algoritma Kruskal untuk membentuk pohon merentang minimum, lalu berikanlah lintasan unik dari simpul a ke semua simpul lainnya sebagai lintasan terpendek. Sebelum mengerjakan, tuliskanlah strategi greedy yang digunakan Kruskal. (Nilai 7.5) (c) Bandingkanlah lintasan terpendek dari hasil (a) dan (b), buatlah kesimpulannya. (Nilai 2.5) 15

0 a Solusi Soal 5a: Dijkstra (Nilai 10) 6 5 5(a) c d 2 6(a) 3 7 9 g 8(ac) 7 9 8 14(ac) e 2 f 13(ad) 1 3 b 16(adf) 15(ace) Strategi greedy Pada setiap langkah, pilih simpul yang belum terpilih dan memiliki panjang lintasan terpendek dari simpul awal, lalu update simpul lain yang belum terpilih dengan L(u) + G(u,v) jika L(u)>L(u) + G(u,v). (versi slide kuliah): Pada setiap langkah, ambil sisi yang berbobot minimum yang menghubungkan sebuah simpul yang sudah terpilih dengan sebuah simpul lain yang belum terpilih. Lintasan terpendek Dijkstra: a-b: a-c-e-b = 15; a-c: a-c = 5; a-d: a-d = 6 a-e: a-c-e = 14; a-f: a-d-f = 13; a-g: a-c-g = 8 16

Solusi 5b: Kruskal (nilai 7.5) Strategi greedy: 5 c 3 9 9 e 1 Pada setiap langkah, pilih sisi e dari graf G yang mempunyai bobot minimum tetapi e tidak membentuk sirkuit di T. a 6 d 2 7 g 7 8 2 f 3 b Lintasan terpendek: a-b: a-c-d-f-e-b = 17 a-c: a-c = 5 a-d: a-c-d = 7 A-e: a-c-d-f-e = 16 A-f: a-c-d-f = 14 A-g: a-c-g = 8 17

Solusi 5c (nilai 2.5) Lintasan terpendek Dijkstra: a-b: a-c-e-b = 15; a-c: a-c = 5; a-d: a-d = 6 a-e: a-c-e = 14; a-f: a-d-f = 13; a-g: a-c-g = 8 Lintasan terpendek Kruskal: a-b: a-c-d-f-e-b = 17; a-c: a-c = 5; a-d: a-c-d = 7 a-e: a-c-d-f-e = 16; a-f: a-c-d-f = 14; a-g: a-c-g = 8 Kesimpulan: Dijkstra menjamin memberikan lintasan terpendek ke semua simpul; sedangkan Kruskal hanya memberikan pohon merentang minimum yang tidak memberikan lintasan terpendek ke semua simpul. 18

Soal 1: Brute Force + Divide and Conquer (Inversion problem) Netflix menggunakan sistem rekomendasi untuk merekomendasikan film yang anda sukai. Netflix mencoba mencocokkan film kesukaanmu dengan film lainnya. Sistem rekomendasi tersebut adalah sbb: Misalkan kamu me-rangking n buah film. Selanjutnya, Netflix memeriksa basisdatanya untuk mencari orang dengan kesukaan film yang mirip. Ukuran kemiripan yang digunakan adalah jumlah inversi antara kedua rangking. Misalkan ranking dari orang tersebut adalah 1, 2, 3,, n, sedangkan rangking dari kamu adalah a 1, a 2,, a n. Film i dan film j disebut inversi jika i < j tetapi a i > a j. Contoh untuk film A, B, C, D, dan E: Karena jumlah inversi dengan Y lebih sedkit daripada X, maka kesukaan saya lebih mirip dengan Y. 19

Soal 1: Brute Force + Divide and Conquer Anda diminta menyelesaikan persoalan inversi sbb: Diberikan sebuah senarai A dengan n elemen. Hitunglah jumlah inversi di dalam senarai tersebut. Definisi inversi: Jika i < j tetapi A[i] > A[j] maka pasangan (A[i], A[j]) disebut inversi. Contoh: A = [1, 9, 6, 4, 5], maka jumlah inversi adalah 5, yaitu pasangan (9, 6), (9, 4, (9, 5), (6, 4), dan (6, 5). (a) Hitung jumlah inversi dan pasangan inversinya pada senarai A = [1, 5, 4, 8, 10, 2, 6, 9, 3, 7]. (7,5) (b) Jika persoalan inversi diselesaikan dengan algoritma Brute-Force, bagaimana langkah-langkahnya? Jelaskan! Berapa jumlah perbandingan elemen yang dibutuhkan dan berapa kompleksitas algoritma dalam notasi Big-Oh? (7,5) (c) Jika diselesaikan dengan algoritma Divide and Conquer, bagaimana langkah-langkahnya? Jelaskan dengan contoh senarai delapan elemen! Berapa jumlah perbandingan elemen yang dibutuhkan dan berapa kompleksitas algoritma dalam notasi Big-Oh? Apakah kompleksitas algoritmanya lebih baik dari brute force? (10) (d) Jika digunakan algoritma Mergesort dalam menyelesaikan masalah ini, bagaimana caranya? Jelaskan dengan contoh senarai delapan elemen! Berapa kompleksitas algoritmanya? Apakah kompleksitas algoritmanya lebih baik dari jawaban b dan c? (10) 20

Soal 2a: DFS and BFS Terdapat dua bagian soal sebagai berikut. (a) Dari setiap pernyataan di bawah ini, tentukan apakah pernyataan tersebut benar atau salah. Jika benar cukup tuliskan Benar, jika salah, tuliskan pernyataan yang seharusnya sehingga menjadi pernyataan yang benar. i. Cara kerja algoritma DFS seperti struktur data queue, dan cara kerja algoritma BFS seperti struktur data stack. (Nilai 3) ii. Penelusuran secara DFS pada sebuah graf berarah, akan menghasilkan pohon-pohon penelusuran yang sama jika dimulai dari sembarang simpul pada graf tersebut. (Nilai 3) iii. Terdapat graf pada Gambar 1, dan penelusuran secara BFS pada graf tersebut jika dimulai dari simpul Q (dengan expand selanjutnya memperhatikan urutan alfabet) adalah QMNPOR. (Nilai 3) 21

Soal 2b (a) Terdapat sebuah graf pada Gambar 2, yang menunjukkan keterhubungan antar simpul dan jarak antar simpul. i. Tuliskan dengan lengkap tabel yang menunjukkan pohon pencarian jalur dari simpul A ke simpul G dengan cara DFS, dengan urutan pemeriksaan tetangga sesuai urutan alfabet. Tabel berisi informasi simpul ekspan dan simpul hidup. Tuliskan jalur yang dihasilkan dan jarak dari jalur yang dihasilkan. (Nilai 5) ii. Tuliskan dengan lengkap tabel yang menunjukkan pohon pencarian jalur dari simpul A ke simpul G dengan cara BFS, dengan urutan pemeriksaan tetangga sesuai urutan alfabet. Tabel berisi informasi simpul ekspan dan simpul hidup. Tuliskan jalur yang dihasilkan dan jarak dari jalur yang dihasilkan. (Nilai 5) 22

Soal 3: Decrease and Conquer Terdapat sebuah matriks A berukuran n x n, yang sudah terurut menaik elemen-elemennya, sedemikian sehingga A[i][j]<A[i][j^' ] untuk j<j'; dan A[i][j]<A[i'][j] untuk i<i'. Persoalan yang akan diselesaikan adalah menentukan apakah sebuah elemen x ada pada matriks tersebut. Gunakan pendekatan Decrease and Conquer untuk menyelesaikan persoalan tersebut. Tuliskan langkah-langkah pendekatan yang anda usulkan, dan tuliskan apakah pendekatan tersebut termasuk decrease by a contant, decrease by a constant factor, atau decrease by variable size. Tentukan juga kompleksitas pendekatan usulan anda dalam notasi Big O. (Nilai 10) Terapkan pendekatan usulan anda (langkah per langkah) untuk mencari apakah x=29 terdapat pada matriks berikut ini, dan hasilkan posisi ditemukannya elemen tersebut. (Nilai 6) 23