Strategi Algoritma Pertemuan ke-1: Pengantar Perkuliahan Husni Lab. Sistem Terdistribusi JTIF UTM
Strategi AlgoritmaPertemuan ke-1: Pengantar Perkuliahan
Husni
Lab. Sistem Terdistribusi
JTIF UTM
Dosen Pengampu
• Husni, S.Kom., MT.• Graduated from University of Gadjah Mada (2001) and Bandung Institute of
Technology (2010)
• Research area
• Web Information Retrieval (Text Mining)
• Data Science (Analytics)
• Internetworking Technology: Web Services
• Industry experience
• Internetworking
• Software Development
• IT Blueprint
2
Outline
• Pengantar Strategi Algoritma
• Aturan Perkuliahan
Apakah Strategi Algoritma itu?
• Strategi algoritma (algorithm strategies) adalah:• pendekatan umum
• untuk memecahkan persoalan secara algoritmis
• yang dapat diterapkan pada bermacam-macam persoalan
• dari berbagai bidang komputasi [Levitin, 2003]
• Nama lain: algorithm design technique
Persoalan (Problem)
• Persoalan: pertanyaan atau tugas yang kita cari jawabannya.
• Contoh-contoh persoalan:
1. [Persoalan pengurutan] Diberikan senarai (list) S yang terdiri dari n buah integer. Bagaimana mengurutkan n buah integer tersebutsehingga terurut secara menaik?
Jawaban: barisan nilai di dalam senarai yang terurut menaik.
2. [Persoalan pencarian] Tentukan apakah suatu bilangan x terdapat di dalam sebuah senarai S yang berisi n buah bilangan bulat!
Jawaban: “ya” jika x ditemukan di dalam senarai, atau “tidak” jika x tidak terdapat di dalam senarai.
• Instansiasi persoalan: parameter nilai yang diasosiasikan di dalampersoalan.
• Jawaban terhadap instansiasi persoalan disebut solusi
• Contoh: Selesaikan persoalan pengurutan untuk
S = [15, 4, 8, 11, 2, 10, 19] n = 7
Solusi: S = [2, 4, 8, 10, 11, 15, 19].
Beberapa Contoh Persoalan Klasik
Persoalan: Diberikan n buah kota serta diketahui jarak antara setiap kota satu sama lain. Temukan perjalanan (tour) terpendek yang dimulaidari sebuah kota dan melalui setiap kota lainnya hanya sekali dan kembali lagi ke kota asal keberangkatan.
1. Travelling Salesperson Problem (TSP)
• Persoalan: Diberikan n buah objek dan sebuah knapsack (karung, tas, buntilan, dsb) dengan kapasitas bobot K. Setiap objekmemiliki propert bobot (weigth) wi dan keuntungan (profit) pi.
• Bagaimana memilih objek-objek yang dimasukkan ke dalam knapsack sedemikiansehingga tidak melebihi kapasitas knapsack namun memberikan keuntungan maksimal?
2. Integer Knapsack Problem
• Misalkan terdapat n orang dan n buah pekerjaan (job).
• Setiap orang akan di-assign dengansebuah pekerjaan.
• Penugasan orang ke-i denganpekerjaan ke-j membutuhkan biayasebesar c(i, j).
• Bagaimana melakukan penugasansehingga total biaya penugasanadalah seminimal mungkin?
3. Persoalan penugasan (assignment problem)
• Contoh instansiasi persoalan:
• Persoalan: Diberikan sebuahpapan catur yang berukuran
• N × N dan N buah bidak ratu.
• Bagaimana menempatkan N buah ratu (Q) itu pada petak-petak papan catur sedemikiansehingga tidak ada dua ratu ataulebih yang terletak pada satubaris yang sama, atau pada satu kolom yang sama, atau pada satu diagonal yang sama ?
4. Persoalan N-Ratu (The N-Queens Problem)
• Persoalan: Diberikan n buah titik, tentukan dua buah titik yang terdekat satu sama lain.
5. Mencari Pasangan Titik Terdekat (Closest Pair)
• Persoalan: Diberikan sebuah 15-puzzle yang memuat 15 buah ubin(tile) yang diberi nomor 1 sampai 15, dan satu buah slot kosong yang digunakan untuk menggerakkan ubin ke atas, ke bawah, ke kiri, dan ke kanan. Misalkan diberikan keadaan awal dan keadaaan akhirsusunan ubin. Kita ingin mentransformasikan susunan awal menjadi susunan akhir.
6. Permainan 15-Puzzle
(a) Susunan awal (b) Susunan akhir
Persoalan: Diberikan sebuah labirindengan satu atau lebih pintu masuk dan satu atau lebih pintu keluar. Temukanjalan yang harus dilalui sehinggaseseorang dapat keluar dengan selamatdari labirin tersebut (tidak tersesat di dalamnya).
7. Menemukan jalan keluar dari labirin (Maze Problem)
• Persoalan: Diberikan sebuah graf G dengan n buah simpul dan disediakan m buah warna. Warnailah seluruh simpul graf G sedemikian sehingga tidak ada dua buah simpul bertetangga yang mempunyai warna sama (Perhatikan juga bahwa tidak seluruh warnaharus dipakai)
8. Pewarnaan Graf (Graph Colouring)
• Persoalan: Diketahui n buah kotadan diberikan jarak antara dua buah kota yang bertetangga. Tentukan lintasan terpendek darisebuah kota asal ke sebuah kotatujuan.
9. Lintasan terpendek (shortest path)
Algoritma
• Untuk persoalan dengan instansiasi yang besar, solusinya menjadilebih sulit ditentukan.
• Perlu sebuah prosedur umum yang berisi langkah-langkahpenyelesaian persoalan algoritma
• Algoritma: urutan langkah-langkah untuk memecahkan suatupersoalan, dengan memproses masukan menjadi keluaran.
Analisis Algoritma
• Tujuan analis: mengukur kinerja (performance) algoritma dari segi kemangkusannya (efficient)
• Alat ukur kemangkusan algoritma:1. Kompleksitas waktu, T(n)
2. Kompleksitas ruang, S(n)
• n = ukuran masukan yang diproses oleh algoritma
• T(n) : jumlah tahap komputasi yang dilakukan untuk menjalankansebuah algoritma sebagai fungsi dari ukuran masukan n.
• S(n): ruang memori yang dibutuhkan algoritma sebagai fungsi dariukuran masukan n .
• Tiga notasi kebutuhan waktu asimptotik:1. O(g(n)): batas lebih atas kebutuhan waktu algoritma
2. W(g(n)): batas lebih bawah kebutuhan waktu algoritma
3. Q(g(n)) : jika dan hanya jika O(g(n)) = W(g(n))
Strategi Algoritma
1. Algoritma Brute-Force
2. Algoritma Greedy
3. Algoritma Divide and Conquer
4. Algoritma Decrease and Conquer
5. Algoritma Bactracking
6. Algoritma Branch and Bound
7. Dynamic programming
Mengapa Perlu Mempelajari Strategi Algoritma?
• Ada dua alasan (Levitin, 2003):1. Memberikan panduan (guidance) untuk merancang algoritma bagi
persoalan baru.
2. Dapat mengklasifikasikan algoritma berdasarkan gagasan perancangan yang mendasarinya.
Klasifikasi Strategi Algoritma
1. Strategi solusi langsung (direct solution strategies)• Algoritma Brute Force
• Algoritma Greedy
2. Strategi berbasis pencarian pada ruang status (state-space base strategies)• Algoritma Backtracking
• Algoritma Branch and Bound
3. Strategi solusi atas-bawah (top-down solution strategies)• Algoritma Divide and Conquer
• Algoritma Decrease and Conquer
4. Strategi solusi bawah-atas (bottom-up solution strategies)• Dynamic Programming.
• Catatan: klasifikasi ini tidak kaku, dapat berbeda bergantungpendekatan yang digunakan.
Klasifikasi Strategi Algoritma
Tujuan Umum
• Mahasiswa memahami beberapa strategi yang digunakan dalammemecahkan persoalan secara mangkus sesuai dengan karakteristikpersoalan tersebut
Tujuan Khusus
• Mahasiswa mampu: 1. Memilih strategi yang tepat untuk menyelesaikan suatu persoalan.
2. Membuat program untuk menyelesaikan persoalan dengan strategi yang tepat.
Prasyarat Kuliah
• Algoritma Pemrograman
• Struktur Data
• Matematika Diskrit
LingkupBahasan
1. Pengantar Strategi Algoritma
2. Algoritma Brute Force
3. Exhaustive Search + Heuristic
4. Algoritma Greedy
5. Algoritma Divide and Conquer
6. Algoritma Decrease and Conquer
7. DFS dan BFS
8. Algoritma Backtracking
9. Branch and Bound
10. Algoritma A* , Best First Search, dan UCS
11. Pattern Matching
12. Dynamic Programming
13. Teori P, NP, dan NP-C
ReferensiAnany Levitin, Introduction to The Design & Analysis of Algorithms, 3rd Edition, Pearson Education Limited 2012
1. Introduction
2. Fundamentals of the Analysis of Algorithm
Efficiency
3. Brute Force and Exhaustive Search
4. Decrease-and-Conquer
5. Divide-and-Conquer
6. Transform-and-Conquer
7. Space and Time Trade-Offs
8. Dynamic Programming
9. Greedy Technique
10. Iterative Improvement
11. Limitations of Algorithm Power
12. Coping with the Limitations of Algorithm Power
Referensi
1. Introduction to complexity
2. Divide-and-conquer
3. Greedy algorithms
4. Dynamic programming
5. Amortized analysis
6. NP-completeness
7. Exercises on NP-completeness
8. Beyond NP-completeness
9. Exercises going beyond NP-completeness
10. Reasoning to assess a problem complexity
11. Chains-on-chains partitioning
12. Replica placement in tree networks
13. Packet routing
14. Matrix product, or tiling the unit Square
15. Online scheduling
Anne Benoit, Yves Robert, Frederic Vivien, A Guide To Algorithm Design Paradigms, Methods, and Complexity Analysis, CRC Press, 2014
Referensi
1. Preliminaries
2. Greedy Algorithms
3. Divide and Conquer
4. Dynamic Programming
5. Online Algorithms
6. Randomized Algorithms
7. Algorithms in Linear Algebra
8. Computational Foundations
9. Mathematical Foundations
Michael Soltys, An Introduction To The Analysis Of Algorithms, 3rd Edition, World Scientific Publishing, 2018
http://informatika.stei.itb.ac.id/~rinaldi.munir/Stmik/2018-2019/stima18-19.htm
Referensi
Apa yang Akan Didiskusikan?
Pekan Tanggal Topik
1. 21-08-2019 Pengantar Strategi Algoritma, Aturan Perkuliahan
2. 28-08-2019 Algoritma Brute ForceExhaustive Search + Heuristic
3. 04-09-2019 Algoritma Greedy
4. 11-09-2019 Algoritma Divide and Conquer
5. 18-09-2019 Algoritma Divide and Conquer Algoritma Decrease and Conquer
6. 25-09-2019 Algoritma Decrease and Conquer, DFS dan BFS
7. 02-10-2019 DFS dan BFS, Review Pra-UTS
8. 09-10-2019 Ujian Tengah Semester (UTS)
Apa yang Akan Didiskusikan?
Pekan Tanggal Topik
9. 16-10-2019 Algoritma Backtracking
10. 23-10-2019 Branch and Bound
11. 30-10-2019 Branch and Bound Algoritma A* , Best First Search, dan UCS
12. 06-11-2019 Pattern Matching
13. 13-11-2019 Dynamic Programming
14. 20-11-2019 Teori P, NP, dan NP-C
15. 27-11-2019 Review Pra-UAS
16. 11-12-2019 Ujian Akhir Semester (UAS)
Penilaian
• Ujian Tengah Semester (UTS) : 25%• Materi tertutup, tertulis, soal dari mahasiswa
• Ujian Akhir Semeter (UAS) : 30%• Materi terbuka, tertulis
• Proyek Pemrograman : 45%• Proposal dua halaman (25%)
• Presentasi 30 menit (30%)
• Laporan (makalah) 5 halaman (45%)
Pertanyaan?
Thank You