BAB II LANDASAN TEORI

dokumen-dokumen yang mirip
Pendahuluan. Algoritma greedy merupakan metode yang paling populer untuk memecahkan persoalan optimasi.

TUGAS RESUME MATERI KULIAH ALGORITMA DAN STRUKTUR DATA STRATEGI ALGORITMA : H

Sudi dan Implementasi Algoritma Optimasi Pemotongan Bar Steel

Algoritma greedy merupakan metode yang paling populer untuk memecahkan persoalan optimasi.

Algorima Greedy Pada Self Serve Gas Station

Eksplorasi Algoritma Brute Force, Greedy, dan Dynamic Programming untuk Persoalan Integer Knapsack

ALGORITMA OPTIMASI UNTUK MEMINIMALKAN SISA PEMOTONGAN BAR STEEL PADA PERUSAHAAN KONSTRUKSI

Implementasi Algoritma Greedy dalam Pembagian kerja pada Mesin yang Identik

IMPLEMENTASI ALGORITMA GREEDY PADA PERMAINAN OTHELLO

EKSPLORASI ALGORITMA BRUTE FORCE, GREEDY DAN PEMROGRAMAN DINAMIS PADA PENYELESAIAN MASALAH 0/1 KNAPSACK

Implementasi Algoritma Greedy pada Permainan Ludo

Penerapan Algoritma Greedy pada Intelegensia Buatan untuk Transfer Pemain dalam Permainan Simulasi Sepakbola

PENERAPAN ALGORITMA GREEDY DALAM PENGISIAN RENCANA STUDI SEMESTER DI ITB SEBAGAI PERSOALAN BINARY KNAPSACK

Penerapan Algoritma Greedy dalam Pengisian Rencana Studi Semester di ITB sebagai Persoalan Binary Knapsack

Penerapan Algoritma Greedy untuk Permainan Halma

Penggunaan Algoritma Greedy Dalam Perancangan Papan Teka Teki Silang

Aplikasi Algoritma Greedy dalam Penjurusan Mahasiswa Tingkat Pertama Institut Teknologi Bandung

Penggunaan Algoritma Greedy dalam Optimasi Masalah Perkebunan

Penentuan Keputusan dalam Permainan Gomoku dengan Program Dinamis dan Algoritma Greedy

Penerapan Algoritma Greedy pada Permainan Tower Defense

Design and Analysis of Algorithms CNH2G3- Week 8 Greedy Algorithm

Penggunaaan Algoritma Greedy Dalam Aplikasi Vending Machine

Penerapan Algoritma Greedy dalam Optimasi Keuntungan Perusahaan Pengiriman Barang

Algoritma Greedy untuk Membangun Korpus Pengenalan Suara Al-Quran

Penerapan algoritma Greedy dalam penentuan Porter Generic Strategies untuk suatu perusahaan

Optimisasi Penjadwalan Proses Pada Central Processing Unit Dengan Menggunakan Algoritma Greedy

BAB III ANALISIS MASALAH

APLIKASI ALGORITMA GREEDY DALAM PENENTUAN SPESIFIKASI KOMPUTER RAKITAN

Kompleksitas Algoritma untuk Penyelesaian Persoalan Penukaran Koin dengan Algoritma Greedy

Penerapan Algoritma Greedy Pada Game Tower Defense: Tower of Greece

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

Design and Analysis Algorithm

IMPLEMENTASI ALGORITMA GREEDY UNTUK MENYELESAIKAN MASALAH KNAPSACK PROBLEM

What Is Greedy Technique

PENGGUNAAN ALGORITMA GREEDY PADA MESIN PENCARI

Algoritma Brute Force

Analisis Penerapan Algoritma Kruskal dalam Pembuatan Jaringan Distribusi Listrik

BAB III ALGORITMA GREEDY DAN PROGRAM DINAMIS

Penentuan Lokasi Pemasaran Produk dengan Media Periklanan Menggunakan Algoritma Greedy

Strategi Konstruksi Pizza Hut Salad Tower Dengan Pendekatan Algoritma Greedy

Penerapan Algoritma Greedy pada Artificial Inteligence dalam Permainan Defence of the Ancient

Program Dinamis (Dynamic Programming)

Perbandinganan Penggunaan Algoritma Greedy dan Modifikasi Algoritma Brute Force pada Permainan Collapse XXL

Pencarian Jalur Terpendek dengan Menggunakan Graf dan Greedy dalam Kehidupan Sehari-hari

Penerapan Algoritma Greedy dan Algoritma BFS untuk AI pada Permainan Greedy Spiders

PENERAPAN ALGORITMA GREEDY UNTUK PENENTUAN JALUR DISTRIBUSI BANTUAN PASCA BENCANA ALAM

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

Penggunaan Algoritma Greedy Dalam Penentuan Rute Wisata

Strategi Permainan Bridge menggunakan Algoritma Greedy

Penerapan Algoritma Greedy dalam Pencarian Rantai Penjumlahan Terpendek

Pemilihan Monster yang Akan Digunakan dalam Permainan Yu-Gi-Oh! Capsule Monster Coliseum

ALGORITMA GREEDY DALAM PERMAINAN DOTS AND BOXES

PERBANDINGAN PENYELESAIAN KNAPSACK PROBLEM SECARA MATEMATIKA, KRITERIA GREEDY DAN ALGORITMA GREEDY

IMPLEMENTASI GRAF DENGAN MENGGUNAKAN STRATEGI GREEDY

Penerapan Algoritma Greedy dalam Algoritma Penjadwalan Prosesor Tunggal Shortest Job First

AlgoritmaBrute Force. Desain dan Analisis Algoritma (CS3024)

IMPLEMENTASI GRAF DENGAN MENGGUNAKAN STRATEGI GREEDY

Algoritma Brute Force (lanjutan)

Program Dinamis (Dynamic Programming)

Algoritma Brute Force (Bagian 1) Oleh: Rinaldi Munir

Penerapan Algoritma Greedy dalam Permainan Bantumi

Penerapan Algoritma Greedy pada Permainan Bubble Breaker

PERBANDINGAN ALGORITMA GREEDY DAN BRUTE FORCE DALAM SIMULASI PENCARIAN KOIN

Penerapan Algoritma Greedy dalam Pembuatan Klasemen Kompetisi

Optimalisasi Susunan Tempat Duduk Kereta Api Menggunakan Algoritma Greedy dan Program Dinamis

Aplikasi Algoritma Greedy pada Pemilihan Jenis Olahraga Ringan

BAB II LANDASAN TEORI

Algoritma Greedy pada Penjadwalan Real-Time untuk Earliest Deadline First Scheduling dan Rate Monotonic Scheduling serta Perbandingannya

Penyelesaian Sum of Subset Problem dengan Dynamic Programming

PERBANDINGAN PENYELESAIAN KNAPSACK PROBLEM SECARA MATEMATIKA, KRITERIA GREEDY DAN ALGORITMAGREEDY

Algoritma Greedy (lanjutan)

IF3051 Strategi Algoritma Penerapan Algoritma Greedy untuk Peletakan Tanaman dalam Game Harvest Moon: Back to Nature

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

Analisis Beberapa Algoritma dalam Menyelesaikan Pencarian Jalan Terpendek

Perbandingan BFS, DFS dan Greedy pada Permainan Logika Crossing Bridge

Aplikasi Algoritma Greedy untuk Menyelesaikan Permainan Magic Wingdom

Penyelesaian Berbagai Permasalahan Algoritma dengan Kombinasi Algoritma Brute Force dan Greedy

Program Dinamis (dynamic programming):

Penggunaan Algoritma Greedy dalam Membangun Pohon Merentang Minimum

BAB III ANALISIS ALGORITMA

PERMASALAHAN OPTIMASI 0-1 KNAPSACK DAN PERBANDINGAN BEBERAPA ALGORITMA PEMECAHANNYA

Algoritma Brute Force (lanjutan)

PENERAPAN ALGORITMA GREEDY DALAM PENENTUAN USAHA BISNIS INVESTASI

Penggunaan Algoritma Greedy untuk Mencari Solusi Optimal dalam Permainan Brick Breaker

PENGGUNAAN ALGORITMA GREEDY DALAM PERMAINAN KARTU BLACK JACK

Penggunaan Algoritma Greedy untuk menyelesaikan Permainan Othello

Program Dinamis. Oleh: Fitri Yulianti

MODUL I PROGRAM DINAMIS

Algoritma Runut-balik (Backtracking) Bagian 1

TIN102 - Pengantar Teknik Industri Materi #10 Ganjil 2015/2016 TIN102 PENGANTAR TEKNIK INDUSTRI

Penentuan Menu Makan dengan Pemrograman Dinamis

APLIKASI ALGORITMA GREEDY DALAM PERMAINAN JAWBREAKER

BAB 2 LANDASAN TEORI

Aplikasi Algoritma Greedy Pada Permainan Big Two

Algoritma Runut-balik (Backtracking) Bahan Kuliah IF2251 Strategi Algoritmik Oleh: Rinaldi Munir

Penerapan Algoritma Greedy dalam Pemilihan Benih Terbaik pada Permainan Harvest Moon: Friends of Mineral Town

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

Penggunaan Algoritma Greedy untuk Meminimalkan Belanja

Penerapan Algoritma Greedy Pada Permainan Killbots

Penyelesaian Persoalan Penukaran Uang dengan Program Dinamis

Transkripsi:

BAB II LANDASAN TEORI Bab ini berisi landasan dan dasar teori yang akan digunakan dalam melakukan analisis, perancangan, dan implementasi tugas akhir yang dilakukan pada bab-bab selanjutnya. 2.1 Bar Steel Bar steel merupakan salah satu bahan dasar bangunan yang memiliki peranan penting dalam satu kesatuan bangunan. Bar steel menjadi fondasi dari berdirinya bangunan karena dipakai hampir diseluruh bagian bangunan. Pada tahap awal konstruksi, bentuk bangunan dibuat dari bermacam-macam bar steel, sesuai dengan kebutuhan bangunan. Bar steel dibuat oleh pabrik dengan panjang standar. Satu batang bar steel yang dihasilkan oleh pabrik dengan panjang standar tersebut biasanya dihitung sebagai satu rol bar steel. Oleh karena itu, bar steel dipotong-potong sesuai dengan kebutuhan bentuk bangunan. Saat perancangan, arsitek yang merancang bangunan telah memilki perhitungan mengenai panjang-panjang bar steel yang digunakan, sehingga dapat ditentukan kebutuhan panjang bar steel untuk konstruksi. Bar steel yang dijual oleh produsen bar steel terdiri dari 3 jenis, yaitu: 1. Hot Rolled Bar steel (HR Bar steel) HR Bar steel punya banyak tipe, beberapa tipe tersebut dapat dilihat pada Tabel II-1. Tabel II-1. HR Bar steel [CEN07] Gambar Tipe Spesifikasi HR Steel Half Rounds ASTM A 36, ASTM A 709 Gr 36 HR Steel Half Ovals ASTM A 36, ASTM A 709 Gr 36 Steel Concrete Reinforcing Bars Data spesifikasi tidak ditemukan HR Steel Strip Data spesifikasi tidak ditemukan II-1

2. Cold Finished Bar steel (CF Bar steel) CF Bar steel punya banyak tipe, beberapa tipe tersebut dapat dilihat pada Tabel II-2. Tabel II-2. CF Bar steel [CEN07] Gambar Tipe Spesifikasi HR Steel Rounds 1018, 10L18 (1018 juga tersedia yang telah dibengkokkan, telah diasah & dihaluskan) 1045 (juga tersedia yang telah dibengkokkan, telah diasah & dihaluskan) 1117, 11L17 1141, 11L41 (1141 juga tersedia yang telah dibengkokkan, telah diasah & dihaluskan) 1141 telah diberi pola gambar, diasah & dihaluskan Akurasi khusus 1144 12L14, 12L14 w/selenium, 12L14 w/tellurium 1215 (juga tersedia yang telah diberi pola Gambar, diasah & dihaluskan Akurasi khusus) CF Steel Hexagons 1018 ASTM A 311 Kelas B, Gr 1144 atau STRESSPROOF ((juga tersedia yang telah diasah & dihaluskan) 1045 1117 1137 12L14, 12L14 w/selenium, 12L14 w/tellurium 1215 CF Steel Squares 1018 ASTM A 311 Class B, Gr 1144 or STRESSPROOF INcut 100/1214 SA, INcut 200 1045 1117, 11L17 12L14 1215 CF Steel Flats 1018 11L17 II-2

3. Alloy Bar steel Alloy Bar steel memiliki tipe yang sama bentuk dengan CF Bar steel, namun bedanya, Alloy Bar steel terbuat dari campuran beberapa logam. 2.2 Algoritma Optimasi Jika diberikan suatu permasalahan yang solusinya dapat diselesaikan dengan menggunakan fungsi f dan solusi optimal yang diinginkan adalah f(x), maka algoritma optimasi adalah metode yang digunakan untuk menemukan nilai x, misalnya menemukan kemungkinan yang terbesar (atau terkecil) dari suatu fungsi f dengan constraint yang diberikan oleh variabel x. Dalam hal ini, x, dapat berupa nilai skalar atau vektor dari nilai yang kontinu atau nilai diskrit [WIK07-a]. 2.2.1 Algortima Brute Force 2.2.1.1 Penjelasan Umum Algoritma Brute Force Brute force adalah sebuah pendekatan yang lempang (straightforward) untuk memecahkan masalah, biasanya didasarkan pula pada pernyataan masalah (problem statement) dan definisi konsep yang dilibatkan. Algoritma brute force memecahkan masalah dengan sangat sederhana, langsung dan dengan cara yang jelas (obvious way) [MUN06]. Sebetulnya brute force tidak dapat dikatakan sebagai sebuah algoritma karena brute force tidak menggunakan suatu cara yang khusus dalam memecahkan masalah. Brute force hanya memeriksa semua kemungkinan yang ada. Metode ini tidak pintar dan tidak memiliki efisiensi sama sekali. Suatu metode dapat dikatakan algoritma jika memiliki efisiensi yang lebih baik dibanding metode lain. 2.2.1.2 Karakteristik Algoritma Brute Force Algoritma brute force pada umumnya tidak cerdas dan tidak mangkus, karena ia membutuhkan jumlah langkah yang besar dalam penyelesaiannya, terutama bila masalah yang akan dipecahkan berukuran besar (dalam hal ini ukuran masukannya). Walaupun algoritma brute force tidak mangkus, namun algoritma ini dapat dijadikan II-3

perbandingan solusi dengan algoritma lain yang lebih mangkus karena algoritma brute force pasti menghasilkan solusi yang paling optimal. Algoritma brute force membandingkan semua kemungkinan solusi sehingga solusi yang dihasilkan pasti paling optimal [MUN06]. 2.2.1.3 Penyelesaian Masalah Menggunakan Algoritma Brute Force Salah satu implementasi persoalan optimasi yang dapat diselesaikan dengan algoritma brute force adalah persoalan knapsack. Inti dari permasalahan ini adalah misalnya diberikan n buah objek dan sebuah knapsack (karung, tas, dsb) dengan kapasitas bobot K. Setiap objek memiliki property bobot (weight) w i dan keuntungan p i. Objektif persoalan adalah bagaimana memilih objek-objek yang ada untuk dimasukkan kedalam knapsack sehingga tidak melebihi kapasitas knapsack namun memberikan keuntungan yang maksimal. Contoh persoalannya adalah sebagai berikut: Jika terdapat sebuah knapsack dengan kapasitas K = 5 dan objek-objek dengan spesifikasi sebagai berikut: w 1 = 2; p 1 = 65 w 2 = 3; p 2 = 80 w 3 = 1; p 3 = 30 Langkah-langkah pencarian solusi 0/1 Knapsack secara brute force dirangkum dalam Tabel II-3. Tabel II-3. Tabel Penyelesaian Persoalan Knapsack dengan Brute force Himpunan Bagian Total Bobot Total Keuntungan {} 0 0 {1} 2 65 {2} 3 80 {3} 1 30 {1,2} 5 145 {1,3} 3 95 {2,3} 4 110 {1,2,3} 6 Tidak layak (Bobot > K) II-4

Himpunan bagian objek yang memberikan keuntungan maksimum adalah {1,2} dengan total keuntungan 80. Jadi, solusi untuk persoalan knapsack diatas adalah X = {1, 1, 0}, yang artinya objek 1 dan 2 dimasukkan kedalam knapsack, sedangkan objek 3 tidak dimasukkan. Penyelesaian masalah knapsack menggunakan algoritma brute force mempunyai komplesitas O(n.2 n ). 2.2.2 Algortima Greedy 2.2.2.1 Penjelasan Umum Algoritma Greedy Algoritma greedy membentuk solusi langkah per langkah (step by step). Terdapat banyak pilihan yang perlu dieksplorasi pada setiap langkah solusi. Oleh karena itu, pada setiap langkah harus dibuat keputusan yang terbaik dalam menentukan pilihan. Keputusan yang telah diambil pada suatu langkah tidak bisa diubah lagi pada langkah selanjutnya. Sebagai contoh, jika menggunakan algoritma greedy untuk menempatkan komponen diatas sirkuit, sekali sebuah komponen telah ditetapkan posisinya, komponen tersebut tidak dapat dipindahkan lagi. Pendekatan yang digunakan di dalam algoritma greedy adalah membuat pilihan yang tampaknya memberikan perolehan terbaik, yaitu dengan membuat pilihan optimum lokal (local optimum) pada setiap langkah dengan harapan bahwa sisanya mengarah ke solusi optimum global (global optimum) [MUN06]. Metode pencarian menggunakan greedy dapat dikatakan sebuah algoritma pencarian karena metode ini dapat mengurangi sampel yang digunakan selama proses pencarian. Dengan begitu greedy dapat meningkatkan efisiensi pencarian dengan mengurangi sampel yang diperbandingkan. Namun, pada sebagian masalah algoritma greedy tidak selalu berhasil memberikan solusi yang benar-benar optimum. 2.2.2.2 Skema Umum Algoritma Greedy Semua algoritma greedy mempunyai skema umum yang sama. Secara umum, skema algoritma greedy dapat dirumuskan sebagai berikut: [MUN06] 1. Buat elemen-elemen pendukung algoritma greedy, yaitu: a) Himpunan Kandidat Himpunan yang berisi elemen-elemen pembentuk solusi. II-5

b) Himpunan Solusi Himpunan yang berisi kandidat-kandidat yang akan terpilih sebagai solusi persoalan. c) Fungsi Seleksi Fungsi yang pada setiap langkah dijalankan untuk memilih kandidat yang paling memungkinkan mencapai solusi optimal. d) Fungsi Kelayakan Fungsi yang memeriksa apakah suatu kandidat yang telah dipilih dapat memberikan solusi yang layak, yakni kandidat tersebut bersama-sama bersamasama dengan himpunan solusi yang telah terbentuk tidak melanggar constraints yang ada. e) Fungsi Objektif Fungsi yang memaksimumkan atau meninimumkan nilai solusi. 2. Inisialisasi S dengan kosong 3. Pilih sebuah kandidat (dengan fungsi seleksi) dari C, 4. Kurangi C dengan kandidat yang sudah dipilih dari langkah 3 diatas. 5. Periksa apakah kandidat yang dipilih tersebut bersama-sama dengan himpunan solusi membentuk solusi yang layak yang dilakukan oleh fungsi kelayakan. Jika ya, masukkan kandidat tersebut ke dalam himpunan solusi; jika tidak, buang kandidat tersebut dan tidak perlu dipertimbangkan lagi. 6. Periksa apakah himpunan solusi sudah memberikan solusi yang lengkap menggunakan fungsi objektif. Jika ya, berhenti, jika tidak, ulangi dari langkah 3. 2.2.2.3 Pseudocode Algoritma Greedy Pseudocode algoritma greedy diberikan pada Algoritma II-1. 2.2.2.4 Penyelesaian Masalah Menggunakan Algoritma Greedy Salah satu implementasi persoalan optimasi yang dapat diselesaikan dengan algoritma greedy adalah persoalan knapsack. Contohnya adalah sebagai berikut: Jika terdapat sebuah knapsack dengan kapasitas K = 5 dan objek-objek dengan spesifikasi sebagai berikut: II-6

w 1 = 2; p 1 = 65 w 2 = 3; p 2 = 80 w 3 = 1; p 3 = 30 Secara matematis, persoalan 0/1 knapsack menggunakan algoritma greedy dapat dirumuskan sebagai berikut: maksimasi f = p i x i dengan constraint w i x i K yang dalam hal ini, x i = 0 atau 1, i = 1, 2, 3,, n function greedy (input C: himpunan_kandidat) himpunan_kandidat {Mengembalikan solusi dari persoalan optimasi dengan algoritma greedy Masukan: himpunan kandidat C Keluaran: himpunan solusi yang bertipe himpunan_kandidat } Deklarasi x: kandidat S: himpunan_kandidat Algoritma S {Inisialisasi kosong} while (not SOLUSI(S)) and (C {} ) do x SELEKSI(C) {pilih sebuah kandidat dari C} C C {x} {elemen himpunan kandidat berkurang satu} if LAYAK(S U {x}) then S S U {x} endif endwhile {SOLUSI(S) or C = {}} if SOLUSI(S) then return S else write( tidak ada solusi ) endif Algoritma II-1 Pseudocode algoritma greedy Langkah-langkah penyelesaian masalah diatas dengan algoritma greedy adalah sebagai berikut: 1. Buat elemen-elemen pendukung algoritma greedy, yaitu: a) Himpunan Kandidat, C Objek-objek yang akan dimasukkan kedalam knapsack, yaitu C = {w 1, w 2, w 3 } b) Himpunan Solusi, S Objek-objek yang terpilih sehingga jumlah nilai objek yang dimasukkan kedalam knapsack bernilai paling tinggi tanpa melebihi kapasitas knapsack K. II-7

c) Fungsi Seleksi Pilihlah objek yang bernilai paling optimal berdasarkan 3 kriteria, yaitu bobot, keuntungan yang diberikan (profit), dan densitas(p i /w i ). Untuk kriteria profit dan densitas pilihlah objek yang bernilai paling tinggi untuk masing-masing criteria tersebut, sedangkan untuk kriteria bobot pilihlah objek yang berbobot paling rendah. d) Fungsi Kelayakan Fungsi yang memeriksa apakah total bobot objek-objek yang telah dimasukkan kedalam knapsack tidak melebihi K (kapasitas knapsack). e) Fungsi Objektif Fungsi yang memilih jumlah keuntungan yang paling besar dari kandidat solusi yang layak. 2. Inisialisasi S dengan kosong 3. Pilih sebuah kandidat (dengan fungsi seleksi) dari C, 4. Pada Tabel II-4 direpresentasikan nilai-nilai yang dimiliki objek untuk 3 kriteria optimasi, yaitu profit, bobot, dan densitas. 5. Objek yang terpilih untuk masing-masing kriteria adalah objek yang nilainya dicetak tebal. Tabel II-4. Nilai-nilai yang dimiliki oleh objek knapsack Objek profit bobot densitas w 1 65 2 32.5 w 2 80 3 26.67 w 3 30 1 30 1. Kurangi C dengan kandidat yang sudah dipilih dari langkah 3 diatas. 2. Periksa apakah kandidat yang dipilih tersebut bersama-sama dengan himpunan solusi membentuk solusi yang layak yang dilakukan oleh fungsi kelayakan. Jika ya, masukkan kandidat tersebut ke dalam himpunan solusi, jika tidak, buang kandidat tersebut dan tidak perlu dipertimbangkan lagi. 3. Periksa apakah himpunan solusi sudah memberikan solusi yang lengkap menggunakan fungsi objektif. Jika ya, berhenti, jika tidak, ulangi dari langkah 3. 4. Solusi persoalan telah didapatkan. Solusi dapat dilihat pada Tabel II-5. II-8

Tabel II-5. Solusi persoalan knapsack menggunakan algoritma greedy Properti objek Kriteria optimasi Solusi i pi wi p i /w i profit bobot densitas Optimal 1 65 2 32.5 1 1 1 1 2 80 3 26.67 1 0 0 1 3 30 1 30 0 1 1 0 Total bobot 5 3 3 5 Total Keuntungan 145 95 95 145 Penyelesaian masalah ini dengan algoritma greedy mempunyai kompleksitas O(n 2 ). 2.2.3 Algoritma Program Dinamis 2.2.3.1 Penjelasan umum Algoritma Program Dinamis Program dinamis adalah metode pemecahan masalah dengan cara menguraikan solusi menjadi sekumpulan langkah (step) atau tahapan (stage) sedemikian sehingga solusi dari persoalan dapat dipandang dari serangkaian keputusan yang saling berkaitan. Pada penyelesaian persoalan dengan metode ini terdapat sejumlah berhingga pilihan yang mungkin, solusi pada setiap tahap dibangun dari hasil solusi tahap sebelumnya, dan kita menggunakan persyaratan optimasi dan kendala untuk membatasi sejumlah pilihan yang harus dipertimbangkan pada suatu tahap [MUN06]. Pada algoritma program dinamis setiap tahap pencarian memperhitungkan tahaptahap sebelum dan sesudahnya sehingga keputusan yang diambil pada setiap tahap dapat memberikan efek yang baik terhadap tahap selanjutnya. 2.2.3.2 Skema Umum Algoritma Program Dinamis Secara umum, ada empat langkah yang dilakukan dalam mengembangkan algoritma program dinamis, yaitu: [MUN06] 1. Karakteristikkan struktur solusi optimal 2. Definisikan secara rekursif nilai solusi optimal 3. Hitung nilai solusi optimal secara maju atau mundur 4. Konstruksi solusi optimal II-9

2.2.3.3 Penyelesaian Masalah Menggunakan Algoritma Program Dinamis Salah satu implementasi persoalan optimasi yang dapat diselesaikan dengan algoritma program dinamis adalah persoalan knapsack. Contohnya adalah sebagai berikut: Jika terdapat sebuah knapsack dengan kapasitas K = 5 dan objek-objek dengan spesifikasi sebagai berikut: w 1 = 2; p 1 = 65 w 2 = 3; p 2 = 80 w 3 = 1; p 3 = 30 Secara matematis, persoalan 0/1 knapsack menggunakan algoritma program dinamis dapat dirumuskan sebagai berikut: f o (y) = 0, y = 0, 1, 2,, K (basis) f k (y) = -, y < 0 (basis) f k (y) = max{f k-1 (y),p k + f k-1 (y-w k )}, k = 1, 2,, n (rekurens) Langkah-langkah penyelesaian masalah diatas dengan algoritma program dinamis adalah sebagai berikut: 1. Karakteristikkan struktur solusi optimal Struktur solusi optimal adalah (x 1, x 2, x 3, x 4 ) dimana x i memiliki nilai 0 jika objek w i tidak dimasukkan kedalam knapsack dan memiliki nilai 1 jika w i dimasukkan kedalam knapsack. Definisikan secara rekursif nilai solusi optimal Relasi rekurens untuk masalah ini adalah f 0 (y) = 0, y = 0, 1, 2,, K (basis) f k (y) = -, y < 0 (basis) f k (y) = maks{f k-1 (y), p k + f k-1 (y-w k )}, k = 0, 1, 2,,n (rekurens) yang dalam hal ini, f k (y) adalah keuntungan optimum dari persoalan 0/1 knapsack pada tahap k untuk kapasitas karung sebesar y. Perhatikanlah f 0 (y) = 0 adalah nilai dari persoalan knapsack kosong (tidak ada persoalan knapsack) dengan kapasitas II-10

y, sedangkan f k (y) = - adalah nilai dari persoalan knapsack untuk kapasitas negatif. 2. Hitung nilai solusi optimal secara maju Perhitungan secara maju terbagi menjadi 3 tahap karena persoalan knapsack ini terdiri dari 3 objek. 1. Tahap 1 Tabel II-6 merupakan tabel yang merepresentasikan tahap 1 program dinamis. f k (y) = max{f 0 (y), p 1 + f 0 (y-w 1 )} = max{ f 0 (y), 65 + f 0 (y-2)} 2. Tahap 2 Tabel III-7 merupakan tabel yang merepresentasikan tahap 2 program dinamis. f k (y) = max{f 1 (y), p 2 + f 1 (y-w 2 )} = max{f 1 (y), 80 + f 1 (y-3)} 3. Tahap 3 Tabel III-8 merupakan tabel yang merepresentasikan tahap 3 program dinamis. f k (y) = max{f 2 (y), p 3 + f 2 (y-w 3 )} = max{f 2 (y), 30 + f 2 (y-1)} 4. Konstruksi solusi optimal 5. Solusi optimum dari persoalan 0/1 knapsack diatas adalah (1, 1, 0) dengan nilai keuntungan maksimum adalah 145. 6. Penyelesaian masalah ini dengan algoritma program dinamis mempunyai kompleksitas O(2n 2 ). Tabel II-6 Tahap 1 Penyelesaian masalah knapsack dengan program dinamis y Solusi Optimum f 0 (y) 65 + f 0 (y-2) f 1 (y) (x 1 *, x 2 *, x 3 *) 0 0-0 (0, 0, 0) 1 0-0 (0, 0, 0) 2 0 65 65 (1, 0, 0) 3 0 65 65 (1, 0, 0) 4 0 65 65 (1, 0, 0) 5 0 65 65 (1, 0, 0) II-11

Tabel II-7 Tahap 2 Penyelesaian masalah knapsack dengan program dinamis y Solusi Optimum f 1 (y) 80 + f 1 (y-3) f 2 (y) (x 1 *, x 2 *, x 3 *) 0 0 80 + (- ) = - 0 (0, 0, 0) 1 0 80 + (- ) = - 0 (0, 0, 0) 2 65 80 + (- ) = - 65 (1, 0, 0) 3 65 80 + 0 = 80 80 (0, 1, 0) 4 65 80 + 0 = 80 80 (0, 1, 0) 5 65 80 + 65 = 145 145 (1, 1, 0) Tabel II-8 Tahap 3 Penyelesaian masalah knapsack dengan program dinamis y Solusi Optimum f 2 (y) 30 + f 2 (y-1) f 3 (y) (x 1 *, x 2 *, x 3 *) 0 0 30 + (- ) = - 0 (0, 0, 0) 1 0 30 + (- ) = - 0 (0, 0, 0) 2 65 30 + 0 = 30 65 (1, 0, 0) 3 80 30 + 65 = 95 95 (1, 0, 1) 4 80 30 + 80 = 110 110 (0, 1, 1) 5 145 30 + 80 = 110 145 (1, 1, 0) II-12