Dokumen tersebut membahas konsep dasar graph dan representasinya dalam memodelkan masalah lintasan terpendek. Definisi berbagai komponen graph seperti titik, sisi, loop, sisi paralel, degree, walk dan lintasan. Juga dibahas graph berlabel dan aplikasinya untuk mewakili biaya antar kota. Algoritma pemrograman linier digunakan untuk menentukan lintasan terpendek.
Pada Presentasi kali ini,akan dijelaskan tentang Graft, Metode, Definisi, serta banyak hal lainnya.
Presentasi ini berguna untuk pembelajaran bagi mahasiswa/siswa yang mempelajari mata kuliah/pelajaran struktur data
Pada Presentasi kali ini,akan dijelaskan tentang Graft, Metode, Definisi, serta banyak hal lainnya.
Presentasi ini berguna untuk pembelajaran bagi mahasiswa/siswa yang mempelajari mata kuliah/pelajaran struktur data
Solusi Persamaan Laplace Dua Dimensi Untuk Metode NumerikAffandi Arrizandy
Persamaan laplace umumnya digunakan dalam menganalisis persebaran panas maupun potensial listrik dalam suatu bahan, dimana bentuk persamaan tersebut dapat diubah kedalam bentuk numeriknya melalui pendekatan numerik guna mempermudah perhitungan. Selain itu untuk mempercepat iterasi juga dapat digunakan metode SOR.
Graf dengan panjang, dalam konteks teori graf, adalah jenis graf yang memiliki atribut atau bobot yang menunjukkan panjang atau jarak antara pasangan simpul atau node. Attribut ini biasanya digunakan untuk mewakili hubungan antar simpul dalam suatu jaringan, seperti jarak antara kota-kota dalam peta atau biaya transportasi antar titik dalam suatu infrastruktur.Graf dengan panjang memiliki aplikasi yang luas dalam berbagai bidang, termasuk perencanaan rute, logistik, telekomunikasi, dan optimisasi. Mereka memungkinkan perhitungan yang lebih akurat tentang bagaimana mencari jalur terpendek, biaya terendah, atau hubungan terkuat antara simpul-simpul dalam jaringan. Contoh graf dengan panjang termasuk graf terarah dengan panjang terpendek (Dijkstra), graf berbobot, dan graf jaringan telekomunikasi.
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
yang mempunyai lima titik dan enam sisi.
Universitas Sumatera Utara
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
saling incident dengan vi dan vj, sedangkan vi dan vj ini disebut dua buah titik yang saling
Universitas Sumatera Utara
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
disebut titik akhir ek. Arah sisi adalah dari vi ke vj.
Universitas Sumatera Utara
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.
Universitas Sumatera Utara
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.
Universitas Sumatera Utara
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
Universitas Sumatera Utara
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 niii eee ,.......,, 21
sedemikian rupa
sehingga titik terminal jie berimpit dengan titik awal )1( jie untuk 11 kj .
Pada Gambar 2.2 terdapat:
a. Pada titik 453433211 vevevevev semua sisi berbeda (
,,, 431 eee dan 5e ) masing-masing muncul sekali. Ada titik yang berulang ( 3v muncul
2 kali). Titik awal dan titik akhir tidak sama dengan titik awal = 1v dan titik akhir =
4v , Barisan ini merupakan lintasan dari 1v 4v dengan panjang 4.
b. Pada titik 56354533211 vevevevevev ada sisi yang
muncul lebih dari sekali, yaitu 5e (muncul 2 kali) berarti barisan tersebut merupakan
walk dari 1v 5v dengan panjang 5.
Universitas Sumatera Utara
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
Universitas Sumatera Utara
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 nn xcxcxc ...2211 …………………….......................(1)
dengan kendala
11212111 ... bxaxaxa nn …………………………………………...(2)
22222121 ... bxaxaxa nn
.
.
nnnnnn bxaxaxa ...2211
0,...,, 21 nxxx …….…………………………………………………...(3)
Universitas Sumatera Utara
10. Pada Pemrograman Linier ini, nxxx ,....,, 21 mewakili keputusan variabel yang
tidak diketahui; nccc ,....,, 21 adalah biaya koefisien; nbbb ,....,, 21 adalah nilai di samping
kanan; dan ija , 1i sampai m dan 1j 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
jj xc
1
dengan kendala
n
j
ijij bxa
1
, ni ,....,2,1
,0jx nj ,....,2,1
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.
Universitas Sumatera Utara
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:
Universitas Sumatera Utara
12. Minimumkan
m
j
ijij
m
i
xc
11
Kendala
m
j
m
k
kiij xx
1 1
1
0
1
untuk
untuk
untuk
m
i
i
1
1
1
0ijx mji ,...,2,1,
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 jx dan,
0
1
jx
untuk
untuk
alat
alat
jke
jke
ikut
tidak ikut
Universitas Sumatera Utara
13. Berdasarkan keterangan tersebut, persoalan dapat dirumuskan sebagai berikut:
Maksimumkan nn xcxcxcf .....2211
dengan kendala
bxaxaxa nn ....2211
0....,.........21 nxxx 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
1j
jj xpz
dengan kendala
n
j
jj cxw
1
,
jx = 0 atau 1, },......,1{ nNj
Untuk
0
1
jx
Lainnya
untuk objek j
Keterangan:
jp = keuntungan dari item j,
jw = bobot dari item j,
c = kapasitas dari Knapsack.
memenuhi
Universitas Sumatera Utara
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.
Universitas Sumatera Utara
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:
Gambar 2.6 Tahapan Fungsi Transisi
Universitas Sumatera Utara
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.
Universitas Sumatera Utara
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).
Universitas Sumatera Utara
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.
Universitas Sumatera Utara
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 0is dan aii md untuk ni ,.....,2,1
Langkah 1:
a. Isi as dengan 1 (karena titik a adalah titik asal lintasan terpendek, jadi sudah
pasti terpilih).
b. Isi ad dengan (tidak ada loop dari titik a ke a)
Universitas Sumatera Utara
20. Langkah 2, 3, … , n-1:
a. Cari j sedemikian sehingga 0js dan nj dddd ,.....,,min 21
b. Isi js dengan 1
c. Perbarui id , untuk ni ,....,3,2,1 dengan: jijii mdlamadbarud ),(min)(
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.
Universitas Sumatera Utara
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.
Universitas Sumatera Utara