BAB 2
LANDASAN TEORI
Pada bab ini akan diuraikan mengenai teori dan terminologi graph, yaitu bentuk- bentuk khusus suatu graph dan juga akan diuraikan penjelasan mengenai shortest path.
2.1 Konsep Dasar Graph
Definsi 2.1
Graph G adalah pasangan (V(G),E(G)) di mana:
1. V(G) adalah sebuah himpunan tak kosong yang berhingga, yang anggota- anggotanya disebut vertek.
2. E(G) adalah sebuah himpunan yang berhingga, yang terdiri atas pasangan- pasangan tak berurut yang tertentu dari verteks V, yang disebut edge.
Atau dengan kata lain V(G) adalah himpunan vertek dari G dan E(G) adalah himpunan edge dari G. Selanjutnya, keduanya cukup disingkat V dan E, dan graph G=(V,E).
Bila V dan E adalah himpunan berhingga maka graph yang demikian disebut dengan graph berhingga (finete graph). Suatu graph dengan p buah verteks dan q buah
edge disebut dengan graph (p,q) ditulis dengan g(p,q). Untuk lebih mudahnya (p,q) biasa ditulis pq.
Secara umum graph dapat digambarkan dengan suatu diagram dimana verteks ditunjukkan sebagai titik yang ditulis dengan vi, i = 1,2,...,p dan edge digambarkan dengan sebuah garis lurus atau garis melengkung yang menghubungkan dua verteks (vi, vj) dan ditulis ek, k = 1,2,...,q disebut vertek-vertek ujung dari ek. Sebagai contoh dapat dilihat Gambar 2 dan Gambar 3 yaitu sebuah graph dengan 6 verteks dan 6 edge, maka dapat ditulis dengan G(6,6).
Gambar 2.1 Graph dengan 6 verteks dan 6 edege
v3
e3
V4
V5
V6 V1
e6 e5
e4
e1
V2 e2
Gambar 2.2 Graph dengan loop dan edge sejajar Defenisi 2.2
Suatu edge yang menghubungkan pasangan verteks yang sama yakni (vi, vi) disebut loop dan dua atau lebih edge yang mempunyai vertek-vertek ujung yang sama yaitu (vi, vi) disebut dengan edge sejajar. Jika sebuah graph G yang didalamnya tidak terdapat loop dan edge sejajar disebut graph sederhana.
Definisi 2.3
Suatu walk dinyatakan sebagai barisan alternatif berhingga dari vertek-vertek dan edge yang diawali dan diakhiri dengan verteks yang sedemikian hingga tiap-tiap edge insiden dengan verteks yang terdahulu dan dengan vertek yang berikutnya. Vertek yang merupakan vertek awal dan vertek akhir disebut dengan terminal vertek.
Pada Gambar 4 dapat dipilih sebuah walk yaitu v1, e3, v5, e7, v6, e8, v3, e9, v7, e6 dan v4, dimana vertek terminalnya adalah v1 dan v4.
e1
V1
e3
V4 e4
V3 e6
e5 V2
e2
e7
e8
Gambar 2.3 Graph dengan walk yang bergaris tebal
Dapat juga sebuah walk dimulai dan diakhiri oleh verteks yang sama, walk yag demikan disebut dengan close walk. Sebaliknya sebuah walk yang tidak tertutup disebut open walk. Sebuah close walk dapat juga disebut cycle.
Gambar 2.4 Graph dengan 5 verteks dan 6 edge
V1
e2 V3
V5
V4 V2
e5 e6
e3
e4 e1
V1
V2 V3
V4
V5 V6
e2 e8
e4
e11 e6
e12 e5
e7 e3
V7 e1
Sebuah open walk yang didalamnya tidak ada verteks yang muncul lebih dari satu kali disebut sebagai sebuah lintasan (path) atau lintasan sederhana atau sebuah lintasan dasar. Pada Gambar 5 dapat diambil sebuah lintasan v1, e1, v2, e4, v4, e6, v5
sebagai contoh . Tapi pada Gambar 4 dapat dilihat v1, e3, v5, e7, v6, e8, v3, e9, v7, e4, v6, e5,
v2, e12, v4 bukan merupakan lintasan karena terdapat verteks yang muncul lebih dari satu kali. Dengan kata lain, sebuah lintasan, verteks dan edgenya tidak beririsan dengan verteks dan edge sendiri.
Jumlah dari edge-edge dalam sebuah lintasan disebut dengan panjang dari lintasan. Sebuah edge yang bukan loop dapat dimasukkan didalam sebuah walk, tapi tidak termasuk lintasan. Verteks terminal dalam suatu lintasan mempunyai derajat lanjutan satu dan verteks lainnya yang disebut dengan verteks lanjutan mempunyai derajat dua. Derajat-derajat ini dihitung hanya verteks yang berhubungan dengan edge-edge yang ada lam lintasan dan bukannya seluruh lintasan dalam graph.
2.2 Graph Terhubung
Secara intuisi, konsep-konsep tentang keterhubungan suatu graph telah jelas. Sebuah graph dikatakan terhubung jika terdapat sebuah verteks yang terhubung menuju vertek-vertek lainnya sepanjang jalur edge.
V1
V3
V4
V2
Gambar 2.5 Graph tak terhubung
Gambar 2.6 Graph terhubung
Definisi 2.4
Sebuah graph G dikatakan terhubung (connected) jika ada sedikitnya satu lintasan antara setiap pasangan verteks dalam graph G. Sebaliknya graph G adalah tak terhubung (disconnected). Contoh masing-masing untuk graph terhubung dan tak terhubung dapat dilihat pada Gambar 6 dan Gambar 7.
2.3 Graph Berlabel
Hubungan antar verteks-verteks dalam graph perlu diperjelas. Hubungan tidak cukup hanya menunjukkan verteks-verteks mana yang berhubungan langsung, tetapi juga seberapa kuat hubungan itu. Sebagai contoh, andaikata suatu graph menyatakan “peta”
V1
V2 V5
V3
V4
V7
V6
suatu daerah. Verteks-verteks pada graph menyatakan kota-kota yang ada di daerah tersebut, dan edge-edge 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 verteks dan panjang edgenya tidak menyatakan jarak 2 kota yang sebenarnya seperti halnya dengan peta yang sebenarnya. Jadi setiap garis dalam graph berhubungan dengan suatu label yang menyatakan bobot garis tersebut.
Definisi 2.5
Graph Berlabel (weighted graph) adalah suatu graph tanpa edge paralel dimana setiap edgenya berhubungan dengan suatu bilangan riil tak negatif yang menyatakan bobot edge (w(e)) tersebut. Jumlah bobot semua edge disebut Total Bobot.
Matriks yang bersesuaian dengan graph berlabel G adalah matriks hubung A = (aij) dengan aij = bobot edge yang menghubungkan verteks vi dengan verteks vj. Jika verteks vi tidak berhubungan langsung dengan verteks vj maka aij = ∞, dan aij = 0 jika i = j.
Contoh 2.1
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 adalah sebagai berikut :
Edge Kota yang dihubungkan Biaya per satuan e4
e7 e2 e8 e9 e1 e3
e10
e5
e11
e6
v2 – v3 v4 – v6 v1 – v7 v3 – v4 v3 – v5 v1 – v2 v1 – v4
v6 – v8
v7 – v8
v5 – v6
v6 – v7
3 4 5 5 5 15 15 15 15 15 18
a. Graph berlabel untuk menyatakan jaringan listrik di 8 kota dapat digambarkan pada gambar 2.3. dibawah ini. Angka dalam kurung menyatakan bobot edge yang bersangkutan. Bobot tersebut menyatakan biaya pengadaan jaringan listrik.
v1
v4
v6 v8
v7
v2
v3
v5 e2 (5) e3 (15)
e5 (15) e6 (18)
e7 (4)
e8 (5)
e9 (5) e4 (3) e1 (15)
e10 (15)
e11 (15)
Gambar 2.7 Graph Jaringan listrik di 8 kota
b. Matriks hubung untuk menyatakan graph berlabel pada gambar 2.3. adalah matriks A = (aij) dengan aij =
Jarak verteks vi dengan vj jika ada edge yang menghubungkan verteks vi dengan vj
∞ Jika tidak ada edge yang menghubungkan verteks vi dengan vj
0 jika i = j
v1 v2 v3 v4 v5 v6 v7 v8
v1 0 15 ∞ 15 ∞ ∞ ∞ ∞
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
2.4 Shortest Path
Setiap path dalam digraph (directed graph) mempunyai nilai yang dihubungkan dengan nilai path tersebut, yang nilainya adalah jumlah dari nilai edge path tersebut. Dari ukuran dasar ini dapat dirumuskan masalah seperti “ mencari lintasan terpendek antara dua vertek 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 verteks menuju ke setiap verteks lainnya. Pilihan lain adalah membuang kendala tak negatif bagi “jarak”. Suatu kendala lain dapat juga diberlakukan dalam suatu masalah lintasan terpendek.
Definisi 2.6
Lintasan terpendek antara dua verteks dari s ke t dalam jaringan adalah lintasan graph berarah sederhana dari s ke t dengan sifat dimana tidak ada lintasan lain yang memiliki nilai terendah.
Contoh 2.2
Gambar 2.8 Shortest path (garis tebal)
Pada Gambar 9 dapat dilihat bahwa setiap edge terletak pada path-path dari titik 1 ke titik 4. Edge merepresentasikan saluran dengan kapasitas tertentu (contohnya, air) dapat dialirkan melalui saluran. Sedangkan verteks merepresentasikan persimpangan saluran. Air mengalir melalui verteks pada verteks yang dilalui
Lintasan terpendek dari verteks pada graph di atas adalah P = {1 – 2, 2 – 4} dengan kapasitas 4.
Contoh 2.3
Taman Seervada diciptakan sebagai tempat untuk berdarmawisata dan pendakian bukit dengan jumlah yang terbatas. Mobil tidak diizinkan untuk masuk ke dalam taman, tetapi disana terdapat suatu sistem jalan sempit berliku untuk trem dan jeep petugas taman. Sistem jalan tersebut ditunjukkan (tanpa lengkungan) dalam gambar 2.9 dimana O adalah pintu masuk taman sedangkan abjad lain diperuntukkan bagi pos penjagaan (dengan beberapa fasilitas yang terbatas). Angka-angka pada gambar menunjukkan jarak tempuh antara pos-pos tersebut dalam satuan mil.
1
2
3 4
3X1
5X3
2X2 1X4
4X3
Taman tersebut memiliki pemandangan yang sangat indah di pos T. Sejumlah kecil trem digunakan sebagai sarana transportasi para pelancong dari pintu masuk taman menuju pos T dan sebaliknya. Pengelola taman ini menghadapi suatu permasalahan yaitu menentukan lintasan dengan jarak tempuh terpendek dari pintu masuk menuju pos T dalam upaya mengoperasikan trem.
Gambar 2.9 Sistem Jalan di Taman Seervada
Perhatikan suatu jaringan kerja tak berarah yang terhubungkan dengan dua buah verteks istimewa yang disebut sebagai verteks asal dan tujuan. Berpadanan dengan setiap link (garis tak berarah) terdapat jarak tak negatif. Tujuannya adalah menentukan lintasan terpendek (lintasan dengan total jarak terpendek) dari asal menuju tujuan.
2.5 0-1 Programming (Binary Integer) A
O B D
T
C E
2 2
5
4 1
4 7
4
3 1
5
7
Model 0-1 Programming biasanya dipilih untuk permasalahan yang variabel variabelnya tidak dimungkinkan bertipe bilangan tidak bulat, misalnya : variabel jumlah orang.
0-1 Programming adalah program linear (Linear Programming) dengan tambahan persyaratan bahwa semua atau beberapa variabel bernilai bulat nonnegatif, tetapi tidak perlu bahwa parameter model juga bernilai bulat. 0-1 Programming digunakan untuk memodelkan permasalahan yang variabel-variabelnya tidak mungkin berupa bilangan yang tidak bulat (bilangan real), seperti variabel yang merepresentasikan jumlah orang, karena jumlah orang pasti bulat dan tidak mungkin berupa pecahan. 0-1 Programming juga biasanya lebih dipilih untuk memodelkan suatu permasalahan karena program linear dengan variabel berupa bilangan real kurang baik dalam memodelkan permasalahan yang menuntut solusi berupa bilangan integer, misalnya keuntungan produksi 3 pesawat dibandingkan dengan keuntungan produksi 3,5 pesawat akan menghasilkan selisih keuntungan yang signifikan.
Ada banyak kasus dalam masalah 0-1 Programming yang membatasi variabel model bernilai nol atau satu. Dalam kasus demikian, persoalan lintasan hanya memiliki dua pilihan yaitu masuk atau keluar dari jaringan. Jika variabel Xj bernilai satu, persoalan masuk, dan jika variabel Xj bernilai nol, persoalan keluar.
Dalam masalah 0-1 Programming, jika persoalan mengharapkan semua variabel basis bernilai bulat positif atau nol, dinamakan pure(all) integer programming. Jika persoalan hanya mengharapkan variabel-variabel tertentu bernilai integer, dinamakan mixed integer programming. Dan jika persoalan hanya mengharapkan nilai nol atau satu untuk variabelnya, dinamakan zero one integer
Pemrograman bulat dibutuhkan ketika keputusan harus dilakukan dalam bentuk bilangan bulat (bukan pecahan yang sering terjadi bila kita gunakan metode simpleks).
Model matematis dari pemrograman bulat sebenarnya sama dengan model linear programming, dengan tambahan batasan bahwa variabelnya harus bilangan bulat.
Terdapat 3 macam permasalahan dalam pemrograman bulat, yaitu:
1. Pemrograman bulat murni, yaitu kasus dimana semua variabel keputusan harus berupa bilangan bulat.
2. Pemrograman bulat campuran, yaitu kasus dimana beberapa, tapi tidak semua, variabel keputusan harus berupa bilangan bulat
3. Pemrograman bulat biner, kasus dengan permasalahan khusus dimana semua variabel keputusan harus bernilai 0 dan 1
Walaupun persoalan umum 0–1 linear programming dapat diselesaikan dengan algoritma cutting plane atau branch-and-bound, Blintasan Force mengembangkan suatu algoritma enumerative yang efisien dan menarik untuk menyelesaikan persoalan ini. Sangat singkat sebagai dasar integer nonlinear programming. Fungsi digunakan untuk menyamaratakan kesalahan metode untuk menyelesaikan persoalan all integer dan mixed-integer nonlinear programming.
Model pemrograman bulat dapat juga digunakan untuk memecahkan masalah dengan jawaban ya atau tidak (yes or no decision) dibatasi menjadi dua, misal 1 dan 0, jadi keputusan ya atau tidak diwakili oleh variabel, katakanlah, xj, menjadi:
Xj =
tidak keputusan
untuk
ya keputusan untuk
, 0
, 1
Model ini seringkali disebut sebagai model pemrograman bulat biner .
2.6 Knapsack
Algoritma 0 – 1 Programming merupakan salah satu tipe masalah Knapsack dimana keadaan tertentu terjadi, masing-masing keadaan mempunyai sebuah nilai yang dihubungkan dengan besarannya. Secara nyata bahwa solusi optimal dari masalah knapsack akan menunjukkan kemungkinan yang terbaik.
Pada masalah ini akan terdorong untuk menyelesaikan suatu persoalan dalam menentukan lintasan terpendek pada suatu distribusi aliran. Pendekatan yang sederhana dapat dimasukkan ke dalam program komputer untuk memeriksa semua harga 0-1 yang mungkin, dipilih yang terbaik yang memenuhi kendala.
Contoh 2.4 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 ia tidak ingin berat seluruhnya melebihi b kg. Bila berat peralatan ke – j adalah aj kg dan harganya adalah Cj maka persoalan yang dihadapi ialah memaksimumkan harga semua peralatan tanpa melebihi batas berat, yakni b kg. Misalkan jenis peralatan ialah Xj dan,
1 bila alat ke – j ikut
Xj =
0 bila alat ke – j tidak ikut
Berdasarkan keterangan diatas, persoalan dapat dirumuskan sebagai berikut :
Max. f = c1 X1 + c2 X2 + ….. + cn Xn
Dengan kendala :
a1 X1 + a2 X2 + ….. + an Xn ≤ b X1 , X2 , ………. Xn = 0 atau 1
Persoalan ini merupakan persoalan Knapsack sebagai persoalan nol satu (0-1).
0 - 1 atau biner, Persoalan Knapsack yaitu masukan dari n item dan suatu knapsack, dengan
pj = keuntungan dari item j, wj = bobot dari item j, c = kapasitas dari knapsack
pilih subset dari item sebagai
maksimumkan j
j jx p
z
∑
=
=
1
dengan kendala ,
1
c x w j
n
j
j ≤
∑
=xj 0 atau 1, j ε N {1,…..,n}
dimana
= 0 1 xj
2.7 Pengenalan Program LINDO
LINDO (Linier, Interaktip, dan Discrete Optimizer) adalah suatu alat yang mudah, tangguh untuk memecahkan permasalahan linear, bilangan bulat, dan permasalahan pemrograman kuadratik. Permasalahan ini terjadi di dalam bidang- bidang untuk urusan(bisnis, industri, riset dan pemerintah. Bidang-bidang aplikasi- aplikasi spesifik di mana LINDO sudah terbukti penggunaannya dalam memasukkan distribusi produk, campuran ramuan, penjadwalan produksi dan personil, manajemen inventori. Perangkat lunak LINDO dirancang bersifat sederhana untuk belajar dan untuk digunakan.
Jika objek j memenuhi Lainnya
Gambar 2.10 Tampilan Awal program LINDO