• Tidak ada hasil yang ditemukan

Struktur Data & Algoritme (Data Structures & Algorithms) Ide Algoritma Ford-Fulkerson. Motivation. 1-Source, 1-Target Problem.

N/A
N/A
Protected

Academic year: 2021

Membagikan "Struktur Data & Algoritme (Data Structures & Algorithms) Ide Algoritma Ford-Fulkerson. Motivation. 1-Source, 1-Target Problem."

Copied!
8
0
0

Teks penuh

(1)

Struktur Data & Algoritme

(

Data Structures & Algorithms

)

Fakultas Ilmu Komputer Universitas Indonesia Semester Genap - 2000/2001

Version 1.0 - Internal Use Only

Suryana Setiawansetiawan@cs.ui.ac.id

Maximum Flow

Motivation

„ Banyak masalah graph dalam dunia nyata berkaitan

dengan aliran material

„ Cairan: dalam suatu jaringan pipa yang mengalirkan minyak, berapa kapasitas debit (volume yang mengalir per satuan waktu) minyak melalui jaringan tersebut ?

„ Lalu lintas: dalam suatu jaringan jalan, berapa daya dukung jaringan jalan tersebut?

„ Proses: di bagian mana terjadinya bottleneck proses tersebut?

SDA/Max Flow/Sur/V1.0/3

1-Source, 1-Target Problem

„ Flow network Graph

„ Verteks pada symmetrical directed graph dihubungkan dengan sisi-sisi yang berupa saluran dengan

• c[u,v] kapasitas debit tertentu antara verteks u dan v •c[u,v] ≥ 0

•Jika c[u,v] berarti tidak ada sisi yang menghubungkan u dan v

• f[u,v] aliran yang terjadi antara verteks u dan v •f[v,u] = -f[u,v]

•f[u,v] ≤ c[u,v]

• cr[u,v] kapasitas debit sisa/residual yang tidak digunakan antar verteks u dan v

•cr[u,v] = c[u,v] – f[u,v]

„ Dua verteks disebut sebagai source s dan target/sink t

Ide Algoritma Ford-Fulkerson

„ Mendapatkan path residual antara s dan t, jika ada

maka

„ “aliri” melalui path tersebut dengan debit sesuai dengan residu terkecil di dalam path tersebut

„ Update setiap f[u,v] untuk setiap (u,v) dalam path sesuai dengan debit tersebut

„ Hitung residual cr[u,v] = c[u,f] – f[u,v] untuk setiap (u,v) dalam path sebagai residual terbaru

„ Ulangi hingga tidak ada path residual antara s dan t

(2)

SDA/Max Flow/Sur/V1.0/5

Algoritma Ford-Fulkerson

„ Membuat graph c simetris, jika ada c[u,v] sementara c[v,u] tidak ada dengan membuat c[v,u] = 0

„ Inisialisasi f[u,v] = f[v,u] = 0 untuk setiap (u,v) dalam graph „ Inisialisasi cr[u,v] = c[u,v] untuk setiap (u,v) dalam graph „ While (path=findPathDalamcr(s,t)) {

„ Tambahdebit = minimum {cr[u,v] | untuk setiap (u,v) dalam path}

„ For setiap sisi (u,v) dalam path { • f[u,v] += cr[u,v];

• f[v,u] = -f[u,v];

„ }

„ Update cr[u,v] = c[u,v] – f[u,v] untuk setiap (u,v) dalam path

Besarnya Aliran Maximum

„ Graph MaxFlow tidak bersifat unik (bisa beberapa

solusi) tetapi besarnya debit aliran unik (maksimum)

„ Aliran maximum dalam graph diperoleh dengan

menjumlahkan total flow yang keluar dari s atau total flow yang masuk ke t

SDA/Max Flow/Sur/V1.0/7

Contoh

s t v4 v3 v2 v1 16 13 10 4 12 9 14 20 4 7 -0 0 0 0 0 t 4 -0 7 0 0 v4 0 14 -0 4 0 v3 20 0 9 -0 0 v2 0 0 10 12 -0 V1 0 0 13 0 16 -S t v4 v3 v2 v1 s c Kapasitas

Contoh: Inisialisasi

-0 0 0 0 0 T 0 -0 0 0 0 V4 0 0 -0 0 0 V3 0 0 0 -0 0 v2 0 0 0 0 -0 V1 0 0 0 0 0 -S t v4 v3 v2 v1 s f -0 0 0 0 0 t 4 -0 7 0 0 v4 0 14 -0 4 0 v3 20 0 9 -0 0 v2 0 0 10 12 -0 V1 0 0 13 0 16 -S t v4 v3 v2 v1 s cr

(3)

SDA/Max Flow/Sur/V1.0/9 s t v4 v3 v2 v1 16 13 10 4 12 9 14 20 4 7

Misalnya diperoleh path s-v1-v2-v3-v4-t Debit: min{16,12,9,14,4} = 4

Update setiap f[u,v] += 4 dan

f[v,u] = -f[u,v], untuk setiap (u,v) dalam path

Contoh: pencarian path 1

Contoh: iterasi 1

--4 0 0 0 0 T 4 --4 0 0 0 V4 0 4 --4 0 0 V3 0 0 4 --4 0 v2 0 0 0 4 --4 V1 0 0 0 0 4 -S t v4 v3 v2 v1 s w -4 0 0 0 0 t 0 -4 7 0 0 v4 0 10 -4 4 0 v3 20 0 5 -4 0 v2 0 0 10 8 -4 V1 0 0 13 0 12 -S t v4 v3 v2 v1 s cr

Aliran Kapasitas Tersisa

SDA/Max Flow/Sur/V1.0/11 s t v4 v3 v2 v1 12 13 10 4 8 5 10 20 7 4 4 4 4 4

Misalnya diperoleh path s-v1-v3-v4-v2-t Debit: min{12,10,10,7,20}=7

Update setiap f[u,v] += 7 dan

f[v,u] = -f[u,v], untuk setiap (u,v) dalam path

Contoh: Pencarian path 2

--4 0 -7 0 0 T 4 --11 7 0 0 V4 0 11 --4 -7 0 V3 7 -7 4 --4 0 v2 0 0 7 4 --11 V1 0 0 0 0 11 -S t v4 v3 v2 v1 s f -4 0 7 0 0 t 0 -11 0 0 0 v4 0 3 -4 11 0 v3 13 7 5 -4 0 v2 0 0 3 8 -11 V1 0 0 13 0 5 -S t v4 v3 v2 v1 s cr

Aliran Kapasitas Tersisa

(4)

SDA/Max Flow/Sur/V1.0/13

Misalnya diperoleh path s-v3-v1-v2-t Debit: min{13,11,8,13}=8

Update setiap f[u,v] += 8 dan

f[v,u] = -f[u,v], untuk setiap (u,v) dalam path

s t v4 v3 v2 v1 5 13 3 11 8 5 3 13 7 11 4 4 11 4 7

Contoh: Pencarian path 3

--4 0 -15 0 0 T 4 --11 7 0 0 V4 0 11 --4 1 -8 V3 15 -7 4 --12 0 v2 0 0 -1 12 --11 V1 0 0 8 0 11 -S t v4 v3 v2 v1 s f -4 0 15 0 0 t 0 -11 0 0 0 v4 0 3 -4 3 8 v3 5 7 5 -12 0 v2 0 0 11 0 -11 V1 0 0 5 0 5 -S t v4 v3 v2 v1 s cr

Aliran Kapasitas Tersisa

Contoh: iterasi 3

SDA/Max Flow/Sur/V1.0/15

Tersisa path s-v3-v2-t Debit: min{5,4,5}=4

Update setiap f[u,v] += 4 dan

f[v,u] = -f[u,v], untuk setiap (u,v) dalam path

s t v4 v3 v2 v1 5 5 11 3 5 3 5 7 11 12 4 11 4 15 8

Contoh: Pencarian path 4

Contoh: iterasi 4

--4 0 -19 0 0 T 4 --11 7 0 0 V4 0 11 -0 1 -12 V3 19 -7 0 --12 0 v2 0 0 -1 12 --11 V1 0 0 12 0 11 -S t v4 v3 v2 v1 S w -4 0 19 0 0 t 0 -11 0 0 0 v4 0 3 -0 3 12 v3 1 7 9 -12 0 v2 0 0 11 0 -11 V1 0 0 1 0 5 -S T v4 v3 v2 v1 s cr

(5)

SDA/Max Flow/Sur/V1.0/17

Tidak adalagi path dari s ke maka selesai dengan graph aliran maksimum dinyatakan dalam f[u,v] dengan mengambil harga yang positif

s t v4 v3 v2 v1 5 1 11 3 9 3 1 7 11 12 11 4 19 12

Contoh: Pencarian path 5

s t v2 v1 11 12 1 12 19 4 7

COntoh: maximum flow hasil

„ Aliran maksimum dari s ke t adalah 23

SDA/Max Flow/Sur/V1.0/19

Masalah Algoritma

„ Pencarian path

merupakan hal yang paling kritikal dalam algoritma ini.

„ Kasus terburuk jika

terjadi situasi sbb.

„ Bila path yang

ditemukan selalu melalui v2-v3 atau v3-v2 maka iterasi akan terjadi dalam jumlah yang besar

„ Setiap iterasi debit dalam path yang ditemukan hanya 1 s t v3 v1 1 1000000 1000000 1000000 1000000

Pencarian path

„ Varian Algoritma Edmonds-Karp

„ Dengan BFS: “Shortest path” dengan arti jumlah sisi dalam path yang paling sedikit

(6)

SDA/Max Flow/Sur/V1.0/21

Analisis Algoritma

„ Pencarian flow path dilakukan pada maksimum E

buah sisi, jadi O(E).

„ Banyak iterasi adalah sama dengan jumlah flow path

yang ditemukan. Jika jumlah tsb adalah |f*| maka kompleksitas waktu adalah O(E |f*|)

Multi-source, Multi-target Problem

„ Dalam masalah yang lebih nyata source bisa berasal

dari sejumlah verteks menuju ke sejumlah verteks lainnya.

„ Apakah algoritma Ford-Fulkerson bisa digunakan? „ Contoh: s1 t2 t1 s2 16 13 10 4 12 9 20 4 7 SDA/Max Flow/Sur/V1.0/23 „ Penambahan dummy vertex u/ verteks source dengan sisi

mengarah ke setiap verteks source semula

„ Penambahan dummy vertex u/ vertex target dengan sisi

mengarah dari setiap verteks target semula

„ Setiap sisi yang ditambahkan berkapasitas sangat besar (tak

terhingga!) s1 t2 v2 v1 t1 s2 16 13 10 4 12 9 14 20 4 7 s0 ∞ ∞ t0 ∞

Maximum Bipartite Matching (MBM)

„ Bipartite Graph: dalam suatu undirected graph

G={V,E}, V terpartisi atas dua subset V1 dan V2 dan E’⊆ E dan setiap (u,v) ∈ E’ terpenuhi u ∈ V1 dan v ∈

V2.

„ Bipartite Matching: adalah E’’ dengan E’’⊆ E’, dimana

setiap (u,v) ∈ E’’ serta untuk v’ ≠ v dan u’ ≠ u, tidak

ada (u,v’) atau (u’,v) ∈ E’’.

„ Cardinality dari Bipartite Matching adalah |E’’|

„ Maximum Bipartite Matching adalah matching dengan

(7)

SDA/Max Flow/Sur/V1.0/25

v1 v2 v1 v2 v1 v2

Bipartite Graph, verteks terpartisi atas v1 dan v2

Bipartite Mathing, tidak

maksimal (cardinality 2) Maximal Bipartite Graph (cardinality 3)

Pencarian MBM sebagai Problem MaxFlow

„ Tambahkan verteks source dan sisi-sisi berarah yang

mengarah ke setiap verteks dalam V1 dengan kapasitas 1

„ Tambahkan verteks target dan sisi-sisi berarah yang

mengarah dari setiap verteks dalam V2 dengan kapasitas 1

„ Setiap sisi dalam G adalah sisi dengan kapasitas 1

dan berarah dengan arah dari verteks di V1 ke verteks di V2 SDA/Max Flow/Sur/V1.0/27 v1 v2

Contoh

Contoh Kasus

a b c d 0 0 0 1 1 s t d c b a s c a b c d s t

Sebagai Capacity Network Flow Graph (bobot tidak digambarkan karena berharga 1 atau 0)

Kapasitas dalam representasi matriks

(8)

SDA/Max Flow/Sur/V1.0/29 0 -1 0 0 0 t 0 0 0 0 0 d 1 0 0 -1 0 c 0 0 0 0 0 b 0 0 1 0 -1 a 0 0 0 0 1 s t d c b a s f

Jika path pertama s-a-c-t

a b c d s t 0 1 0 0 0 t 1 0 0 0 0 d 0 0 0 1 0 c 0 0 1 0 0 b 0 1 0 0 1 a 0 0 0 1 0 s t d c b a s cr -1 -1 0 0 0 t 1 0 0 -1 0 d 1 0 -1 0 0 c 0 0 1 0 -1 b 0 1 0 0 -1 a 0 0 0 1 1 s t d c b a s f

Jika path kedua s-b-c-a-d-t

1 1 0 0 0 t 0 0 0 1 0 d 0 0 1 0 0 c 0 0 0 0 1 b 0 0 1 0 1 a 0 0 0 0 0 s t d c b a s cr a c s t SDA/Max Flow/Sur/V1.0/31

„ Tidak ada lagi path dalam cr dari s ke t, maka

maxflow graph

„ Maka maximum matching adalah a-d dan b-c

a b c d s t a b c d

Referensi

Dokumen terkait

Alasan peneliti memilih UKM Fakdakom sebagai obyek penelitian karena UKM Fakdakom kinerjanya bagus, dibuktikan dari atlit di Institut dalam bidang olah raga,

Untuk itu, pada tahun 2018 ini Direktorat Jenderal Anak Usia Dini dan Pendidikan Masyarakat melalui Direktorat Pembinaan Kursus dan Pelatihan menyelenggarakan program

Dari data jumlah kasus leptospirosis dari tahun ke tahun di Kabupaten Klaten selalu ada maka diperlukan suatu penelitian untuk mengetahui apakah faktor perilaku

bahwa berdasarkan hasil evaluasi, Peraturan Walikota Yogyakarta Nomor 72 Tahun 2007 tentang Standar Operasional Prosedur Manajemen Pengamanan Jaringan Komputer pada

Kode Kegiatan/ Output/ Sub Output/ Paket/ Sub Paket Vol Satuan Pemanfaat Tahun Atribut Kesiapan DED

• Lakukan gerak langkah arah mistar dan lakukan tolakan tegak lurus ke atas dengan posisi badan membelakangi mistar, lalu mendarat pada matras menggunakan punggung

Faktor yang menjadi latarbelakang pengunaan campur kode dalam Penelitian mahasiswa program studi Sistem Informasi Universitas Duta Bangsa Surakarta tersebut

New World Rubber Factory telah menerapkan Peraturan Pemerintah Nomor 46 Tahun 2013 tentang Pajak Penghasilan Atas Penghasilan Dari Usaha Yang Diterima Atau