SlideShare a Scribd company logo
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
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
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
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
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
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
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
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
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
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 , 1i sampai m dan 1j 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
,0jx 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
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
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
0ijx 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
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
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
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 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
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
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 0is 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
Langkah 2, 3, … , n-1:
a. Cari j sedemikian sehingga 0js 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
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

More Related Content

What's hot

Graf 1
Graf 1Graf 1
Teori graf-complete
Teori graf-completeTeori graf-complete
Teori graf-complete
endah kurnia
 
Cara menggambar graf sederhana matematika diskrit
Cara menggambar graf sederhana matematika diskritCara menggambar graf sederhana matematika diskrit
Cara menggambar graf sederhana matematika diskritOka Ambalie
 
Discrete Mathematics & Its Applications (Graphs)
Discrete Mathematics & Its Applications (Graphs)Discrete Mathematics & Its Applications (Graphs)
Discrete Mathematics & Its Applications (Graphs)
Fahrul Usman
 
Teori graph: Eulerian dan Hamiltonian Graph
Teori graph: Eulerian dan Hamiltonian GraphTeori graph: Eulerian dan Hamiltonian Graph
Teori graph: Eulerian dan Hamiltonian Graph
Gadjah Mada University
 
Teori graf-complete
Teori graf-completeTeori graf-complete
Teori graf-complete
Marwan Musa
 
Gambar81 contoh-graf
Gambar81 contoh-grafGambar81 contoh-graf
Gambar81 contoh-graf
Romdoni4
 
Kel 1 teori graf
Kel 1 teori grafKel 1 teori graf
Kel 1 teori graf
nurhayati atik
 
Kel 1 teori graf
Kel 1 teori grafKel 1 teori graf
Kel 1 teori graf
nur azizah
 
Teori graph-1
Teori graph-1Teori graph-1
Teori graph-1
Al Otomeza
 
Makalah teori graf revisi2
Makalah teori graf revisi2Makalah teori graf revisi2
Makalah teori graf revisi2Ratnasari Dwi A
 
Matematika Diskrit - 09 graf - 07
Matematika Diskrit - 09 graf - 07Matematika Diskrit - 09 graf - 07
Matematika Diskrit - 09 graf - 07
KuliahKita
 
Penggunaan Teori Graf pada Pengaturan Lampu Lalu Lintas
Penggunaan Teori Graf pada Pengaturan Lampu Lalu LintasPenggunaan Teori Graf pada Pengaturan Lampu Lalu Lintas
Penggunaan Teori Graf pada Pengaturan Lampu Lalu Lintas
Nida Shafiyanti
 
Latihan Graph
Latihan GraphLatihan Graph
Latihan Graph
Fajar Baskoro
 
Graf khusus
Graf khususGraf khusus
Graf khusus
Kartika Apriani
 
06 vektor-di-r2-dan-r3
06 vektor-di-r2-dan-r306 vektor-di-r2-dan-r3
06 vektor-di-r2-dan-r3
Citra Adelina
 

What's hot (20)

Graf 1
Graf 1Graf 1
Graf 1
 
Teori graf-complete
Teori graf-completeTeori graf-complete
Teori graf-complete
 
Cara menggambar graf sederhana matematika diskrit
Cara menggambar graf sederhana matematika diskritCara menggambar graf sederhana matematika diskrit
Cara menggambar graf sederhana matematika diskrit
 
Discrete Mathematics & Its Applications (Graphs)
Discrete Mathematics & Its Applications (Graphs)Discrete Mathematics & Its Applications (Graphs)
Discrete Mathematics & Its Applications (Graphs)
 
Babiv Graf
Babiv GrafBabiv Graf
Babiv Graf
 
Teori graph: Eulerian dan Hamiltonian Graph
Teori graph: Eulerian dan Hamiltonian GraphTeori graph: Eulerian dan Hamiltonian Graph
Teori graph: Eulerian dan Hamiltonian Graph
 
Teori graf-complete
Teori graf-completeTeori graf-complete
Teori graf-complete
 
Teori graph 1_2
Teori graph 1_2Teori graph 1_2
Teori graph 1_2
 
Gambar81 contoh-graf
Gambar81 contoh-grafGambar81 contoh-graf
Gambar81 contoh-graf
 
Kel 1 teori graf
Kel 1 teori grafKel 1 teori graf
Kel 1 teori graf
 
Kel 1 teori graf
Kel 1 teori grafKel 1 teori graf
Kel 1 teori graf
 
Teori graph-1
Teori graph-1Teori graph-1
Teori graph-1
 
Makalah teori graf revisi2
Makalah teori graf revisi2Makalah teori graf revisi2
Makalah teori graf revisi2
 
Matematika Diskrit - 09 graf - 07
Matematika Diskrit - 09 graf - 07Matematika Diskrit - 09 graf - 07
Matematika Diskrit - 09 graf - 07
 
Penggunaan Teori Graf pada Pengaturan Lampu Lalu Lintas
Penggunaan Teori Graf pada Pengaturan Lampu Lalu LintasPenggunaan Teori Graf pada Pengaturan Lampu Lalu Lintas
Penggunaan Teori Graf pada Pengaturan Lampu Lalu Lintas
 
Graph1
Graph1Graph1
Graph1
 
Teori graph
Teori graphTeori graph
Teori graph
 
Latihan Graph
Latihan GraphLatihan Graph
Latihan Graph
 
Graf khusus
Graf khususGraf khusus
Graf khusus
 
06 vektor-di-r2-dan-r3
06 vektor-di-r2-dan-r306 vektor-di-r2-dan-r3
06 vektor-di-r2-dan-r3
 

Similar to 13 graph2

Teori graf pada matematika diskriit.pptx
Teori graf pada matematika diskriit.pptxTeori graf pada matematika diskriit.pptx
Teori graf pada matematika diskriit.pptx
HafidzahPatel1
 
T Istrukdat11
T Istrukdat11T Istrukdat11
T Istrukdat11
Anindita Martadipura
 
Graf_Isomorfik_Graf_Planar_Graf_Bidang_d.pdf
Graf_Isomorfik_Graf_Planar_Graf_Bidang_d.pdfGraf_Isomorfik_Graf_Planar_Graf_Bidang_d.pdf
Graf_Isomorfik_Graf_Planar_Graf_Bidang_d.pdf
IchanLingga1
 
Definisi Graph.ppt
Definisi Graph.pptDefinisi Graph.ppt
Definisi Graph.ppt
FahriHadami
 
Pertemuan 13 Graph
Pertemuan 13 GraphPertemuan 13 Graph
Pertemuan 13 Graph
Endang Retnoningsih
 
Solusi Persamaan Laplace Dua Dimensi Untuk Metode Numerik
Solusi Persamaan Laplace Dua Dimensi Untuk Metode NumerikSolusi Persamaan Laplace Dua Dimensi Untuk Metode Numerik
Solusi Persamaan Laplace Dua Dimensi Untuk Metode Numerik
Affandi Arrizandy
 
presentasi matriks penyajian graph teknik informatika
presentasi matriks penyajian graph teknik informatikapresentasi matriks penyajian graph teknik informatika
presentasi matriks penyajian graph teknik informatika
AiniSalsabila5
 
GRAF_PERTEMUAN_PERTAMA.pptx
GRAF_PERTEMUAN_PERTAMA.pptxGRAF_PERTEMUAN_PERTAMA.pptx
GRAF_PERTEMUAN_PERTAMA.pptx
DioAlphard
 
285975_TEOREMA GRAPH_.ppt
285975_TEOREMA GRAPH_.ppt285975_TEOREMA GRAPH_.ppt
285975_TEOREMA GRAPH_.ppt
HadiWidjaja4
 
Matematika Diskrit - 09 graf - 01
Matematika Diskrit - 09 graf - 01Matematika Diskrit - 09 graf - 01
Matematika Diskrit - 09 graf - 01
KuliahKita
 
Diskret VII Graph
Diskret VII GraphDiskret VII Graph
Diskret VII Graph
Raden Maulana
 
Graph-Teori-Algoritma.pdf
Graph-Teori-Algoritma.pdfGraph-Teori-Algoritma.pdf
Graph-Teori-Algoritma.pdf
DikkySuryadiSKomMKom
 
Graph
GraphGraph
Makalah aljabar vektor
Makalah aljabar vektorMakalah aljabar vektor
Makalah aljabar vektor
jennafha krisnando
 

Similar to 13 graph2 (20)

Teori graf pada matematika diskriit.pptx
Teori graf pada matematika diskriit.pptxTeori graf pada matematika diskriit.pptx
Teori graf pada matematika diskriit.pptx
 
T Istrukdat11
T Istrukdat11T Istrukdat11
T Istrukdat11
 
Pertemuan 11 revisijan2013-mhs
Pertemuan 11 revisijan2013-mhsPertemuan 11 revisijan2013-mhs
Pertemuan 11 revisijan2013-mhs
 
Graf_Isomorfik_Graf_Planar_Graf_Bidang_d.pdf
Graf_Isomorfik_Graf_Planar_Graf_Bidang_d.pdfGraf_Isomorfik_Graf_Planar_Graf_Bidang_d.pdf
Graf_Isomorfik_Graf_Planar_Graf_Bidang_d.pdf
 
Pertemuan 13 ok
Pertemuan 13 okPertemuan 13 ok
Pertemuan 13 ok
 
Pert 14
Pert 14Pert 14
Pert 14
 
Definisi Graph.ppt
Definisi Graph.pptDefinisi Graph.ppt
Definisi Graph.ppt
 
Pertemuan 13 Graph
Pertemuan 13 GraphPertemuan 13 Graph
Pertemuan 13 Graph
 
Solusi Persamaan Laplace Dua Dimensi Untuk Metode Numerik
Solusi Persamaan Laplace Dua Dimensi Untuk Metode NumerikSolusi Persamaan Laplace Dua Dimensi Untuk Metode Numerik
Solusi Persamaan Laplace Dua Dimensi Untuk Metode Numerik
 
presentasi matriks penyajian graph teknik informatika
presentasi matriks penyajian graph teknik informatikapresentasi matriks penyajian graph teknik informatika
presentasi matriks penyajian graph teknik informatika
 
Pertemuan 14 ok
Pertemuan 14 okPertemuan 14 ok
Pertemuan 14 ok
 
GRAF_PERTEMUAN_PERTAMA.pptx
GRAF_PERTEMUAN_PERTAMA.pptxGRAF_PERTEMUAN_PERTAMA.pptx
GRAF_PERTEMUAN_PERTAMA.pptx
 
285975_TEOREMA GRAPH_.ppt
285975_TEOREMA GRAPH_.ppt285975_TEOREMA GRAPH_.ppt
285975_TEOREMA GRAPH_.ppt
 
Graph
GraphGraph
Graph
 
Matematika Diskrit - 09 graf - 01
Matematika Diskrit - 09 graf - 01Matematika Diskrit - 09 graf - 01
Matematika Diskrit - 09 graf - 01
 
Diskret VII Graph
Diskret VII GraphDiskret VII Graph
Diskret VII Graph
 
Graph-Teori-Algoritma.pdf
Graph-Teori-Algoritma.pdfGraph-Teori-Algoritma.pdf
Graph-Teori-Algoritma.pdf
 
Graph
GraphGraph
Graph
 
Graf 2
Graf 2Graf 2
Graf 2
 
Makalah aljabar vektor
Makalah aljabar vektorMakalah aljabar vektor
Makalah aljabar vektor
 

More from Wandi Parlente

Rekayasa perangkat lunak
Rekayasa perangkat lunakRekayasa perangkat lunak
Rekayasa perangkat lunakWandi Parlente
 
rekayasa perangkat lunak
rekayasa perangkat lunakrekayasa perangkat lunak
rekayasa perangkat lunakWandi Parlente
 
11 12 -pengurutan dan-pencarian
11 12 -pengurutan dan-pencarian11 12 -pengurutan dan-pencarian
11 12 -pengurutan dan-pencarianWandi Parlente
 
9 10 - sort-pengurutan-data
9 10 - sort-pengurutan-data9 10 - sort-pengurutan-data
9 10 - sort-pengurutan-dataWandi Parlente
 
5 6 single-linked_list
5 6 single-linked_list5 6 single-linked_list
5 6 single-linked_listWandi Parlente
 
1 pengertian-struktur-data
1 pengertian-struktur-data1 pengertian-struktur-data
1 pengertian-struktur-dataWandi Parlente
 
8. modul input & output
8. modul input & output8. modul input & output
8. modul input & outputWandi Parlente
 
7. matherboard & sistem bus
7. matherboard & sistem bus7. matherboard & sistem bus
7. matherboard & sistem busWandi Parlente
 
3. central prosesing unit
3. central prosesing unit 3. central prosesing unit
3. central prosesing unit Wandi Parlente
 

More from Wandi Parlente (20)

Rekayasa perangkat lunak
Rekayasa perangkat lunakRekayasa perangkat lunak
Rekayasa perangkat lunak
 
rekayasa perangkat lunak
rekayasa perangkat lunakrekayasa perangkat lunak
rekayasa perangkat lunak
 
14 graph2
14 graph214 graph2
14 graph2
 
11 12 -pengurutan dan-pencarian
11 12 -pengurutan dan-pencarian11 12 -pengurutan dan-pencarian
11 12 -pengurutan dan-pencarian
 
9 10 - sort-pengurutan-data
9 10 - sort-pengurutan-data9 10 - sort-pengurutan-data
9 10 - sort-pengurutan-data
 
8 algoprog-pointer
8  algoprog-pointer8  algoprog-pointer
8 algoprog-pointer
 
7 Pointer
7 Pointer7 Pointer
7 Pointer
 
5 6 single-linked_list
5 6 single-linked_list5 6 single-linked_list
5 6 single-linked_list
 
4 queue2
4 queue24 queue2
4 queue2
 
3 stack2
3 stack23 stack2
3 stack2
 
2 array n-matriks
2 array n-matriks2 array n-matriks
2 array n-matriks
 
1 pengertian-struktur-data
1 pengertian-struktur-data1 pengertian-struktur-data
1 pengertian-struktur-data
 
10. bahasa rakitan
10. bahasa rakitan10. bahasa rakitan
10. bahasa rakitan
 
8. modul input & output
8. modul input & output8. modul input & output
8. modul input & output
 
7. matherboard & sistem bus
7. matherboard & sistem bus7. matherboard & sistem bus
7. matherboard & sistem bus
 
6. memori sekunder
6. memori sekunder6. memori sekunder
6. memori sekunder
 
5. chace memori
5. chace memori5. chace memori
5. chace memori
 
4. memori komputer
4. memori  komputer4. memori  komputer
4. memori komputer
 
3. central prosesing unit
3. central prosesing unit 3. central prosesing unit
3. central prosesing unit
 
9.sistem operasi
9.sistem operasi 9.sistem operasi
9.sistem operasi
 

13 graph2

  • 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 , 1i sampai m dan 1j 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 ,0jx 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 0ijx 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 0is 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 0js 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