• Tidak ada hasil yang ditemukan

BAB 3 ANALISIS DAN PERANCANGAN

N/A
N/A
Protected

Academic year: 2021

Membagikan "BAB 3 ANALISIS DAN PERANCANGAN"

Copied!
12
0
0

Teks penuh

(1)

BAB 3

ANALISIS DAN PERANCANGAN

3.1 Analisis

Pada bab 2, telah dijelaskan mengenai pemilihan negative cycle yang akan mengalami proses canceling tanpa menggunakan aturan-aturan tertentu. Dengan kondisi tersebut, maka metode cycle canceling akan memiliki kompleksitas total sebesar

2

( )

O VA CU . Dengan kompleksitas seperti itu, algoritma ini sudah dapat tergolong

kedalam kelompok polynomial, tetapi dalam kasus sehari-hari C dan U seringkali bernilai sangat besar, sehingga kompleksitas tersebut akan jatuh kedalam keadaan weak

polynomial. Untuk itu diperlukan algoritma yang lebih cepat yang memiliki

kompleksitas yang tergolong sebagai strong polynomial. Hal tersebut dapat tercapai dengan cara menghilangkan faktor C dan U dari perhitungan kompleksitas, atau menggunakan algoritma yang dapat membuat pertumbuhan kompleksitas terhadap C dan U menjadi sangat kecil.

Seperti pada hipotesis, bahwa penggunaan aturan-aturan yang berbeda dalam memilih negative cycle yang akan mengalami proses canceling akan menghasilkan kompleksitas metode cycle canceling yang berbeda. Sekarang akan digunakan aturan

pemilihan negative cycle yang memiliki nilai rata-rata terkecil (( , ) | | ij i j W c W π ∈

). Berikut ini adalah analisis kompleksitas cycle canceling apabila menggunakan aturan tersebut.

(2)

3.1.1 Approximate Optimality

Pertama-tama diperkenalkan terhadap satu variabel yang sangat penting yaitu ε dan sebuah kondisi, yaitu ε−optimal. Untuk beberapa atau semua node potential π

pada pasangan ( , )x π harus memiliki kondisi ε−optimal sebagai berikut:

If cijπ >ε, then xij =0 (3.1.1)

If − ≤ε cijπ ≤ε, then 0≤xijuij (3.1.2)

If cijπ < −ε, then xij =uij (3.1.3) Kondisi ε−optimal di atas merupakan kondisi optimal complementery slackness yang telah dibahas pada bab 2. Sehingga solusi optimal akan dihasilkan apabila ε =0. Karena nilai ε >0, maka dapat diintegrasikan kedalam kondisi optimal reduced cost, sehingga akan didapatkan kondisi sebagai berikut:

cijπ ≥ −ε (3.2) Supaya suatu graph G x( ) dapat memenuhi kondisi ε−optimal, maka nilai

C

ε ≤ . Dari kondisi (3.2) dan kondisi optimal reduced cost juga dapat disimpulkan

( , ) 1 ij i j W cπ εV ∈ ≥ − ≥ −

, karena cost akan selalu bernilai integer, maka kondisi optimal akan terjadi pada saat 1

V ε < dan ( , ) ij i j W cπ ∈

tidak akan bernilai negatif. Dengan perolehan hasil tersebut, maka ( , ) ( , ) ( , ) ( ) ( ) ij ij ij i j W i j W i j W cπ c π i π j c ∈ ∈ ∈ = − + =

akan selalu bernilai positif untuk

setiap W, dan karena tidak ada negative cycle pada ( )G x , maka x merupakan solusi optimal dari minimum cost flow.

(3)

3.1.2 Properti

Sekarang hubungkan antara approximate optimality dengan metode cycle

canceling yang menggunakan aturan ( , )

| | ij i j W c W π ∈

terkecil untuk dilibatkan pada proses

canceling. Seperti yang telah dibahas sebelumnya, bahwa flow x merupakan ε −optimal

untuk beberapa set node potential π, dan reduced cost cijπ untuk setiap arcs paling sedikit −ε. Perhatikan bahwa untuk setiap flow x akan menjadi ε−optimal untuk banyak ε, karena sebuah flow yang merupakan ε−optimal juga merupakan

'

optimal

ε − untuk setiap ε ε'≥ . Kemudian untuk setiap node potential π, set

( )x min(cij : ( , )i j G x( ))

π π

ε = − ∈ , sehingga cijπ ≥ −επ( )x . Jadi x merupakan ε −optimal

untuk ( )ε x =minεπ( )x .

Berikutnya terdapat variabel ( )μ x yang mewakili nilai cost rata-rata minimum dari sebuah cycle. Karena x adalah ε−optimal, maka kondisi (3.2) dapat diterapkan menjadi ( , ) ( , ) ( )* | | ij ij i j W i j W c cπ ε x W ∈ ∈ = ≥ −

, dengan memilih cycle yang memiliki nilai cost

rata-rata minimum sebagai W, maka didapatkan μ( )x ≥ −ε( )x . Kemudian ganti semua nilai cij dengan '

( )

ij ij

c =c −μ x , dengan pergantian ini, maka nilai cost rata-rata dari setiap cycle akan berkurang sebanyak ( )μ x , dan cycle yang memiliki nilai cost rata-rata terkecil akan memiliki nilai cost rata-rata = 0, sehingga apabila semua cycle yang memiliki nilai cost rata-rata < 0 dihilangkan, maka graph G(x) tidak memiliki negative

cycle. Dengan mengintegrasikan hal ini dengan kondisi optimal shortest path (2.1),

maka: ' ' ' '

( ) ( ) ij ( ) ij ( )

d jd i +c =d i + −c μ x , dengan mengganti ' ( )j dij

(4)

pertidaksamaan tersebut menjadi cij ( )x

π μ

, jadi x adalah (−μ( ))xoptimal, sehingga ( )x ( )x

ε ≤ −μ . Dari hal ini dapat disimpulkan, bahwa apabila x bukan optimal flow, maka ( )ε x = −μ( )x . Kemudian karena

( , ) ( , ) ( ) | | ij ij i j W i j W c cπ μ x W ∈ ∈ = =

, maka didapatkan

persamaan berikut ini: cijπ =μ( )x = −ε( )x .

Anggap W merupakan nilai rata-rata negative cycle yang minimum pada graph

G(x). Dari analisa sebelumnya untuk node potential π, nilai cijπ = −ε( )x untuk setiap

arc ( , )i jW . Kemudian x' merupakan flow setelah menghilangkan cycle W dari G(x). Ketika melakukan proses canceling, terdapat 2 hal, yaitu adanya penghilangan dan penambahan satu atau lebih arc. Jika arc ( , )i j terdapat pada G(x), maka cijπ ≥ −ε( )x . Jika arc ( , )i j tidak terdapat pada G(x), maka arc ( , )i j merupakan kebalikan dari arc

( , )j i , sehingga cji ( )x

π = −ε

dan cij cji ( )x 0

π = − ≥ −π ε >

. Untuk arc( , )i j dari '

( )

G x

memiliki reduced cost cijπ ≥ −ε( )x . Hal ini menunjukkan bahwa μ dalam G x( )' manapun akan bernilai sekurang-kurangnya −ε( )x . Karena cijπ =μ( )x' , maka didapatkan −ε( )x' =μ( )x' ≥ −ε( )x =μ( )x . Dari pertidaksamaan tersebut, dapat disimpulkan, bahwa apabila flow x bukan merupakan solusi optimal dari minimum cost flow, maka nilai ( )ε x tidak akan pernah bertambah, dan nilai ( )μ x juga tidak akan pernah berkurang.

Negative cycle dapat dibagi menjadi dua tipe:

a) Semua arc pada negative cycle bernilai negatif

(5)

Apabila setiap kali menjalankan tipe (a) akan melakukan canceling minimal untuk satu buah arc, maka tipe (a) paling banyak akan dijalankan sebanyak |A| kali, dan kemudian diakhiri oleh tipe (b), atau tidak sama sekali. Hal ini disebabkan karena ketika tipe (a) terlibat dalam proses canceling, maka cost yang bernilai negatif akan berubah menjadi positif, dan setelah |A| kali, maka semua cost akan bernilai positif, dan metode cycle

canceling akan selesai dalam keadaan optimal. Berikutnya analisa ketika terjadi

canceling pada negative cycle tipe (b). Misalkan terjadi canceling pada cycle W, yang

memiliki setidaknya satu buah arc postitif. Kemudian terdapat flow x' yang mewakili

flow sebelum proses canceling dan flow x'' yang mewakili flow sesudah proses

canceling. Sehingga cijπ ≥ −ε( )x untuk semua arc ( , )i jW , dan cklπ ≥0 untuk semua

arc ( , )k lW . Sehingga dapat diketahui cost dari flow x', yaitu

(

)

(

'

)

( , ) ( ) ij | | 1 ( ) i j W c W cπ W ε x ∈ ⎡ ⎤

=

− − . Sebelumnya telah diketahui bahwa nilai ( )ε x

tidak akan pernah bertambah, dan μ( )x'' ≥μ( )x' , sehingga akan didapatkan

pertidaksamaan '' ' 1

(

'

)

1

(

'

)

( ) ( ) 1 ( ) 1 ( ) | | x x x x W V μ ≥μ ≥ −⎛ −ε ≥ −⎛ −ε ⎝ ⎠ ⎝ ⎠ . Kemudian

dengan mengalikan -1 pada setiap sisinya, akan didapatkan pertidaksamaan

(

)

'' 1 ' ( )x 1 ( )x V μ ⎛ ⎞ ε − ≤ − − ⎝ ⎠ , karena '' '' ( )x ( )x ε = −μ maka ( )x'' 1 1

(

( )x'

)

V ε ≤ −⎛ −ε ⎝ ⎠ .

Sehingga dapat disimpulkan, bahwa setelah terjadi |A| proses canceling, maka nilai ( )x

ε , akan berkurang paling banyak sebesar 1 1

(

( )x

)

V ε

⎜ ⎟

(6)

3.1.3 Kompleksitas

Seperti yang sudah dibahas pada subbab 3.1.1, bahwa agar graph G(x) memenuhi kondisi ε −optimal, maka ε ≤C. Kemudian dari properti pada subbab 3.1.2, telah disimpulkan bahwa pada setiap |A| proses canceling, maka nilai ( )ε x akan berkurang sebesar 1 1

(

( )x

)

V ε ⎛ ⎞ ⎜ ⎟ ⎝ ⎠ , dan ketika 1 ( )x V

ε ≤ , maka G(x) merupakan solusi

optimal untuk minimum cost flow. Oleh karena itu secara keseluruhan, ( )ε x harus berkurang sebesar faktor dari VC. Karena

( )

xk 1 1 1

( )

xk

V

ε + ≤ −⎛ε

⎝ ⎠ , maka setiap terjadi

VA iterasi, maka

(

)

( )

2 k k v x x ε

ε + ≤ . Sehingga metode cycle canceling dengan

menggunakan aturan nilai rata-rata negative cycle terkecil memiliki kompleksitas O(VA lg (VC)).

3.1.4 Pencarian Negative Cycle

Setelah mendapatkan kompleksitas cycle canceling secara keseluruhan, kompleksitas dari pencarian negative cycle untuk diproses juga sangat berpengaruh. Untuk mencari negative cycle yang memiliki nilai terkecil dapat dicari dengan langkah-langkah sebagai berikut:

Langkah 1: Carilah jarak terpendek dari suatu vertex s menuju vertex i (dimana i merupakan vertex selain s) dengan tepat k langkah. Untuk melakukan langkah 1 ini, dapat digunakan metode dinamic programming.

Subproblem dari langkah ini yaitu untuk mendapatkan jarak terpendek

(7)

optimal dari jarak terpendek dari vertexs menuju vertex lainnya dalam (k – 1) langkah. Dari karakteristik ini, didapatkan persamaan rekursif sebagai berikut: [ , ]d k jd k[ −1, ]i +cij untuk setiap arc ( , )i jA.

Langkah 2: Mencari nilai rata-rata negative cycle minimum dari suatu graph G(x), dengan menggunakan persamaan:

min(j V)max(0 k (n 1)) d n j[ , ] d k j[ , ]

n k

μ = ≤ ≤ − − ⎤

⎣ ⎦ ketika μ ≥0, maka pada graph tidak terdapat negative cycle, sedangkan

ketika 0μ< , maka terdapat negative cycle pada graph ( )G x dengan nilai rata-rata μ.

Langkah 3: Kurangi semua nilai cost pada arcs dengan μ. Sebab ketika semua nilai

cost pada arcs dikurangi dengan μ, maka setiap negative cycle yang

memiliki nilai rata-rata μ akan berubah sehingga tidak berstatus negative

cycle, karena nilai μ berikutnya dari cycle tersebut sama dengan 0.

Langkah 4: Hitung jarak terpendek dari vertex s ke semua vertex kecuali vertex s

sendiri.

Langkah 5: Dengan konsentrasi hanya kepada arc yang memiliki reduced cost = 0, jalankan algoritma topological sorting. Algoritma ini akan sukses dijalankan secara utuh, ketika tidak terdapat cycle pada graph. Sehingga ketika algoritma ini terhenti sebelum semua arc pada graph di eliminasi, maka sisa arc tersebut merupakan cycle.

Karena langkah 1 memiliki kompleksitas O(VA), langkah 2 memiliki kompleksitas

2

( )

(8)

( )

O VA , dan langkah 5 memiliki kompleksitas O V( 2), sehingga kompleksitas keseluruhan untuk mencari negative cycle ini adalah (O VA), karena prosedur ini dijalankan sebanyak O(VA lg (VC)), maka total kompleksitas dari metode cycle

canceling ini adalah O(V A2 2 lg (VC)).

3.2 Perancangan

Berdasarkan analisis sebelumnya, maka solusi yang diusulkan akan dirancang untuk penyusunan metode cycle canceling. Pada subbab berikut akan dibahas lebih mendetil.

3.2.1 Cycle Canceling

Langkah-langkah untuk cycle canceling telah dibahas pada bab 2, berikut ini adalah pseudocode dari cycle canceling.

function cycle_canceling() Cost = 0

Push_relabel()

For i := 0 to n – 1 do For j := 0 to n – 1 do

If adju[i][j] AND adjc[i][j] < 0 then Cost += (adju[i][j] * -adjc[i][j]) End if

End for End for

While (terdapat negative cycle) Hilangkan jalur negative cycle Cost = cost – cost_negative_cycle End while

End.

(9)

3.2.2 Pencarian Basic Feasible Solution

Untuk mencari basic feasible solution dari minimum cost flow dapat digunakan

maximum flow, berikut ini adalah pseudocode dari maximum flow menggunakan metode

push relabel. function push_relabel() For i := 0 to n – 1 do e[i] = 0 h[i] = inf end for h[t] = 0 breadth_first_search()

set all sudahAktif[0..n-1] = false for i := 0 to n – 1 do

if adju[s][i] != 0 AND h[i] = h[s] + 1 then e[i] = adju[i][s] = adju[s][i]

adju[s][i] = 0 dequeue (i)

sudahAktif[i] = true end if

end for

while (queue tidak kosong) av = queue paling depan for i := 0 to n – 1 do

if adju[av][i] AND h[i] == h[av] – 1 then p = min (adju[av][i], e[av])

kurangi nilai e[av] dan adju[av][i] dengan p tambahkan nilai e[i] dan adju[i][av] dengan p if i belum aktif then

enqueue (i)

sudahAktif[i] = true end if

end if end for

if av sudah tidak aktif then dequeue ()

else

h[av] = min(h[i] dimana i adalah semua vertex kecuali s dan t)

end if end while end.

(10)

3.2.3 Pencarian Tinggi Minimum dari Masing-masing Vertex

Untuk mencari tinggi minimum dari masing-masing vertex sebagai setting awal pada algoritma push-relabel, digunakan algoritma pencarian breadth first search.

function breadth_first_search() enqueue (t)

while (queue tidak kosong)

tt = queue paling depan, dan dequeue() for i := 0 to n – 1 do h[i] = h[tt] + 1 enqueue (i) end for end while end.

Pseudocode 3.3: Breadth First Search

3.2.4 Pencarian Negative Cycle

Pencarian negative cycle yang memiliki nilai rata-rata minimum, menggunakan metode yang telah dijelaskan sebelumnya.

function detect_negative_cycle() set d[0..n-1, 0..n-1] = inf d[0][t] = 0

for k := 0 to n – 1 do for all arc (i, j) do

d[k][j] = min (d[k][j], d[k – 1][i] + c[i][j]) end for end for μ =inf for j := 0 to n – 1 do maxi = -inf for k := 0 to n – 1 do

maxi = max (maxi, (d[n][j] – d[k][j]) / (n – k)) end for

μ = min (μ, maxi)

end for

if μ <0 then ada negative cycle

else tidak ada negative cycle end.

Pseudocode 3.4: Detect negative cycle

(11)

3.2.5 Mendapatkan Jalur Negative Cycle

Untuk mendapatkan jalur negative cycle yang telah dicari sebelumnya, cukup memperhatikan arcs yang memiliki reduced cost = 0.

function membentuk_graph_baru() set all ds[0..n-1] = inf for i := 0 to n – 1 do for j := 0 to m – 1 do

if ds[to[j]] > ds[from[j]] + adjc[i][j] then ds[to[j]] = ds[from[j]] + adjc[i][j] end if

end for end for

set all dummy[0..n-1, 0..n-1] = false for all arc (i,j) do

if adjc[i][j] - μ+ ds[i] – ds[j] == 0 then

dummy[i][j] = true end if

end for end.

Pseudocode 3.5: Membentuk Graph Baru

kemudian proses dengan menggunakan algoritma topological sorting, sehingga arc yang tersisa merupakan jalur dari negative cycle yang dicari.

function topological_sorting() set all degree[0..n-1] = 0 for i := 0 to n - 1 do for j := 0 to n – 1 do if dummy[i][j] then degree[j] = degre[j] + 1 end for for i := 0 to n – 1 do if degree[i] == 0 then enqueue (i) end if end for next = 0

while (queue tidak kosong)

av = pilih queue paling depan, dan dequeue() next = next + 1 for i := 0 to n – 1 do if dummy[av][i] then degree[i] = degree[i] – 1 dummy[av][i] = false if degree[i] == 0 then

(12)

enqueue (i) end if end if end for end while if next < n then return ada cycle else

return tidak ada cycle end.

Referensi

Dokumen terkait

Skenario terburuk yang bisa terjadi adalah apabila pada suatu hari dalam waktu dekat ini, sebagian besar dari 120.000 pengungsi Timor Timur yang berada di Timor Barat akan

Metode yang digunakan dalam penelitian dengan judul ” Analisis Knowledge Management pada PT.Karya Indah Nusa Gemilang” Menggunakan metode analis SWOT dan Analisis

a. Memastikan jam pelaksanaan praktek kerja dilakukan secara proporsional dengan jam istirahat agar tidak menimbulkan kelelahan sangat yang dapat

Saran yang dapat diberikan untuk pengembangan aplikasi sejenis di masa depan antara lain adanya fitur search pada halaman Document Status Reports agar admin dapat mencari

Sebagai sastra lisan seloko adat Jambi mempunyai fungsi informasional karena muncul dan berkaitan dengan pemanfaatan seloko adat Jambi itu sendiri yang digunakan untuk penyampaian

Hal ini disebabkan kapur sirih dan garam dengan lama perendaman biji durian menggunakan larutan dengan persentase yang sama sebanyak 5% tidak mempengaruhi nilai

Saya harus memikirkan dia. Rumah belum dapat. Masih nebeng di tempat kawan. Dia harus diurus. Saya cari keterangan. Nelpon pakai bahasa Belanda yang masih baik, karena

Dalam episode ini diceritakan bahwa pada siang hari di lapangan bola, Upin dan kawan-kawan sedang bermain bola bersama dan Jarjit tidak sengaja menendang bola ke