Algoritma Preflow-Push MENENTUKAN ALIRAN MAKSIMUM DENGAN ALGORITMA FORD FULKERSON DAN PREFLOW PUSH

4.4 Algoritma Preflow-Push

Algoritma Preflow-Push dapat mencari nilai aliran maksimum dengan aliran-semu pseudo-flow f pada jaringan. Misalkan, jaringan = , dengan titik dan busur, sebuah aliran-semu pseudo-flow f merupakan sebuah pengaitan bilangan real non negatif pada busur-busur di yang memenuhi , , ∀ , . Sebuah aliran-semu pseudo-flow f dikatakan sebuah preflow, jika memenuhi , − , ∀ ≠ , , dengan , adalah , , , dan , adalah , , . Dengan = , − , merupakan excess pada titik . Jelas sebuah preflow f adalah aliran jika = 0 untuk setiap ≠ , Thulasiraman Swamy, 1992: 411. Misalkan = , dengan preflow f. Maka = , dikatakan jaringan sisa terhadap preflow jika setiap busur , membangun sebuah busur , jika , , , dan membangun sebuah busur , jika , 0. Busur-busur pada jaringan sisa disebut busur sisa. Pada kasus ini , dinamakan busur maju, dan sebaliknya , dinamakan busur balik. dikatakan kapasitas busur sisa jika, = − , jika busur maju , jika busur balik. Suatu pelabelan valid pada = , adalah pemetaan bilangan bulat non negatif ke suatu titik di sedemikian sehingga = , = 0 dan + 1 untuk setiap busur sisa , . Sebuah titik disebut titik aktif jika ≠ , , dan 0 Thulasiraman, 1992: 412. Algoritma Preflow-Push dimulai dengan preflow f yang nilainya sama dengan kapasitas busur untuk setiap busur yang meninggalkan titik sumber dan bernilai nol untuk yang lainnya. Selanjutnya inisialisasi label dengan pelabelan valid = , = 0, dan + 1 untuk setiap busur sisa , . Algoritma Preflow-Push secara berulang-ulang menggunakan dua operasi dasar, yaitu Push dan Relabel yang bekerja sebagai berikut. Push , Applicability. is active, , and = + 1. Action. Set = ⁡{ , , } and do the following. 1. Increase , by if , is a forward edge, otherwise decrease , by . 2. Decrease by and increase by . Note: 0 because both and , are positive. Relabel Applicability. is active, and for every , , . Action. Set = , { + 1} Thulasiraman, 1992: 412. Misalkan titik bukan titik sumber maupun titik tujuan yang aktif 0, maka pilih titik tersebut dan lakukan push dan relabel secara berulang sebagai berikut. Langkah 1: jika ada busur , yang admissible = + 1 , maka lakukan push = min{ , , } 1 tingkatkan aliran , sebesar jika , busur maju, dan penurunan aliran , sebesar jika , busur balik, 2 turunkan sebesar dan tingkatkan sebesar , dengan 0. Langkah 2: jika tidak ada busur , yang admissible , maka lakukan relabel, dengan mengganti dengan label jarak sebesar = min{ + 1}. Lakukan push dan relabel secara berulang sehingga tidak ada lagi titik yang aktif. Pendorongan preflow f dari ke meningkatkan aliran , dan dengan peningkatan sebesar = min{ , , }, dan penurunan , dan dengan nilai yang sama. Setelah dilakukan pendorongan preflow f dari ke , jika , = 0 dikatakan jenuh f saturated, selainnya dikatakan tak jenuh f unsaturated. Algoritma Preflow-Push akan berhenti ketika tidak ada lagi titik aktif.

4.5 Algoritma Preflow-Push dengan Software GIDEN