• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content

Loading…

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

Like this document? Why not share!

13 graph2

on

  • 724 views

 

Statistics

Views

Total Views
724
Views on SlideShare
717
Embed Views
7

Actions

Likes
0
Downloads
25
Comments
0

1 Embed 7

http://wandiparlente.blogspot.com 7

Accessibility

Categories

Upload Details

Uploaded via

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    13 graph2 13 graph2 Document Transcript

    • BAB 2 LANDASAN TEORI2.1. Konsep Dasar GraphSebelum sampai pada definisi masalah lintasan terpendek, terlebih dahulu pada bagian iniakan diuraikan mengenai konsep-konsep dasar dari model graph dan representasinyadalam memodelkan masalah lintasan terpendek.Definisi 2.1. Graph didefinisikan sebagai pasangan himpunan (V, E), dengan V adalahhimpunan titik (vertex) dan E adalah himpunan sisi (edge) (Chacra et al, 1979, hal:5). Secara umum graph dapat digambarkan dengan suatu diagram dengan titikditunjukkan sebagai titik yang dinotasikan dengan vi, i = 1, 2, …, n dan sisi digambarkandengan 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 graphyang mempunyai lima titik dan enam sisi. Universitas Sumatera Utara
    • Gambar 2.1. Graph 5 titik dan 6 sisiDefinisi 2.2. Loop adalah sisi yang berawal dan berakhir pada titik yang sama, sedangkansisi paralel (edge paralel) adalah dua sisi atau lebih berbeda yang menghubungkan duabuah 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 adalahdua 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 graphsederhana yang dapat dilihat pada Gambar 2.1.Definisi 2.4. Suatu edge ek dalam suatu graph G dengan titik-titik ujung vi dan vj disebutsaling incident dengan vi dan vj, sedangkan vi dan vj ini disebut dua buah titik yang saling Universitas Sumatera Utara
    • adjacent. Jika kedua edge tersebut incident pada suatu titik persekutuan, maka dua buahedge ek dan em disebut saling adjacent. Pada Gambar 2.2 dapat dilihat bahwa e8, e7, e9 adalah tiga buah sisi yang incidentdengan v6, sedangkan e5 dan e7 adalah adjacent.Definisi 2.5. Degree dari sbuah titik vi dalam graph G adalah jumlah sisi yang incidentdengan vi. Dengan loop dihitung dua kali. Degree dari sebuah titik vi biasanya dinotasikandengan 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 darititik dan sisi secara bergantian yang dimulai dan diakhiri dengan titik sehingga setiap sisiincident 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 darisatu 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 sisidalam 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 vjdisebut titik akhir ek. Arah sisi adalah dari vi ke vj. Universitas Sumatera Utara
    • Berikut ini Gambar 2.3. Gambar 2.3. Digraph G2.2. Graph BerlabelHubungan antar titik dalam graph perlu diperjelas. Hubungan tidak cukup hanyamenunjukkan titik mana yang berhubungan langsung, tetapi juga seberapa kuat hubunganitu. Titik graph menyatakan kota-kota yang ada di daerah tersebut. Sisi-sisi dalam graphmenyatakan jalan yang menghubungkan kota-kota tersebut. Informasi tentang peta daerah perlu diperjelas dengan mencantumkan jarak antara2 kota yang berhubungan. Informasi tentang jarak dibutuhkan karena dalam graph, letaktitik dan panjang sisinya tidak menyatakan jarak 2 kota yang sebenarnya. Jadi setiap garisdalam graph berhubungan dengan suatu label yang menyatakan bobot garis tersebut.Definisi 2.8. Graph Berlabel (labelled graph) adalah suatu graph tanpa sisi paralel dimana setiap sisinya berhubungan dengan suatu bilangan riil tak negatif yang menyatakannilai sisi (w(e)) tersebut. Jumlah nilai semua sisi disebut Total Nilai. Universitas Sumatera Utara
    • Matriks yang bersesuaian dengan graph berlabel G adalah adjacency. Jikamatriks 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 jaringanlistrik. Biaya pemasangan jaringan listrik yang mungkin dibuat antar 2 kota sebagaiberikut: 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 18a. 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
    • 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. 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 0Keterangan:  = 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 dikatakanadjacent. Universitas Sumatera Utara
    • 2.3. Lintasan MinimumSalah satu aplikasi graph berarah berlabel yang sering dipakai adalah mencari lintasanterpendek diantara 2 titik. Apabila masalahnya adalah mencari lintasan terpendek tetapdapat digunakan dengan cara mengganti nilai sisi.Definisi 2.9. Misalkan G adalah suatu graph, untuk v dan w adalah titik dalam G. suatuWalk dari v ke w adalah barisan titik dan sisi secara berselang-seling, diawali dari titik vdan diakhiri pada titik w. Walk dengan panjang n dari v ke w ditulis : v0 e1 v1 e2 v2 … vn-2en 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 semuasisinya berbeda. Lintasan dari v ke w dituliskan sebagai v = v0 e1 v1 e2 v2 … vn-1 en vn = wdengan 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 ei1 , ei2 ,......., ein  sedemikian rupasehingga titik terminal ei j berimpit dengan titik awal ei( j 1) untuk 1  j  k  1 .Pada Gambar 2.2 terdapat:a. Pada titik v1  e1  v 2  e3  v3  e4  v3  e5  v 4 semua sisi berbeda ( e1 , e3 , e 4 , 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 = v4 , Barisan ini merupakan lintasan dari v1 v4 dengan panjang 4.b. Pada titik v1  e1  v 2  e3  v3  e5  v 4  e5  v3  e6  v5 ada sisi yang muncul lebih dari sekali, yaitu e5 (muncul 2 kali) berarti barisan tersebut merupakan walk dari v1 v5 dengan panjang 5. Universitas Sumatera Utara
    • 2.4. Lintasan Terpendek (Shortest Path)Setiap lintasan dalam digraph mempunyai nilai yang dihubungkan dengan nilai pathtersebut, yang nilainya adalah jumlah dari nilai sisi lintasan tersebut. Dari ukuran dasarini dapat dirumuskan masalah seperti mencari lintasan terpendek antara dua titik danmeminimumkan biaya. Banyak bidang penerapan mensyaratkan untuk menentukan lintasan terpendekberarah dari asal ke tujuan di dalam suatu distribusi aliran berarah. Algoritma yangdiberikan dapat dimodifikasi dengan mudah untuk menghadapi lintasan berarah padasetiap iterasinya. Suatu versi yang lebih umum dari masalah lintasan terpendek adalah menentukanlintasan terpendek dari sembarang titik menuju ke setiap titik lainnya. Pilihan lainnyaadalah membuang kendala tak negatif bagi ”jarak”. Suatu kendala lain dapat jugadiberlakukan dalam suatu masalah lintasan terpendek.Definisi 2.11. Lintasan terpendek antara dua titik dari s ke t dalam jaringan adalahlintasan graph berarah sederhana dari s ke t dengan syarat tidak ada lintasan lain yangmemiliki nilai terendah.Contoh. 2 x1 1 2 2 3 x2 5 x5 x3 x4 x7 x8 3 1 1 3 4 5 1 x6 Gambar 2.5. Lintasan Terpendek (Shortest path) (garis tebal) Universitas Sumatera Utara
    • 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 kapasitastertentu (contohnya :air) dapat dialirkan melalui saluran. Sedangkan titikmerepresentasikan persimpangan saluran. air mengalir melalui titik pada titik yangdilalui, 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 suatukasus khusus dari Pemrograman Linier untuk semua (atau beberapa) variabel dibatasisebagai bilangan cacah tak negatif. Untuk semua variabel dibatasi sebagai bilangan cacah,persoalannya disebut persoalan program bilangan cacah murni, dan kalau beberapavariabel tertentu dibatasi sebagai bilangan cacah campuran. Suatu bentuk khusus dariprogram bilangan cacah ialah suatu kasus di mana variabel dibatasi harus berharga nolatau satu. Kalau variabel dibatasi seperti ini, maka persoalannya disebut persoalanPemrograman (0/1). Perumusan Pemrograman Linier dapat membantu prosedur penyelesaian lebihefisien. Berikut ini adalah bentuk umum Pemrograman Linier: Minimumkan c1 x1  c 2 x 2  ...  c n x n …………………….......................(1) dengan kendala a11 x1  a12 x 2  ...  a1n x n  b1 …………………………………………...(2) a 21 x1  a 22 x 2  ...  a 2 n x n  b2 . . a n 1 x1  a n 2 x 2  ...  a nn x n  bn x1 , x 2 ,..., xn  0 …….…………………………………………………...(3) Universitas Sumatera Utara
    • Pada Pemrograman Linier ini, x1 , x 2 ,...., x n mewakili keputusan variabel yangtidak diketahui; c1 , c 2 ,...., c n adalah biaya koefisien; b1 , b2 ,...., bn adalah nilai di sampingkanan; dan aij , i  1 sampai m dan j  1 sampai n , dinamakan koefisien teknologi. Pernyataan (1) dinamakan fungsi objektif; (2) dinamakan kendala; dan (3) adalahkendala tidak negatif. Beberapa penyelesaian memenuhi semua kendala, dinamakanfeasible solution. Pada perumusan ini, kendala ditulis dalam bentuk persamaan. Umumnya, kendalaPemrograman Linier mempunyai relasi  atau  tetapi selalu dapat diubah dalampersamaan dengan penjumlahan slack variabel. Fungsi objektif (1) juga dapatdiekpresikan sebagai maksimum sebagai pengganti minimum.Penulisan matematika tersebut, dapat dirumuskan menjadi: n Minimumkan c j 1 j xj dengan kendala n a j 1 ij x j  bi , i  1,2,...., n x j  0, j  1,2,...., n2.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, suatunilai solusi yang kontinu. Dalam situasi keputusan tertentu, asumsi ini tidak realistik dantidak dapat diterima. Universitas Sumatera Utara
    • Definisi 2.12. Pemrograman Bilangan Bulat adalah suatu Pemrograman Linier dengantambahan 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 membatasivariabel model bernilai nol atau satu. Dalam kasus demikian, persoalan lintasan hanyamemiliki dua pilihan yaitu masuk atau keluar dari jaringan. Untuk variabel ini bernilaisatu, persoalan masuk, untuk variabel bernilai nol, persoalan keluar. Dalam masalah Pemrograman Bilangan Bulat, untuk setiap persoalan yangmengharapkan semua variabel basis bernilai integer (bulat positif atau nol), dinamakanpure(all) integer programming. Untuk setiap persoalan yang hanya mengharapkanvariabel-variabel tertentu bernilai integer, dinamakan mixed integer programming. Untuksetiap persoalan yang hanya mengharapkan nilai nol atau satu untuk variabelnya,dinamakan zero one integer programming. Walaupun persoalan umum Pemrograman Linier 0/1 dapat diselesaikan denganCutting Plane Algorithm atau Branch-and-Bound. Balas mengembangkan suatu algoritmaenumerative yang efisien dan menarik untuk meyelesaikan persoalan ini. Sangat singkatsebagai dasar Integer NonLinear Programming. Fungsi digunakan untukmenyamaratakan kesalahan metode untuk menyelesaikan persoalan All IntegerProgramming dan Mixed-Integer NonLinear Programming. Penyelesaian Pemrograman Bilangan Bulat seperti Pemrograman Linier, denganrumus berikut ini: Universitas Sumatera Utara
    • m m Minimumkan  c i 1 j 1 ij xij m 1m untuk i 1  Kendala  xij   xki  0 untuk i 1 j 1 k 1 1 untuk 1 m  xij  0 i, j  1,2,..., m2.7 KnapsackAlgoritma Pemrograman 0/1 merupakan salah satu tipe persoalan Knapsack dengankeadaan tertentu terjadi, masing-masing keadaan mempunyai sebuah nilai yangdihubungkan dengan besarannya. Secara nyata bahwa solusi optimal dari persoalanKnapsack akan menunjukkan kemungkinan yang terbaik. Pada masalah ini akan terdorong untuk menyelesaikan suatu persoalan dalammenentukan lintasan terpendek pada suatu graph dengan kendala biaya dan waktu ataujarak sehingga menghasilkan solusi yang optimal. Pendekatan sederhana dapatdimasukkan ke dalam program komputer untuk memeriksa semua harga 0/1 yangmungkin, dipilih yang terbaik yang memenuhi kendala.Contoh. Persoalan Knapsack Seorang pendaki gunung ingin membawa semua peralatan yang ia perlukan dalamsatu kantong (sack) saja, Misalkan ada sejumlah n peralatan yang diperlukan, tetapi beratseluruhnya tidak boleh melebihi b kg. Misalkan jenis peralatan ialah x j dan, 1 untuk alat ke  j ikut  xj   0 untuk alat ke  j tidak ikut  Universitas Sumatera Utara
    • Berdasarkan keterangan tersebut, persoalan dapat dirumuskan sebagai berikut:Maksimumkan f c 1 x1  c 2 x 2  .....  c n x ndengan kendala a1 x1  a 2 x 2  ....  a n x n  b x1 x 2 ,.............x n  0 atau 1Persoalan ini merupakan persoalan Knapsack sebagai persoalan (0/1).Definisi 2.13. 0/1 atau biner, persoalan Knapsack yaitu masukkan dari n item dan suatuKnapsack,Pilih subset dari item sebagai: Maksimumkan z   pjxj j 1 n dengan kendala w x j 1 j j  c, x j = 0 atau 1, jN {1,......, n} Untuk 1 untuk objek j memenuhi  xj   0 Lainnya Keterangan: p j = keuntungan dari item j, w j = bobot dari item j, c = kapasitas dari Knapsack. Universitas Sumatera Utara
    • 2.8 Pemrograman Dinamik (Dynamic Programming)Pemrograman Dinamik adalah teknik manajemen sain yang diaplikasikan kepadapersoalan yang melibatkan keputusan berurutan yang saling berkaitan. Program inidikembangkan oleh Richard Bellman dan G. B Dantzig pada tahun 1940–1950. Sebagaisebuah konsep, Pemrograman Dinamik lebih luwes dibanding program optimasi lainnya.Aplikasi Pemrograman Dinamik lebih luwes dibanding program–program optimasilainnya. Aplikasi Pemrograman Dinamik sudah terbukti baik pada pengelolaanpersediaan, jaringan, penjadwalan kerja utnuk karyawan, pengendalian produksi,perencanaan penjualan dan bidang lainnya. Pemrograman Dinamik adalah metode pemecahan masalah dengan caramenguraikan solusi menjadi sekumpulan langkah (step) atau tahapan (stage) sedemikiansehingga solusi dari persoalan dapat dipandang dari serangkaian keputusan yang salingberkaitan. Pada penyelesaian persoalan dengan metode Pemrograman Dinamik ini terdapatsejumlah berhingga pilihan yang mungkin, solusi pada setiap tahap dibangun dari hasilsolusi tahap sebelumnya, penulis menggunakan optimasi dan kendala untuk membatasisejumlah pilihan yang harus dipertimbangkan pada suatu tahap.2.8.1 Konsep Dasar Dalam Pemrograman Dinamika. 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
    • 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
    • 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
    • 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 Functiond. 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
    • 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 DinamikPemrograman Dinamik adalah metode pemecahan masalah dengan cara menguraikansolusi menjadi sekumpulan langkah (step) atau tahapan (stage) sedemikian sehinggasolusi dari persoalan dapat dipandang dari serangkaian keputusan yang saling berkaitan. Pada penyelesaian persoalan dengan Pemrograman Dinamik terdapat sejumlahberhingga pilihan yang mungkin. Solusi pada setiap tahap dibangun dari hasil solusi tahapsebelumnya, penulis menggunakan persyaratan optimasi dan kendala untuk membatasisejumlah pilihan yang harus dipertimbangkan pada suatu tahap. Pada Pemrograman Dinamik, rangkaian keputusan yang optimal dibuat denganmenggunakan Prinsip Optimalitas. Prinsip Optimalitas: jika solusi total optimal, makabagian solusi sampai tahap ke-k juga optimal. Prinsip optimalitas berarti bahwa jikapenulis bekerja dari tahap k ke tahap k + 1, penulis dapat menggunakan hasil optimal daritahap k tanpa harus kembali ke tahap awal, ongkos pada tahap k+1 = (ongkos yangdihasilakan pada tahap k) + (ongkos dari tahap k ke tahap k +1). Dengan prinsipoptimalitas ini dijamin bahwa pengembalian keputusan pada suatu tahap adalahkeputusan yang benar untuk tahap-tahap selanjutnya. Universitas Sumatera Utara
    • 2.8.3 Dua Pendekatan Algoritma Pemrograman DinamikDua pendekatan yang digunakan dalam Pemrograman Dinamik yaitu: maju (forward atauup-down) dan mundur (backward atau bottom up). Misalkan x1, x2, x3, …, xn menyatakanvariabel 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 DinamikAlgoritma Pemrograman Dinamik adalah sebagai berikut:Langkah 0 (inisialisasi): Inisialisasi s i  0 dan d i  mai untuk i  1,2,....., nLangkah 1: a. Isi s a dengan 1 (karena titik a adalah titik asal lintasan terpendek, jadi sudah pasti terpilih). b. Isi d a dengan  (tidak ada loop dari titik a ke a) Universitas Sumatera Utara
    • Langkah 2, 3, … , n-1: a. Cari j sedemikian sehingga s j  0 dan d j  mind1 , d 2 ,....., d n  b. Isi s j dengan 1 c. Perbarui d i , untuk i  1,2,3,...., n dengan: d i (baru )  mind i (lama), d j  m ji 2.9 Visual Basic 6.0Visual Basic adalah bahasa pemrograman yang digunakan untuk membuat aplikasiWindows yang berbasis grafis (GUI-Graphical User Interface). Visual Basic merupakaneven–driven programming (pemrograman terkendali kejadian), artinya programmenunggu sampai adanya respon dari pemakai berupa even atau kejadian tertentu(tombol diklik, menu pilih, dan lain-lain). Ketika even terdeteksi, kode yangberhubungan dengan event (prosedur event) akan dijalankan. Berikut ini adalah poin-poin terpenting dalam sejarah perkembangan Visual Basicsebagai 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) edisiVisual 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
    • c. Enterprise Edition adalah edisi Client-Server. Visual Basic selain disebut sebagai sebuah bahasa pemrograman, juga seringdisebut 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