• 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

Gunakan Metode North West Corner, Minimum Cost dan Vogel untuk mendapatkan Basic Feasible Solution.. Gunakan salah satu hasil pada b untuk mendapatkan solusi optimal menggunakan

Dengan menerapkan pembelajaran kooperatif tipe Two Stay Two Stray dengan pendekatan konstruktivisme sebagai solusi pembelajaran pada materi Pertidaksamaan nilai mutlak

Ketika ada getaran maka sensor vibrasi yang telah terhubung dengan Arduino UNO akan menampilkan nilai getaran berupa nilai Acccelerometer pada sudut X yang

Apabila ingin melihat nilai maka dapat meng-klik Nilai pada Layar Jadwal Ujian yang akan menampilkan Layar Nilai dan bila Jadwal Ujian diklik pada Layar Nilai maka akan kembali

Mencari Nilai Maksimal Fungsi F(x,y,z) z Solusi dalam permasalahan nilai optimal fungsi. F(x,y,z) adalah nilai (x,y,z) sehingga kromosomnya adalah kombinasi nilai x, y dan z

Untuk mendukung penulisan penyelesaian program aplikasi pendistribusian beras yang optimal dengan menggunakan Out of Kilter maka perlu di rancang suatu database yang

Bila nilai dari siswa tersebut telah memenuhi SKBM yang ditentukan, maka nilai siswa tersebut akan dimasukkan langsung oleh guru ke dalam berkas nilai.. Bila remedial

berisi alokasi hasil perhitungan dari metode yang dipakai, menu untuk lihat iterasi per langkah dengan menekan menu ‘[Click Here]’, dibawahnya terdapat hasil total cost