P31035 Algorithms and Complexity 3 SKS

Slides:



Advertisements
Presentasi serupa
Kompleksitas Algoritma
Advertisements

Teori P, NP, dan NP-Complete
TIF 4216 Matematika Diskrit.
Pengantar Strategi Algoritma
Algoritma Runut-balik (Backtracking)
GRAF TIDAK BERARAH PART 2 Dosen : Ahmad Apandi, ST
Program Dinamis (Dynamic Programming)
Design and Analysis of Algorithm Dynamic Programming
Algoritma Branch and Bound
Algoritma Runut-balik (Backtracking)
Design and Analysis of Algorithm Back Track Algorithm
Kompleksitas Algoritma
MATEMATIKA DISKRIT Kompleksitas Algoritma Kelompok 9
Pengantar Strategi Algoritmik
KECERDASAN BUATAN (ARTIFICIAL INTELLIGENCE)
Design and Analysis Algorithm
Algoritma Brute Force Oleh: Rinaldi Munir
Design and Analysis Algorithm
Algoritma Brute Force (lanjutan)
Algoritma Brute Force Oleh: Rinaldi Munir
Algoritma Runut-balik (Backtracking)
Algoritma Divide and Conquer (Bagian 1) Wahyul Wahidah Maulida, ST., M.Eng.
12-CRS-0106 REVISED 8 FEB 2013 CSG523/ Desain dan Analisis Algoritma Divide and Conquer Intelligence, Computing, Multimedia (ICM)
Penerapan BFS dan DFS pada Pencarian Solusi
ALGORITMA DAN PEMROGRAMAN
Algoritma Brute Force.
MATERI PERKULIAHAN ANALISIS ALGORITMA
Kompleksitas Algoritma
Algoritma Bruteforce Team Fasilkom.
BAHASA PEMROGRAMAN / PEMROGRAMAN KOMPUTER Bab 1 PENDAHULUAN
Bahan Kuliah IF2211 Strategi Algoritma
MATERI PERKULIAHAN ANALISIS ALGORITMA
Greedy Pertemuan 7.
Branch and Bound Lecture 12 CS3024.
GRAF TIDAK BERARAH PART 2 Dosen : Ahmad Apandi, ST
Program Dinamis.
MATERI PERKULIAHAN ANALISIS ALGORITMA
Analisa Algoritma (IF1282)
Algoritma Bruteforce (disarikan dari diktat Strategi Algoritma, Rinaldi Munir) Team Fasilkom.
MATERI PERKULIAHAN ANALISIS ALGORITMA
Exhaustive Search.
MATERI PERKULIAHAN ANALISIS ALGORITMA
Pertemuan 26 PRAKTEK ANALISIS ALGORITMA
MATERI PERKULIAHAN ANALISIS ALGORITMA
LATIHAN 26 Buatlah sebuah algoritma untuk menampilkan jumlah faktor pembagi bilangan X, dengan X adalah 1 hingga N ! Misal Jumlah faktor dari 1 adalah.
Kompleksitas Algoritma
Program Dinamis (Dynamic Programming)
Pengenalan Analisis Algoritma
Algoritma.
CSG3F3/ Desain dan Analisis Algoritma
Analisa Algoritma Konsep Algoritma.
Program Dinamis (Dynamic Programming)
Analisa Algoritma : Pendahuluan
Pengantar A Matematika Diskrit
Masalah, Ruang Keadaan dan Pencarian
Analisa Algoritma 3 SKS.
ALGORITMA GREEDY : MINIMUM SPANNING TREE
Analisis dan Perancangan Algoritma
Algoritma Divide and Conquer
Algoritma Divide and Conquer
Algoritma Divide and Conquer
Kompleksitas Algoritma
Algoritma Divide and Conquer
Algoritma Divide and Conquer
Penerapan BFS dan DFS pada Pencarian Solusi
Dr. Mufid Nilmada, SSi., MMSI
Pengantar Strategi Algoritma
KECERDASAN BUATAN PERTEMUAN 4.
Desain dan Analisis Algoritma
Algoritma Runut-balik (Backtracking)
Transcript presentasi:

P31035 Algorithms and Complexity 3 SKS Aris Marjuni, S.Si, M.Kom aris.marjuni@dsn.dinus.ac.id

Masalah (Problem) Masalah atau persoalan: pertanyaan atau tugas yang kita cari jawabannya. Contoh-contoh masalah: 1. [Masalah pengurutan] Diberikan senarai (list) S yang terdiri dari n buah data bilangan bulat. Bagaimana mengurutkan n buah data tersebut sehingga terurut secara menaik? Jawaban dari masalah ini: barisan nilai di dalam senarai yang terurut menaik.

2. [Masalah pencarian] Tentukan apakah suatu bilangan x terdapat di dalam sebuah senarai S yang berisi n buah bilangan bulat! Jawaban dari masalah ini: “ya” jika x ditemukan di dalam senarai, atau “tidak” jika x tidak terdapat di dalam senarai.

Instansiasi masalah: parameter nilai yang diasosiasikan pada masalah. Jawaban terhadap instansiasi masalah disebut solusi Contoh: Selesaikan masalah pengurutan untuk S = [15, 4, 8, 11, 2, 10, 19] n = 7 Solusi: S = [2, 4, 8, 10, 11, 15, 19].

Untuk masalah dengan instansiasi yang besar, solusinya menjadi lebih sulit. Perlu sebuah prosedur umum yang berisi langkah-langkah penyelesaian masalah  algoritma Algoritma:urutan langkah-langkah untuk memecahkan suatu masalah Algoritma

( 780 – 850 M ) Muḥammad bin Mūsā al-Khawārizmī Kata algoritma berasal dari latinisasi al-Khawārizmī, awalnya menjadi algorisma yang berarti: "aturan-aturan aritmetis untuk menyelesaikan persoalan dengan menggunakan bilangan numerik" Abad-18, istilah ini berkembang menjadi algoritma, yang berarti: "prosedur atau urutan langkah yang jelas dan diperlukan untuk menyelesaikan suatu permasalahan"

Definisi lain: Algoritma adalah deretan langkah-langkah komputasi yang mentransformasikan data masukan menjadi keluaran. Algoritma adalah deretan instruksi yang jelas untuk memecahkan masalah, yaitu untuk memperoleh keluaran yang diinginkan dari suatu masukan dalam jumlah waktu yang terbatas. Algoritma adalah prosedur komputasi yang terdefinisi dengan baik yang menggunakan beberapa nilai sebagai masukan dan menghasilkan beberapa nilai yang disebut keluaran. Jadi, algoritma adalah deretan langkah komputasi yang mentransformasikan masukan menjadi keluran.

Algorithm Properties An algorithm possesses the following properties: It must be correct. It must be composed of a series of concrete steps. There can be no ambiguity as to which step will be performed next. It must be composed of a finite number of steps. It must terminate. A computer program is an instance, or concrete representation, for an algorithm in some programming language.

Algoritmik: Studi mengenai algoritma. Notasi apapun dapat digunakan untuk menuliskan algoritma asalkan mudah dibaca dan dipahami. Algoritma dapat ditulis dengan notasi: 1. Bagan alir (flow chart) 2. Kalimat-kalimat deskriptif 3. Pseudo-code (gabungan antara bahasa alami dengan bahasa pemrograman)

Sebuah algoritma tidak hanya harus benar, tetapi juga harus mangkus (efficient) Ukuran kemangkusan algoritma: waktu (time) dan ruang memori (space). Algoritma yang mangkus: algoritma yang meminimumkan kebutuhan waktu dan ruang Analisis Algoritma

Alat ukur kemangkusan algoritma: 1. Kompleksitas waktu, T(n) 2. Kompleksitas ruang, S(n) n = ukuran masukan yang diproses oleh algoritma T(n) : jumlah operasi yang dilakukan untuk menjalankan sebuah algoritma sebagai fungsi dari ukuran masukan n. S(n): ruang memori yang dibutuhkan algoritma sebagai fungsi dari ukuran masukan n

Operasi yang dihitung hanyalah operasi dasar (basic operation) saja Operasi dasar: operasi khas yang mendasari suatu algoritma Misalnya: - operasi perbandingan elemen pada algoritma pengurutan/pencarian - operasi penjumlahan dan perkalian pada algoritma perkalian matriks

Kompleksitas waktu asimptotik: - perkiraan kasar kebutuhan waktu algoritma dengan meningkatnya nilai n - menyatakan laju pertumbuhan waktu, bukan menyatakan jumlah operasi dasar sesungguhnya Tiga cara menyatakan waktu asimptotik: 1. O(f(n)): untuk batas atas laju kebutuhan waktu 2. (g(n)): untuk batas bawah laju kebutuhan waktu 3. (h(n)) : jika f(n) = g(n)

Strategi algoritmik Di luar negeri dikenal dengan nama: Teknik Perancangan Algoritma (Algorithm Design Techniques ) Strategi algoritmik: pendekatan umum untuk memecahkan masalah secara algoritmis yang dapat diterapkan pada beraneka ragam masalah guna mencapai tujuan

Strategi algoritmik bertujuan mencari algoritma yang mangkus untuk memecahkan masalah Ukuran kemangkusan algoritma dinyatakan dengan notasi O, , atau .

Dua alasan mempelajari strategi algoritmik: 1. memberikan panduan untuk merancang algoritma bagi masalah baru. 2. mengklasifikasikan algoritma berdasarkan gagasan perancangan yang mendasarinya.

Klasifikasi Strategi Algoritmik: 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. 4. Strategi solusi bawah-atas (bottom-up solution strategies) - Dynamic Programming. Catatan: klasifikasi ini tidak kaku, bisa berbeda bergantung pendekatan ayng digunakan.

BIG Divide and Conquer DIVIDE PROBLEM SMALLER PROBLEM SMALLER PROBLEM SMALLER PROBLEM BIG PROBLEM DIVIDE Permasalahan besar dipecah-pecah menjadi beberapa permasalahan yang lebih kecil/sederhana SMALLER PROBLEM SMALLER PROBLEM SMALLER PROBLEM SMALLER PROBLEM SMALLER PROBLEM SMALLER PROBLEM

Permasalahan-permasalahan kecil dipecahkan secara parsial Divide and Conquer SMALLER PROBLEM SOLVED SMALLER PROBLEM SMALLER PROBLEM SMALLER PROBLEM SOLVED SMALLER PROBLEM SOLVED SMALLER PROBLEM CONQUER Permasalahan-permasalahan kecil dipecahkan secara parsial SMALLER PROBLEM SMALLER PROBLEM SOLVED SMALLER PROBLEM SMALLER PROBLEM SOLVED SMALLER PROBLEM SOLVED SMALLER PROBLEM SMALLER PROBLEM SOLVED SMALLER PROBLEM SMALLER PROBLEM SMALLER PROBLEM SOLVED SMALLER PROBLEM SOLVED SMALLER PROBLEM

Permasalahan terpecahkan Divide and Conquer SMALLER PROBLEM SOLVED SMALLER PROBLEM SOLVED SMALLER PROBLEM SOLVED BIG PROBLEM SOLVED COMBINE Permasalahan terpecahkan SMALLER PROBLEM SOLVED SMALLER PROBLEM SOLVED SMALLER PROBLEM SOLVED SMALLER PROBLEM SOLVED SMALLER PROBLEM SOLVED SMALLER PROBLEM SOLVED

Beberapa Masalah Klasik 1. Travelling Salesperson Problem (TSP) Persoalan: Diberikan n buah kota serta diketahui jarak antara setiap kota satu sama lain. Temukan perjalanan (tour) terpendek yang dimulai dari sebuah kota dan melalui setiap kota lainnya hanya sekali dan kembali lagi ke kota asal keberangkatan.

2. Integer Knapsack (1/0 Knapsack) Persoalan: Diberikan n buah objek dan sebuah knapsack (karung, tas, buntilan, dsb) dengan kapasitas bobot K. Setiap objek memiliki properti bobot (weigth) wi dan keuntungan (profit) pi. Bagaimana memilih objek- objek yang dimasukkan ke dalam knapsack sehingga tidak melebihi kapasitas knapsack namun memaksimumkan total keuntungan yang diperoleh.

Contoh instansiasi masalah: n = 5; K = 20 w1 = 5; p1 = 20; w2 = 8; p2 = 30 w3 = 4; p3 = 50; w4 = 6; p4 = 10

3. Persoalan N-Ratu (The N-Queens Problem) Diberikan sebuah papan catur yang berukuran N  N dan delapan buah ratu. Bagaimana menempatkan N buah ratu (Q) itu pada petak-petak papan catur sedemikian sehingga tidak ada dua ratu atau lebih yang terletak pada satu baris yang sama, atau pada satu kolom yang sama, atau pada satu diagonal yang sama ?

4. Mencari Pasangan Titik yang Jaraknya Terdekat (Closest Pair) Persoalan: Diberikan n buah titik, tentukan dua buah titik yang terdekat satu sama lain.

5. Permainan 15-Puzzle 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 akhir susunan ubin. Kita ingin menransformasikan susunan awal menjadi susunan akhir. (a) Susunan awal (b) Susunan akhir

6. Menemukan jalan keluar dari labirin (Maze Problem) Persoalan: Diberikan sebuah labirin dengan satu atau lebih pintu masuk dan satu atau lebih pintu keluar. Temukan jalan yang harus dilalui sehingga seseorang dapat keluar dengan selamat dari labirin tersebut (tidak tersesat di dalamnya).

7. Pewarnaan Graf (Graph Colouring) Persoalan: Diberikan sebuah graf G dengan n buah simpul dan disediakan m buah warna. Warnailah seluruh simpul graf G sedemikian sehin29gga tidak ada dua buah simpul bertetangga yang mempunyai warna sama (Perhatikan juga bahwa tidak seluruh warna harus dipakai)