Algoritma Ford-Fulkerson MENENTUKAN ALIRAN MAKSIMUM DENGAN ALGORITMA FORD FULKERSON DAN PREFLOW PUSH

4.3 Algoritma Ford-Fulkerson

Secara garis besar, prosedur algoritma Ford-Fulkerson sudah tersirat dalam bukti teorema 4.3 dan prosedur untuk mengkonstruksi aliran baru yang nilainya lebih besar dari nilai aliran lama sudah tersirat dalam lemma 4.2. Namun prosedur untuk mendapatkan lintasan peningkatan tidak tersirat dalam lemma maupun bukti teorema sebelumnya. Untuk mendapatkan lintasan yang demikian, akan digunakan teknik pelabelan titik, yang pada prinsipnya melabel titik-titik dengan teknik tertentu dimulai dari titik , kemudian dilanjutkan melabel titik yang lain. Jika dengan teknik tersebut bisa melabel titik , maka dengan teknik “prosedur balik” lintasan ditemukan. Tetapi sebaliknya, jika titik tidak bisa dilabel, maka tidak ada lintasan seperti itu pada . Secara sistematis algoritmanya adalah sebagai berikut. Langkah 1: misalkan sebuah aliran dari ke pada . Boleh dimulai dengan aliran bernilai nol, yaitu , = 0, ∀ , �ΓN. Dilanjutkan ke Routin-Pelabelan. Langkah 2: Routin-Pelabelan 2.1 Label = , +, = ~. Titik telah terlabel dan belum teramati. Sebuah titik dikatakan telah teramati jika semua titik yang dapat dilabel dari titik sudah terlabel. 2.2 Pilih sebarang titik yang terlabel tetapi belum teramati, misalkan titik tersebut . Untuk ∀ ∃ , ΓN, belum berlabel dan , 0, maka label = , −, dengan = , , . Sekarang titik telah terlabel, tetapi belum teramati. Untuk ∀ ∃ , ΓN, belum berlabel dan , , , maka label = , +, dengan = min , , − , . Sekarang titik terlabel tetapi belum teramati, sedangkan titik telah terlabel dan teramati. 2.3 Ulangi langkah 2.2 sampai: 1 titik terlabel, atau; 2 semua titik terlabel telah teramati tetapi titik tak terlabel; 3 jika titik terlabel, lanjut ke langkah 3; 4 jika semua titik terlabel telah teramati tetapi titik tak terlabel, maka BERHENTI. Aliran adalah aliran maksimum pada jaringan . Langkah 3: dengan prosedur “balik”, temukan lintasan peningkatan dengan iP adalah label . Langkah 4: tingkatkan nilai aliran sebesar label , berdasarkan lintasan peningkatan dengan menggunakan “Routine-Peningkatan”: 4.1 Misal: = lanjutkan ke langkah 4.2. 4.2 Jika label = , +, tingkatkan nilai , dengan = . Jika label = , −, turunkan nilai , dengan = . 4.3 Jika = , hapus semua label. Pada tahap ini diperoleh aliran baru dengan nilai = iP + nilai aliran lama. Ganti aliran dengan aliran yang baru, dan kembali ke langkah 1 Budayasa, 2007: 240-242.

4.4 Algoritma Preflow-Push