• Tidak ada hasil yang ditemukan

BAB 2 LANDASAN TEORI

N/A
N/A
Protected

Academic year: 2021

Membagikan "BAB 2 LANDASAN TEORI"

Copied!
21
0
0

Teks penuh

(1)

BAB 2

LANDASAN TEORI

2.1. Konsep Dasar Graph

Sebelum sampai pada definisi masalah lintasan terpendek, terlebih dahulu pada bagian ini akan diuraikan mengenai konsep-konsep dasar dari model graph dan representasinya dalam memodelkan masalah lintasan terpendek.

Definisi 2.1. Graph didefinisikan sebagai pasangan himpunan (V, E), dengan V adalah himpunan titik (vertex) dan E adalah himpunan sisi (edge) (Chacra et al, 1979, hal:5).

Secara umum graph dapat digambarkan dengan suatu diagram dengan titik ditunjukkan sebagai titik yang dinotasikan dengan vi, i = 1, 2, …, n dan sisi digambarkan

dengan sebuah garis lurus atau garis lengkung yang menghubungkan dua buah titik (vi,vj)

dan dinotasikan dengan ek. Sebagai ilustrasi dapat dilihat Gambar 2.1 yaitu suatu graph

(2)

Gambar 2.1. Graph 5 titik dan 6 sisi

Definisi 2.2. Loop adalah sisi yang berawal dan berakhir pada titik yang sama, sedangkan sisi paralel (edge paralel) adalah dua sisi atau lebih berbeda yang menghubungkan dua buah titik vi dan vj yang sama.

Gambar 2.2. Graph dengan 6 titik dan 10 sisi

Pada Gambar 2.2 dapat dilihat bahwa e4 adalah sebuah loop dan e1 serta e2 adalah

dua buah sisi yang paralel.

Definisi 2.3. Graph sederhana adalah graph yang tidak memuat loop dan sisi-sisi paralel. Misalkan V = (v1, v2, v3, v4, v5) dan E=(e1, e2, e3, e4, e5, e6), maka G=(V,E) adalah graph

sederhana yang dapat dilihat pada Gambar 2.1.

Definisi 2.4. Suatu edge ek dalam suatu graph G dengan titik-titik ujung vi dan vj disebut

(3)

adjacent. Jika kedua edge tersebut incident pada suatu titik persekutuan, maka dua buah edge ek dan em disebut saling adjacent.

Pada Gambar 2.2 dapat dilihat bahwa e8, e7, e9 adalah tiga buah sisi yang incident

dengan v6, sedangkan e5 dan e7 adalah adjacent.

Definisi 2.5. Degree dari sbuah titik vi dalam graph G adalah jumlah sisi yang incident

dengan vi. Dengan loop dihitung dua kali. Degree dari sebuah titik vi biasanya dinotasikan

dengan d(vi).

Pada Gambar 2.2 dapat dilihat bahwa d(v1) = 2, d(v2) = 4, d(v3) = 5, d(v4) = 2,

d(v5) =2, d(v5) = 3, dan d(v6) = 3.

Definisi 2.6. Suatu walk dalam sebuah graph G(V,E) adalah suatu barisan berhingga dari titik dan sisi secara bergantian yang dimulai dan diakhiri dengan titik sehingga setiap sisi incident dengan titik sebelum dan sesudahnya, di mana sebuah sisi hanya dilalui satu kali. Di dalam suatu walk pada sebuah graph dapat terjadi bahwa satu titik dilalui lebih dari satu kali.

Definisi 2.7. Suatu Graph Berarah G terdiri dari himpunan titik V(G): {v1, v2, …},

himpunan sisi E(G): {e1, e2, …}, dan suatu fungsi yang menghubungkan setiap sisi

dalam E(G) ke suatu pasangan berurutan titik (vi,vj).

Jika ek = (vi,vj) adalah suatu sisi dalam G, maka vi disebut titik awal ek dan vj

(4)

Berikut ini Gambar 2.3.

Gambar 2.3. Digraph G

2.2. Graph Berlabel

Hubungan antar titik dalam graph perlu diperjelas. Hubungan tidak cukup hanya menunjukkan titik mana yang berhubungan langsung, tetapi juga seberapa kuat hubungan itu. Titik graph menyatakan kota-kota yang ada di daerah tersebut. Sisi-sisi dalam graph menyatakan jalan yang menghubungkan kota-kota tersebut.

Informasi tentang peta daerah perlu diperjelas dengan mencantumkan jarak antara 2 kota yang berhubungan. Informasi tentang jarak dibutuhkan karena dalam graph, letak titik dan panjang sisinya tidak menyatakan jarak 2 kota yang sebenarnya. Jadi setiap garis dalam graph berhubungan dengan suatu label yang menyatakan bobot garis tersebut.

Definisi 2.8. Graph Berlabel (labelled graph) adalah suatu graph tanpa sisi paralel di mana setiap sisinya berhubungan dengan suatu bilangan riil tak negatif yang menyatakan nilai sisi (w(e)) tersebut. Jumlah nilai semua sisi disebut Total Nilai.

(5)

Matriks yang bersesuaian dengan graph berlabel G adalah adjacency. Jika matriks A = (aij) dengan aij = nilai sisi yang menghubungkan titik vi ke titik vj maka aij =

, dan aij = 0 jika i = j.

Contoh:

Dalam suatu propinsi, ada 8 kota (v1, v2, ..., v8) yang akan dihubungkan dengan jaringan

listrik. Biaya pemasangan jaringan listrik yang mungkin dibuat antar 2 kota sebagai berikut:

Tabel 2.1 Biaya Pemasangan Jaringan Listrik

Sisi Kota yang dihubungkan Biaya per satuan

e4 v2 - v3 3 e7 v4 - v6 4 e2 v1 - v7 5 e8 v3 - v4 5 e9 v3 - v5 5 e1 v1 - v2 15 e3 v1 - v4 15 e10 v6 - v8 15 e5 v7 - v8 15 e11 v5 - v6 15 e6 v6 - v7 18

a. Graph berlabel untuk menyatakan jaringan listrik di 8 kota dapat digambarkan pada Gambar 2.3. Angka dalam kurung menyatakan nilai sisi yang bersangkutan. Nilai tersebut menyatakan biaya pengadaan jaringan listrik.

(6)

Gambar 2.4. Graph Berlabel Jaringan Listrik 8 Kota

b. Adjacency Matriks untuk menyatakan graph berlabel pada Gambar 2.3. adalah matriks A = (aij) dengan aij = biaya titik vi dengan vj. Untuk sisi yang

menghubungkan titik vi dengan vj.

Keterangan:

 = tidak ada sisi yang menghubungkan titik vi dengan vj

0 = Untuk i sama dengan j

Misalkan G adalah sebuah graph berarah. Sebuah sisi berarah e = (vi,vj)

dikatakan mulai pada titik awal vi dan berakhir di titik akhir vj, vi dan vj dikatakan

adjacent. v1 v2 V3 v4 v5 v6 v7 v8 v1 0 15 ∞ 15 ∞ ∞ 5 ∞ v2 15 0 3 ∞ ∞ ∞ ∞ ∞ v3 ∞ 3 0 5 5 ∞ ∞ ∞ A= v4 15 ∞ 5 0 ∞ 4 ∞ ∞ v5 ∞ ∞ 5 ∞ 0 15 ∞ ∞ v6 ∞ ∞ ∞ 4 15 0 18 15 v7 5 ∞ ∞ ∞ ∞ 18 0 15 v8 ∞ ∞ ∞ ∞ ∞ 15 15 0

(7)

2.3. Lintasan Minimum

Salah satu aplikasi graph berarah berlabel yang sering dipakai adalah mencari lintasan terpendek diantara 2 titik. Apabila masalahnya adalah mencari lintasan terpendek tetap dapat digunakan dengan cara mengganti nilai sisi.

Definisi 2.9. Misalkan G adalah suatu graph, untuk v dan w adalah titik dalam G. suatu Walk dari v ke w adalah barisan titik dan sisi secara berselang-seling, diawali dari titik v dan diakhiri pada titik w. Walk dengan panjang n dari v ke w ditulis : v0 e1 v1 e2 v2 … vn-2

en vn dengn v0 = v: vn = w; vi-1 dan vi adalah titik-titik ujung sisi ei.

Lintasan dengan panjang n dari v ke w adalah walk dari v ke w yang semua sisinya berbeda. Lintasan dari v ke w dituliskan sebagai v = v0 e1 v1 e2 v2 … vn-1 en vn = w

dengan eiej untuk i j.

Penulisan berikutnya akan dipergunakan notasi: vi vj, A = {v1 v2, v2 v3, ... }

Definisi 2.10. Lintasan tertutup adalah suatu barisan sisi

n i i i e e e , ,..., 2 1 sedemikian rupa sehingga titik terminal

j

i

e berimpit dengan titik awal ) 1 (j

i

e untuk 1 jk1. Pada Gambar 2.2 terdapat:

a. Pada titik v1e1v2e3v3e4v3e5v4 semua sisi berbeda ( ,

, , 3 4 1 e e

e dan e5) masing-masing muncul sekali. Ada titik yang berulang (v3 muncul 2 kali). Titik awal dan titik akhir tidak sama dengan titik awal = v1 dan titik akhir =

4

v , Barisan ini merupakan lintasan dari v1 v4 dengan panjang 4.

b. Pada titik v1e1v2e3v3e5v4e5v3e6v5 ada sisi yang muncul lebih dari sekali, yaitu e5 (muncul 2 kali) berarti barisan tersebut merupakan walk dari v1 v5 dengan panjang 5.

(8)

2.4. Lintasan Terpendek (Shortest Path)

Setiap lintasan dalam digraph mempunyai nilai yang dihubungkan dengan nilai path tersebut, yang nilainya adalah jumlah dari nilai sisi lintasan tersebut. Dari ukuran dasar ini dapat dirumuskan masalah seperti mencari lintasan terpendek antara dua titik dan meminimumkan biaya.

Banyak bidang penerapan mensyaratkan untuk menentukan lintasan terpendek berarah dari asal ke tujuan di dalam suatu distribusi aliran berarah. Algoritma yang diberikan dapat dimodifikasi dengan mudah untuk menghadapi lintasan berarah pada setiap iterasinya.

Suatu versi yang lebih umum dari masalah lintasan terpendek adalah menentukan lintasan terpendek dari sembarang titik menuju ke setiap titik lainnya. Pilihan lainnya adalah membuang kendala tak negatif bagi ”jarak”. Suatu kendala lain dapat juga diberlakukan dalam suatu masalah lintasan terpendek.

Definisi 2.11. Lintasan terpendek antara dua titik dari s ke t dalam jaringan adalah lintasan graph berarah sederhana dari s ke t dengan syarat tidak ada lintasan lain yang memiliki nilai terendah.

Contoh.

Gambar 2.5. Lintasan Terpendek (Shortest path) (garis tebal) 2 3 5 2 x1 5 x8 1 x6 3 x3 x2 x4 1 1 x5 x7 3 2 1 4

(9)

Pada Gambar 2.5 dapat dilihat bahwa v berada pada titik 1, 2, 3, 4, 5 dan x1, x2, x3,

x4, x5, x6, x7, x8 merupakan e (sisi). Sisi merepresentasikan saluran dengan kapasitas

tertentu (contohnya :air) dapat dialirkan melalui saluran. Sedangkan titik merepresentasikan persimpangan saluran. air mengalir melalui titik pada titik yang dilalui, lintasan terpendek dari titik pada Gambar 2.5 adalah P = {1 4,4 5} dengan kapasitas 4.

2.5 Pemrograman Linier (Linear Programming)

Pemrograman Linier adalah suatu bentuk dari pemrograman matematika. Ini adalah suatu kasus khusus dari Pemrograman Linier untuk semua (atau beberapa) variabel dibatasi sebagai bilangan cacah tak negatif. Untuk semua variabel dibatasi sebagai bilangan cacah, persoalannya disebut persoalan program bilangan cacah murni, dan kalau beberapa variabel tertentu dibatasi sebagai bilangan cacah campuran. Suatu bentuk khusus dari program bilangan cacah ialah suatu kasus di mana variabel dibatasi harus berharga nol atau satu. Kalau variabel dibatasi seperti ini, maka persoalannya disebut persoalan Pemrograman (0/1).

Perumusan Pemrograman Linier dapat membantu prosedur penyelesaian lebih efisien. Berikut ini adalah bentuk umum Pemrograman Linier:

Minimumkan c1x1c2x2 ...cnxn ………...(1) dengan kendala 1 1 2 12 1 11x a x ... a x b a    n n  ………...(2) 2 2 2 22 1 21x a x ... a x b a    n n  . . n n nn n n x a x a x b a 1 12 2 ...  0 ,..., , 2 1 x xnx …….………...(3)

(10)

Pada Pemrograman Linier ini, x1,x2,....,xn mewakili keputusan variabel yang tidak diketahui; c1,c2,....,cn adalah biaya koefisien; b1,b2,....,bn adalah nilai di samping kanan; dan aij, i1 sampai m dan j 1 sampai n, dinamakan koefisien teknologi.

Pernyataan (1) dinamakan fungsi objektif; (2) dinamakan kendala; dan (3) adalah kendala tidak negatif. Beberapa penyelesaian memenuhi semua kendala, dinamakan feasible solution.

Pada perumusan ini, kendala ditulis dalam bentuk persamaan. Umumnya, kendala Pemrograman Linier mempunyai relasi atau tetapi selalu dapat diubah dalam persamaan dengan penjumlahan slack variabel. Fungsi objektif (1) juga dapat diekpresikan sebagai maksimum sebagai pengganti minimum.

Penulisan matematika tersebut, dapat dirumuskan menjadi:

Minimumkan

n j j jx c 1 dengan kendala

  n j i j ijx b a 1 , i1,2,....,n , 0  j x j1,2,....,n

2.6 Pemrograman Bilangan Bulat (Integer Programming)

Salah satu asumsi teknik Pemrograman Linier adalah divisibility atau fractionality. Dengan kata lain, setiap variabel model dapat terjadi pada semua nilai non negatif, suatu nilai solusi yang kontinu. Dalam situasi keputusan tertentu, asumsi ini tidak realistik dan tidak dapat diterima.

(11)

Definisi 2.12. Pemrograman Bilangan Bulat adalah suatu Pemrograman Linier dengan tambahan persyaratan bahwa semua atau beberapa variabel bernilai bulat tidak negatif, tetapi tidak perlu bahwa parameter model juga bernilai bulat.

Ada banyak kasus dalam masalah Pemrograman Bilangan Bulat yang membatasi variabel model bernilai nol atau satu. Dalam kasus demikian, persoalan lintasan hanya memiliki dua pilihan yaitu masuk atau keluar dari jaringan. Untuk variabel ini bernilai satu, persoalan masuk, untuk variabel bernilai nol, persoalan keluar.

Dalam masalah Pemrograman Bilangan Bulat, untuk setiap persoalan yang mengharapkan semua variabel basis bernilai integer (bulat positif atau nol), dinamakan pure(all) integer programming. Untuk setiap persoalan yang hanya mengharapkan variabel-variabel tertentu bernilai integer, dinamakan mixed integer programming. Untuk setiap persoalan yang hanya mengharapkan nilai nol atau satu untuk variabelnya, dinamakan zero one integer programming.

Walaupun persoalan umum Pemrograman Linier 0/1 dapat diselesaikan dengan Cutting Plane Algorithm atau Branch-and-Bound. Balas mengembangkan suatu algoritma enumerative yang efisien dan menarik untuk meyelesaikan persoalan ini. Sangat singkat sebagai dasar Integer NonLinear Programming. Fungsi digunakan untuk menyamaratakan kesalahan metode untuk menyelesaikan persoalan All Integer Programming dan Mixed-Integer NonLinear Programming.

Penyelesaian Pemrograman Bilangan Bulat seperti Pemrograman Linier, dengan rumus berikut ini:

(12)

Minimumkan

  m j ij ij m i x c 1 1 Kendala

        m j m k ki ij x x 1 1 1 0 1 untuk untuk untuk m i i    1 1 1 0  ij x i, j1,2,...,m 2.7 Knapsack

Algoritma Pemrograman 0/1 merupakan salah satu tipe persoalan Knapsack dengan keadaan tertentu terjadi, masing-masing keadaan mempunyai sebuah nilai yang dihubungkan dengan besarannya. Secara nyata bahwa solusi optimal dari persoalan Knapsack akan menunjukkan kemungkinan yang terbaik.

Pada masalah ini akan terdorong untuk menyelesaikan suatu persoalan dalam menentukan lintasan terpendek pada suatu graph dengan kendala biaya dan waktu atau jarak sehingga menghasilkan solusi yang optimal. Pendekatan sederhana dapat dimasukkan ke dalam program komputer untuk memeriksa semua harga 0/1 yang mungkin, dipilih yang terbaik yang memenuhi kendala.

Contoh. Persoalan Knapsack

Seorang pendaki gunung ingin membawa semua peralatan yang ia perlukan dalam satu kantong (sack) saja, Misalkan ada sejumlah n peralatan yang diperlukan, tetapi berat seluruhnya tidak boleh melebihi b kg. Misalkan jenis peralatan ialah xj dan,

      0 1 j x untuk untuk alat alat j ke j ke   ikut tidak ikut

(13)

Berdasarkan keterangan tersebut, persoalan dapat dirumuskan sebagai berikut: Maksimumkan fc1x1c2x2 ...cnxn dengan kendala b x a x a x a1 1  2 2 .... n nx1x2,...xn 0 atau 1

Persoalan ini merupakan persoalan Knapsack sebagai persoalan (0/1).

Definisi 2.13. 0/1 atau biner, persoalan Knapsack yaitu masukkan dari n item dan suatu Knapsack,

Pilih subset dari item sebagai:

Maksimumkan

  1 j j jx p z dengan kendala

  n j j jx c w 1 , j x = 0 atau 1, jN{1,...,n} Untuk       0 1 j x Lainnya untuk objek j Keterangan: j

p = keuntungan dari item j,

j

w = bobot dari item j,

c = kapasitas dari Knapsack.

(14)

2.8 Pemrograman Dinamik (Dynamic Programming)

Pemrograman Dinamik adalah teknik manajemen sain yang diaplikasikan kepada persoalan yang melibatkan keputusan berurutan yang saling berkaitan. Program ini dikembangkan oleh Richard Bellman dan G. B Dantzig pada tahun 1940–1950. Sebagai sebuah konsep, Pemrograman Dinamik lebih luwes dibanding program optimasi lainnya. Aplikasi Pemrograman Dinamik lebih luwes dibanding program–program optimasi lainnya. Aplikasi Pemrograman Dinamik sudah terbukti baik pada pengelolaan persediaan, jaringan, penjadwalan kerja utnuk karyawan, pengendalian produksi, perencanaan penjualan dan bidang lainnya.

Pemrograman Dinamik 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 Pemrograman Dinamik ini terdapat sejumlah berhingga pilihan yang mungkin, solusi pada setiap tahap dibangun dari hasil solusi tahap sebelumnya, penulis menggunakan optimasi dan kendala untuk membatasi sejumlah pilihan yang harus dipertimbangkan pada suatu tahap.

2.8.1 Konsep Dasar Dalam Pemrograman Dinamik

a. Dekomposisi

Persoalan Pemrograman Dinamik dapat dipecah menjadi sub persoalan atau tahapan yang lebih kecil dan berurutan. Setiap tahap juga sebagai titik keputusan. Setiap keputusan yang dibuat pada suatu tahap akan mempengaruhi keputusan-keputusan pada tahap berikutnya.

(15)

b. Status

Status adalah kondisi awal (Sn) dan kondisi akhir (Sn-1) pada setiap tahap tersebut keputusan dibuat (Dn). Status akhir pada setiap tahap tergantung kepada status awal dan keputusan yang dibuat pada tahap yang bersangkutan. Status akhir pada suatu tahap merupakan input bagi tahap berikutnya.

c. Variabel Keputusan dan Hasil

Keputusan yang dibuat pada setiap tahap (Dn) merupakan keputusan yang berorientasi kepada return yang diakibatkannya (Rn/n), tingkat maksimal atau minimal.

d. Fungsi Transisi

Fungsi transisi menjelaskan secara pasti tahap-tahap yang saling berhubungan. Fungsi ini berbentuk fungsi hubungan antar status pada setiap tahap yang berurutan. Fungsi transisi secara umum berbentuk: Sn-1 = Sn – Dn, di mana Sn-1 = status pada tahap n-1 atau status akhir pada tahap-n. Sn adalah status awal pada tahap-n.

Komponen pada setiap tahap dapat digambarkan sebagai berikut:

(16)

e. Optimasi Tahap

Optimasi tahap dalam Pemrograman Dinamik adalah menemukan keputusan optimal pada setiap tahap dari berbagai kemungkinan nilai status inputnya.

Fungsi umum dari keputusan optimal adalah:

Fn(Sn, Dn) = return pada tahap-n dari nilai status input Sn, dan keputusan Dn. Fn*(Sn) = return optimal pada tahap-n dari nilai input status Sn.

f. Fungsi Rekursif

Fungsi rekursif biasanya digunakan berbagai program komputer, untuk setiap nilai sebuah variabel pada fungsi itu merupakan nilai kumulatif dari nilai variael tersebut pada tahap sebelumnya. Pada Pemrograman Dinamik, fungsi umum dituliskan sebagai: fn(Sn, Dn) = Rn + fn-1*(S-1, Dn-1)

Prosedur optimasi diawali dari tahap awal menuju tahap akhir (forward). Karakteristik program dinamis adalah:

a. Persoalan dapat dipisahkan menjadi beberapa tahap (stages), untuk setiap tahap membutuhkan keputusan kebijakan yang baku dan saling berhubungan.

Gambar 2.7 Tahapan Baku

b. Setiap tahap memiliki sejumlah status (state). Secara umum, sekumpulan status ini merupakan berbagai kemungkinan yang timbul dari sistem persoalannya. Status ini memberikan informasi yang dibutuhkan setiap keputusan dan dampaknya pada tahap berikutnya. Jumlah status pada setiap tahap bisa definitif atau infinitif.

(17)

c. Setiap keputusan kebijakan yang dibuat pada suatu tahap, status pada tahap tersebut ditransformasi ke dalam status yang berkaitan pada tahap berikutnya. Hubungan antar status pada tahap yang berurutan bisa bersifat deterministik atau probabilistik.

Pada persoalan dengan n-tahap, ada 2 (dua) input, yaitu: (1) state pada tahap-n (Sn) dan variabel keputusan (Xn). Sedangkan outputnya adalah: (1) return atau akibat dari setiap Xn yang dipilih, fn(s,Xn) dan (2) status baru yang menjadi input pada tahap berikutnya (Sn-1). Hubungan antara Xn dan fn(s,Xn) ditemukan oleh return function. Sedang hubungan antar status pada tahap tertentu ditentukan oleh transition function

Gambar 2.8. Return dan Transition Function

d. Solusi pada Pemrograman Dinamik berprinsip kepada optimalitas yang dikembangkan oleh Bellman.

e. Keputusan pada tahap berikutnya bersifat independen terhadap keputusan sebelumnya. Untuk menyelesaikan persoalan Pemrograman Dinamik, dimulai dari solusi awal pada suatu tahap dan secara berurutan menuju tahap berikutnya dengan proses induksi mundur (backward induction process).

(18)

f. Solusi optimal yang dihasilkan pada setiap tahap berprinsip kepada hubungan dalam bentuk fungsi rekursif (recursion relationship). Secara umum bentuk fungsi rekursif adalah:

Fn*(Sn) = max/min {fn(Sn, Xn)}

Untuk setiap fn*(Sn) = hasil optimal dari keputusan pada tahap-n.

2.8.2 Analisa Algoritma Pemrograman Dinamik

Pemrograman Dinamik 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 Pemrograman Dinamik terdapat sejumlah berhingga pilihan yang mungkin. Solusi pada setiap tahap dibangun dari hasil solusi tahap sebelumnya, penulis menggunakan persyaratan optimasi dan kendala untuk membatasi sejumlah pilihan yang harus dipertimbangkan pada suatu tahap.

Pada Pemrograman Dinamik, rangkaian keputusan yang optimal dibuat dengan menggunakan Prinsip Optimalitas. Prinsip Optimalitas: jika solusi total optimal, maka bagian solusi sampai tahap ke-k juga optimal. Prinsip optimalitas berarti bahwa jika penulis bekerja dari tahap k ke tahap k + 1, penulis dapat menggunakan hasil optimal dari tahap k tanpa harus kembali ke tahap awal, ongkos pada tahap k+1 = (ongkos yang dihasilakan pada tahap k) + (ongkos dari tahap k ke tahap k +1). Dengan prinsip optimalitas ini dijamin bahwa pengembalian keputusan pada suatu tahap adalah keputusan yang benar untuk tahap-tahap selanjutnya.

(19)

2.8.3 Dua Pendekatan Algoritma Pemrograman Dinamik

Dua pendekatan yang digunakan dalam Pemrograman Dinamik yaitu: maju (forward atau up-down) dan mundur (backward atau bottom up). Misalkan x1, x2, x3, …, xn menyatakan

variabel keputusan yang harus dibuat masing-masing untuk tahap 1, 2, …, n, yaitu:

1. Pemrograman Dinamik maju. Pemrograman Dinamik bergerak mulai dari tahap 1,

terus maju ke tahap 2, 3, dan seterusnya sampai tahap n, urutan variabel keputusan adalah x1, x2, x3, …, xn. Penulis disini menggunakan Program Dinamik Maju.

2. Pemrograman Dinamik mundur. Pemrograman Dinamik bergerak mulai dari tahap n, terus mundur ke tahap n-1, n-2, dan seterusnya sampai tahap 1, urutan variabel keputusan adalah xn, xn-1, xn-2, …, x1.

Langkah-langkah Pengembangan Algoritma Pemrograman Dinamik: 1. Karakteristik struktur solusi optimal.

2. Definisikan secara rekursif nilai solusi optimal. 3. Hitung nilai solusi optimal secara maju atau mundur. 4. Konstruksi solusi optimal.

2.8.4 Algoritma Pemrograman Dinamik

Algoritma Pemrograman Dinamik adalah sebagai berikut:

Langkah 0 (inisialisasi):

Inisialisasi si 0 dan dimai untuk i1,2,...,n

Langkah 1:

a. Isi sa dengan 1 (karena titik a adalah titik asal lintasan terpendek, jadi sudah pasti terpilih).

(20)

Langkah 2, 3, … , n-1:

a. Cari j sedemikian sehingga sj 0 dan dj min

d1,d2,...,dn

b. Isi sj dengan 1

c. Perbarui di, untuk i1,2,3,....,n dengan: di(baru)min

di(lama),djmji

2.9 Visual Basic 6.0

Visual Basic adalah bahasa pemrograman yang digunakan untuk membuat aplikasi Windows yang berbasis grafis (GUI-Graphical User Interface). Visual Basic merupakan even–driven programming (pemrograman terkendali kejadian), artinya program menunggu sampai adanya respon dari pemakai berupa even atau kejadian tertentu (tombol diklik, menu pilih, dan lain-lain). Ketika even terdeteksi, kode yang berhubungan dengan event (prosedur event) akan dijalankan.

Berikut ini adalah poin-poin terpenting dalam sejarah perkembangan Visual Basic sebagai berikut:

a. Visual Basic pertama kali diperkenalkan tahun 1991 yaitu program Visual Basic untuk DOS dan untuk Windows.

b. Visual Basic 3.0 dirilis tahun 1993.

c. Visual Basic 4.0 dirilis pada akhir 1995 (tambahan dukungan untuk aplikasi 32 bit. d. Visual Basic 5.0 dirilis pada tahun 1997.

e. Visual Basic terbaru adalah Versi 6.0 yang dirilis pada akhir tahun 1998.

Pada umumnya Microsoft selaku pembuat Visual Basic membuat 3 (tiga) edisi Visual Basic, yaitu:

a. Standard Edition merupakan produk pasar.

b. Profesional Edition yang berisi tambahan Microsoft Jet Data Acces Esngine (Database) dan pembuatan server OLE automation.

(21)

c. Enterprise Edition adalah edisi Client-Server.

Visual Basic selain disebut sebagai sebuah bahasa pemrograman, juga sering disebut sebagai sarana untuk menghasilkan program-program aplikasi berbasis Windows.

Beberapa manfaat dari Visual Basic adalah:

1. Mudah dalam membuat program aplikasi berbasis Windows.

2. Memiliki compiler handal yang dapat menguji program (debugging) serta dapat menghasilkan program akhir berakhiran EXE yang bersifat executable atau dapat langsung dijalankan.

3. Memiliki beberapa tambahan instruksi atau perintah Wizard. Wizard adalah sarana yang mempermudah di dalam pembuatan aplikasi dengan mengotomatisasi tugas-tugas tertentu.

4. Sarana akses data yang lebih cepat dan handal untuk membuat aplikasi database yang berkemampuan tinggi.

Gambar

Gambar  2.1. Graph  5 titik dan 6 sisi
Gambar 2.3. Digraph G
Tabel 2.1  Biaya Pemasangan Jaringan Listrik
Gambar 2.4.  Graph Berlabel Jaringan Listrik 8 Kota
+5

Referensi

Dokumen terkait

Spiritual entrepreneurship dimaknai sebagai suatu kegiatan yang bertujuan untuk menciptakan sebuah organisasi dengan cara pandang yang universal yang dapat

Tujuan pokok dari penelitian ini adalah untuk mengetahui apakah dalam pembangunan jalan di Nagari Pasir Talang Selatan Kabupaten Solok Selatan tersebut menerapkan

Dalam pelaksanaannya, siswa akan terlibat secara intelektual dan emosional dalam pembelajaran, siswa akan terdorong untuk mengonstruksi sendiri konsep yang sedang

Dalam konsep cetak biru layanan teknologi informasi dan komunikasi Universitas 17 Agustus 1945 Samarinda ini, diusulkan suatu rancangan struktur organisasi

Isolat bakteri penambat N non-simbiotik pada sampel tanah HTA1 memperlihatkan bentuk, tepian dan elevasi yang berbeda-beda dengan warna koloni yang didominasi oleh

: Mahasiswa mampu menerapkan konsep yajna dan bhakti, memahami tentang kedudukan Pandita dan Pinandita. Mampu mengamalkan ninai filosofis dari masing-masing hari

Dari kesimpulan diatas peneliti dapat memberikan sara atas penelitian yang telah dilakukan tentang Analisis Resepsi Masyarakat Semarang Terhadap Isu Politik

Pada bab ini terdapat landasan teori berisi uraian teori-teori yang akan digunakan dan berhubungan dengan permasalahan dari tugas akhir ini meliputi penjabaran metode