Algorithm+untuk+shortest

18
Algorithm untuk Shortest-Path Problem. Tujuan dari iterasi ke n: Temukan node terdekat ke n terhadap node asal (ulangi untuk n = 1, 2, . . . sampai node terdekat ke n adalah node tujuan akhir). Input untuk iterasi ke n: n - 1 node terdekat ke asal (yang sudah terselesaikan pada iterasi sebelumnya), termasuk lintasan terpendeknya dan jarak dari dari titik asal. (Node-node ini , ditambah denga node asal, akan disebut node yang sudah diselesaikan; node yang lain disebut node yang belum terselesaikan) Kandidat untuk node terdekat ke n: setiap node yang sudah terselesaikan yang terhubung langsung ke satu atau lebih ke node yang belum terselesaikan memberikan satu kandidate- node yang belum diselesaikan yang mempunyai sambungan terpendek. Penghitungan node terdekat ke n: Untuk setiap node yang sudah terselesaikan dan kandidatnya, tambahkan jarak antara mereka dan jarak lintasan terpendek dengan node sudah terselesaikan. Kandidat dengan dengan jarak total terpendek tersebut adalah node ke n terdekat.

Transcript of Algorithm+untuk+shortest

Page 1: Algorithm+untuk+shortest

Algorithm untuk Shortest-Path Problem.

Tujuan dari iterasi ke n:

Temukan node terdekat ke n terhadap node asal (ulangi untuk n = 1, 2, . . . sampai node

terdekat ke n adalah node tujuan akhir).

Input untuk iterasi ke n: n - 1 node terdekat ke asal (yang sudah terselesaikan pada iterasi

sebelumnya), termasuk lintasan terpendeknya dan jarak dari dari titik asal. (Node-node

ini , ditambah denga node asal, akan disebut node yang sudah diselesaikan; node yang

lain disebut node yang belum terselesaikan)

Kandidat untuk node terdekat ke n: setiap node yang sudah terselesaikan yang terhubung

langsung ke satu atau lebih ke node yang belum terselesaikan memberikan satu

kandidate-node yang belum diselesaikan yang mempunyai sambungan terpendek.

Penghitungan node terdekat ke n: Untuk setiap node yang sudah terselesaikan dan

kandidatnya, tambahkan jarak antara mereka dan jarak lintasan terpendek dengan node

sudah terselesaikan. Kandidat dengan dengan jarak total terpendek tersebut adalah node

ke n terdekat.

Contoh aplikasi shortest path

1. Menemukan lintasan dengan jarak total minimum dalam suatu network

2. Minimasi biaya total dari urutan sejumlah aktivitas/pekerjaan dalam suatu network

3. Minimasi waktu total dari urutan sejumlah aktivitas/pekerjaan dalam suatu network

4. Dalam suatu network G dengan arc reliabilities sebesar r ij, temukan lintasan P

dengan maximum reliability (given by P(i,j)ÎP rij).

Perhatikan contoh berikut. Kita berangkat dari kota O ke tujuan T.

Page 2: Algorithm+untuk+shortest

n Selesaikan node yang tersambung langsung dengan node yang belum terselesaikan

Node terdekat

Jarak Total node yang secara langsung tersambung

Node terdekat ke- n

Jarak minimum

Cabang terakhir

1 O A 2 A 2 OA

2,3

OA

CB

42+2=4

CB

44

OCAB

4 ABC

DEE

2 + 7= 94 + 3= 74 + 4= 8

E 7 BE

5 ABE

DDD

2 +7 =94+ 4 =97+1=8

DD

88

BDED

6 DE

TT

8+5=137+7=14

T 13 DT

Ada cara lain yang lebih efisien untuk permasalahan shortest path yang lebih besar.

Yaitu, dengan model optimasi. Dalam model optimasi ini kita gunakan formulasi

programa linier. Berikut ini cara memformulasikan dan menyelesaikan problem shortest

path (lintasan terpendek) dengan menggunakan Excel-solver dan LINDO. Sebelumnya

bisa kita definisikan aliran masuk dari satu node ke node yang lain dan fungsi tujuannya

sebagai berikut

Minimasi 2XOA+5XOB+4XOC+2XAB+7XAD+XBC+XCB+4XBD+3XBE+4XCE+XED+XDE

Page 3: Algorithm+untuk+shortest

+5XDT +7XET

subject to

XOA+XOB+XOC = 1 (node O)

-XOA+XAB+XAD = 0 (node A)

-XOB- XAB +XBD+ XBE + XBC-XCB= 0 (node B)

-XOC - XBC +XCE +XCB = 0 (node C)

-XBD-XAD -XED+XDE +XDT = 0 (node D)

-XCE-XBE+ XED +XET = 0 (node E)

- XET –XDT =-1 (node T)

dengan

Sedangkan formulasi dalam LINDO untuk masalah ini dan solusinya adalah sebagai

berikut

Min 2XOA + 5XOB + 4XOC+2XAB + 7XAD + XBC + XCB + 4XBD + 3XBE

+ 4XCE + XED + XDE + 5XDT +7XET

subject to

XOA+XOB+XOC = 1 !(node O)

-XOA+XAB+XAD =0 !(node A)

-XOB- XAB +XBD+ XBE + XBC-XCB= 0 !(node B)

-XOC - XBC +XCE +XCB = 0 !(node C)

-XBD-XAD -XED+XDE +XDT = 0 !(node D)

-XCE-XBE+ XED +XET =0 !(node E)

- XET -XDT =-1 !(node T)

end

Sedangkan solusinya adalah sebagai berikut

LP OPTIMUM FOUND AT STEP 4

OBJECTIVE FUNCTION VALUE

1) 13.00000

Page 4: Algorithm+untuk+shortest

VARIABLE VALUE REDUCED COST XOA 1.000000 0.000000 XOB 0.000000 1.000000 XOC 0.000000 1.000000 XAB 1.000000 0.000000 XAD 0.000000 1.000000 XBC 0.000000 2.000000 XCB 0.000000 0.000000 XBD 1.000000 0.000000 XBE 0.000000 0.000000 XCE 0.000000 0.000000 XED 0.000000 0.000000 XDE 0.000000 9.000000 XDT 1.000000 0.000000 XET 0.000000 1.000000

ROW SLACK OR SURPLUS DUAL PRICES 2) 0.000000 0.000000 3) 0.000000 2.000000 4) 0.000000 4.000000 5) 0.000000 3.000000 6) 0.000000 8.000000 7) 0.000000 7.000000 8) 0.000000 13.000000

NO. ITERATIONS= 4

MINIMUM SPANNING TREEMinimum spanning tree problem dapat dijelaskan sebagai berikut

1. Kita mempunyai sekumpulan node dari suatu network tetapi belum terhubung.

Yang diberikan hanya sambungan potensial (yang sudah diperkirakan akan dipilih) dan

panjang antar node jika disambungkan. Jarak ini bisa juga digantikan dengan besaran

lain seperti waktu dan biaya.

2. Tujuannya adalah memenuhi syarat bahwa semua node tersambung dengan jarak

totoal minimum.

Contoh aplikasi minimum spanning tree

Membangun rel kereta api yang bisa menghubungkan beberapa kota

Mendesain local access network untuk beberapa komputer

Page 5: Algorithm+untuk+shortest

Membuat sambungan kabel elektrik pada sebuah control panel

Membuat sambungan pipa yang menghubungkan tempat pengeboran di tepi

pantai, dengan tempat penyulingan dan tempat penyimpanan minyak di dekat

konsumen

Mendesain jaringan telekomunikasi (fiber-optic networks, computer

networks,leased-line telephone networks, cable television networks, etc.)

Mendesain jaringan pipa untuk menghubungkan sejumlah lokasi

Algorithm untuk Minimum Spanning Tree Problem.

1. Pilih sembarang node sebagai node awal. Lalu sambungkan dengan node terdekat.

2. Tentukan satu node terdekat dengan node-node lain yang sudah terhubung. Lalu

hubungkan kedua node ini. Ulangi langkah ini hingga semua node tersambung.

3. Jika ada dua node mempunyai jarak sama dengan node lain yang sudah

tersambung, bisa dipilih secara sembarang. Dengan demikian, ada kemungkinan

lebih dari satu solusi optimal dengan jarak minimum total sama.

Page 6: Algorithm+untuk+shortest
Page 7: Algorithm+untuk+shortest

Pilih node O sebagai node untuk mulai. Node yang belum tersambung yang paling dekat ke O adalah A, hubungkan A ke O.

Node yang belum tersambung yang paling dekat ke O atau A, adalah node B. Node B lebih dekat ke A, maka sambungkan B ke A.

Page 8: Algorithm+untuk+shortest

Node yang belum tersambung yang paling dekat ke O, A atau B , adalah node C. Node C lebih dekat ke B, maka sambungkan C ke B.

Node yang belum tersambung yang paling dekat ke O, A, B atau C , adalah node E. Node

E lebih dekat ke B, maka sambungkan E ke B.

Node yang belum tersambung yang paling dekat ke O, A, B, C atau E , adalah node D.

Node D lebih dekat ke E, maka sambungkan D dengan E.

Page 9: Algorithm+untuk+shortest

Dari D dan E paling dekat ke node T adalah cabang DT. Maka sambungkan T ke D.Jadi terbentuk minimum spanning tree .

Perbedaan utama minimum spanning tree dan shortest path adalah dalam minimum

spanning tree yang dipentingkan adalah menyambungkan semua node atau titik yang ada.

Dalam shortest path tujuan kita adalah mencapai node tujuan dari node awal dengan jarak

total minimum. Jadi dalam shortest path tidak perlu setiap titik tersambung dengan titik

yang lain.

Secara matematis permasalahan minimum spanning tree bisa diformulasikan sebagai

berikut

xij= aliran barang melalui cabang i - j,

cij= biaya per unit aliran melewati cabang i- j,

Page 10: Algorithm+untuk+shortest

Xij={0,1}

MAXIMUM FLOW PROBLEMSecara umum maximum flow bisa dijelaskan sebagai berikut

1. Semua aliran barang melalui suatu network yang berarah dan tersambung dari

node awal ke node akhir. Node awal disebut sumber dan node akhir disebut

tujuan.

2. Node sisa yang lain dinamakan node antara.

3. Aliran dalam satu cabang hanya diperbolehkan ke arah yang ditunjukkan oleh

anak panah dimana jumlah maksimum diberikan sebagai kapasitas cabang

tersebut. Pada node sumber, semua cabang mengarah meninggalkan node. Pada

node tujuan semua cabang mengarah masuk ke node.

4. Tujuannya adalah memaksimumkan jumlah total yang bisa diangkut dari sumber

ke tujuan. Jumlah yang diangkut ini bisa dikatakan jumlah yang meninggalkan

sumber atau jumlah yang sampai pada tujuan.

Contoh Applikasi

Berikut ini adalah contoh-contoh aplikasi maximum flow problem.

1. Maksimasi aliran dalam jaringan distribusi suatu perusahaan dari pabrik ke

pelanggan.

2. Maksimasi aliran dalam jaringan suplai suatu perusahaan dari vendor ke pabrik-

pabriknya.

3. Maksimasi aliran minyak dalam sistem perpipaan

4. Maksimasi aliran air dalam distribusi air PDAM.

5. Maksimasi aliran kendaraan dalam jaringan transportasi

Page 11: Algorithm+untuk+shortest

6. Maksimasi pesan dalam suatu jaringan telekomunikasi

Meskipun maximum flow bisa diformulasikan sebagai linear programming, namun ada

algoritma yang cukup efisien untuk menyelesaikannya. Algoritma tersebut adalah

Augmenting Path. Suatu lintasan augmenting adalah lintasan berarah dari sumber ke

tujuan sehingga setiap cabang dalam lintasan ini mempunyai kapasitas sisa yang positif.

Nilai minimum dari kapasitas residual yang ada disebut dengan kapasitas sisa dari

lintasan augmenting. Karena ia mewakili jumlah aliran yang feasibel yang bisa

ditambahkan untuk keseluruhan lintasan.

Karena itu, setiap lintasan augmenting memberikan kemungkinan memperbesar aliran

dalam network.

Algoritma Augmenting Path untuk maximum flow

1. Identifikasikan suatu lintasan augmenting dengan menemukan lintasan dari

sumber ke tujuan dari jaringan yang tersisa sedemikian rupa sehingga setiap

sambungan dalam lintasan ini mempunyai kapasitas residual positif. (jika tidak

ada lagi lintasan augmenting, aliran net sudah menunjukkan aliran yang optimal)

2. Identifikasikan kapasitas tersisa c* dari lintasan augmenting ini dengan

menemukan kapasitas residual minimum dari cabang-cabang yang ada pada

lintasan ini. Tambahkan aliran pada lintasan ini sebesar c*.

3. Kurangi sejumlah c* kapasitas sisa setiap cabang dalam lintasan. Tambahkan

sejumlah c* kapasitas sisa setiap cabang dalam lintasan dalam arah yang

berlawanan, kembali ke langkah 1.

Lihat Contoh berikut

Page 12: Algorithm+untuk+shortest

Iteration 1:Dalam gambar tampak bahwa , salah satu lintasan potensial

adalah O - B- E- T, yang mempunyai kapasitas sisa min{7, 5, 6} = 5.

Dengan mengalirkan 5 ke dalam lintasan ini, didapatkan network

residual

Iteration 2: Alirkan lagi sebanyak 3 ke lintasan potensial O - A- D - T. didapatkan network residual

Page 13: Algorithm+untuk+shortest

Iteration 3: alirkan 1 ke lintasan potensial O _ A-B-D-T.Iteration 4: alirkan 2 ke lintasan O-B-D-T. Nework yang dihasilkan

Iteration 5: : alirkan 1 ke lintasan potensial O-C-E-D-T.Iteration 6: : alirkan 1 ke lintasan potensial O-C-E-T. Hasilnya adalah

Page 14: Algorithm+untuk+shortest

Iteration 7: : alirkan 1 ke lintasan potensial O-C-E-B-D-T.Network yang dihasilkan adalah

Suatu cut dapat di definisikan sebagai sembarang set dari directed arcs yang

mengandung paling tidak satu arc dari setiap lintasan yang mengarah dari

sumber(source) ke tujuan (sink). Normalnya banyak cara untuk melakukan pemotongan

(cutting) dalam suatu network untuk membentuk suatu cut. Untuk suatu cut tertentu, nilai

cut adalah jumlah kapasitas dari semua lintasan yang ada pada cut tersebut.

Page 15: Algorithm+untuk+shortest

Teorema max-flow min-cut menyatakan untuk sembarang network dengan satu sumber

dan satu tujuan, aliran maksimum yang feasible dari sumber ke tujuan sama dengan nilai

minimum cut untuk semua cuts dari network tersebut.

Jadi jika F menandakan jumlah aliran dari sumber ke tujuan untuk sembarang pola

aliran yang feasible, nilai dari suatu cut memberikan upper bound to F, dan nilai

terendah dari nilai cut sama dengan nilai maksimum F.

Dari contoh ini banyak kemungkinan cut yang bisa didapat. Cut yang digambarkan di

atas adalah cut dengan aliran minimum. Yaitu 3 + 4+ 1 + 6= 14, dimana nilainya sama

dengan aliran maksimum yang kita peroleh. Kita tidak perlu lagi mencari kemungkinan

untuk mengalirkan lagi.