Anda di halaman 1dari 7

1929140009 Andi Besse Nurul Mukhlisa Gazali

TEKOM B 2019

Program Studi S1 Teknik Komputer


Jurusan Teknik Informatika dan
Komputer Fakultas Teknik
Tahun Ajaran
2020/2021 Semester
Genap
Jenis Ujian Akhir Semester
Mata Kuliah Analisis Algoritme
Dosen Pengampu Fhatiah Adiba, S.Pd., M.Cs.
Abd. Rahman Patta, S.T.,M.T.
No. Soal Poin
1. Jelaskan yang dimaksud algoritma Divide and Conquer ! 15
Pengertian Algoritma Divide
• Algoritma Divide and Conquer merupakan algoritma yang sangat populer
di dunia Ilmu Komputer. Divide and Conquer merupakan algoritma yang
berprinsip memecah-mecah permasalahan yang terlalu besar menjadi beberapa
bagian kecil sehingga lebih mudah untuk diselesaikan.
• Algoritma Divide and Conquer adalah strategi pemecahan masalah yang
besar dengan cara melakukan pembagian masalah yang besar tersebut menjadi
beberapa bagian yang lebih kecil secara rekursif hingga masalah tersebut dapat
dipecahkan secara langsung. Solusi yang didapat dari setiap bagian kemudian
digabungkan untuk membentuk sebuah solusi yang utuh.

2. 4 12 23 9 21 1 35 2 24 35
Misalkan diberikan sebuah larik A yang berukuran n elemen dan sudah berisi nilai
integer. Carilah nilai minimum (min) dan nilai maksimum (max) sekaligus di
dalam larik berikut menggunakan pseudocode algoritma brute force.

min = 1
max = 35
1929140009 Andi Besse Nurul Mukhlisa Gazali
TEKOM B 2019
1929140009 Andi Besse Nurul Mukhlisa Gazali
TEKOM B 2019

3. Berdasarkan kasus diatas, Bagaimana Prosedur pencarian nilai MinMaks untuk 25


algoritma Divide and Conquer?
1929140009 Andi Besse Nurul Mukhlisa Gazali
TEKOM B 2019

4. Bagaimana cara penyelesaian permainan sudoku dengan menggunakan algoritma 25


Brute force ?
Biasanya dalam menyelesaikan puzzle Sudoku, pemain pasti akan mengisi kotak-
kotak pada grid Sudoku yang memiliki solusi angka yang sudah pasti hanya bisa
diisi pada kotak tersebut, atau mengisikan solusi angka pada kotak yang hanya
bisa diisi pada baris, kolom, atau subgrid yang bersesuaian dengan kotak
tersebut. Maka dari itu, agar implementasi algoritma runut-balik bisa lebih
mangkus dan efisien, akan diimplementasikan empat buah fungsi baru dengan
algoritma brute-force yang bisa mengimplementasikan strategi di atas. Berikut ini
adalah contoh implementasinya:
1929140009 Andi Besse Nurul Mukhlisa Gazali
TEKOM B 2019
1929140009 Andi Besse Nurul Mukhlisa Gazali
TEKOM B 2019

Keempat algoritma tersebut akan dijalankan di dalam algoritma runut-balik yang


sudah dibuat sebelumnya, sehingga setiap kali fungsi dipanggil, keempat fungsi
tersebut akan dipanggil terlebih dahulu untuk menyelesaikan kotak-kotak yang
mudah untuk diselesaikan sebelum menyelesaikan grid Sudoku keseluruhan
dengan algoritma runut-balik yang murni.
Namun, jika di tengah proses menyelesaikan grid Sudoku dengan algoritma runut-
balik diperlukan untuk melakukan backtracking, maka kotak-kotak yang
sebelumnya telah di-assign oleh fungsi dengan algoritma brute-force harus
dihapus nilainya. Sehingga, harus dibuat suatu fungsi sederhana yang menghapus
nilai dari semua kotak yang telah diisi oleh empat fungsi
algoritma brute-force tersebut untuk proses backtracking. Berikut ini adalah
contoh implementasinya:

Sehingga algoritma runut-balik yang didapatkan adalah sebagai berikut:


1929140009 Andi Besse Nurul Mukhlisa Gazali
TEKOM B 2019

Selanjutnya, penulis akan membandingkan kedua algoritma utama yang telah dijabarkan
di atas, di mana algoritma pertama adalah algoritma runut-balik murni, dan algoritma
kedua adalah algoritma runut-balik + brute-force. Untuk membandingkan kedua
algoritma tersebut, penulis menguji kedua algoritma dengan 5 buah puzzle Sudoku
dengan tingkat kesulitan di atas Hard yang hanya memiliki 21 clue di awal permainan.
Waktu eksekusi kedua algoritma untuk masing-masing puzzle yang tercatat adalah
sebagai berikut:

Berdasarkan percobaan yang telah dilakukan, didapatkan hasil sesuai dengan tabel di
atas. Rata-rata waktu yang dibutuhkan algoritma pertama (runut-balik murni) untuk
menyelesaikan puzzle Sudoku adalah 8.497206 detik. Sedangkan rata-rata waktu yang
dibutuhkan algoritma kedua (runut-balik + brute-force) adalah 0.037707 detik.

Anda mungkin juga menyukai