Кіріспе

Ағымдық желідегі максималды ағынды есептеу алгоритмі (эквивалентті түрде; ең кішкентай кесім)

Форд-Фулкерсон әдісі немесе Форд-Фулкерсон алгоритмі (FFA) – ағымдық желідегі максималды ағынды есептейтін ашкөз алгоритм. Қалдық графта ағымды арттыру жолдарын табу тәсілі толыққанды сипатталмағандықтан немесе әртүрлі орындалу уақыттары бар бірнеше іске асырылымдарда көрсетілгендіктен, кейде ол "алгоритм" емес, "әдіс" деп аталады. Ол 1956 жылы Л.Р. Форд кіші және Д.Р. Фулкерсон тарапынан жарияланды. "Форд-Фулкерсон" атауы Форд-Фулкерсон әдісінің толыққанды анықталған іске асырылымы болып табылатын Эдмондс-Карп алгоритмі үшін де жиі қолданылады. Алгоритмнің негізгі идеясы мынадай: бастапқы түйінден (көзден) соңғы түйінге (тұнбаға) дейін жол бар болғанда, және жолдың барлық қабырғаларында қолжетімді сыйымдылық болса, біз ағынды осы жолдардың біреуі арқылы жібереміз. Содан кейін біз тағы бір жол іздейміз, және т.б. Қолжетімді сыйымдылығы бар жол – ағымды арттыру жолы деп аталады.

Күрделілігі

Ағынды арттыру жолын графиктегі қалыптасқан ағынға қосу арқылы, егер графикте ағынды арттыру жолы табылмайтын болса, максималды ағынға жетеді. Дегенмен, мұндай жағдайдың ешқашан тумауы мүмкін, сондықтан алгоритм аяқталса ғана жауаптың дұрыс болатынына кепілдік беруге болады. Егер алгоритм шексіз жұмыс істейтін болса, ағын тіпті максималды ағынға да жақындамайды. Алайда, мұндай жағдай тек иррационалды ағын мәндерінде ғана орын алады. Сыйымдылықтар бүтін сандар болған жағдайда, Форд-Фулкерсон алгоритмінің орындалу уақыты (үлкен О нотациясын қараңыз) шектеледі, мұнда – графиктегі қабырғалар саны, ал – графиктегі максималды ағын. Бұл әрбір ағынды арттыру жолын уақыт ішінде табуға болады, және ағын кем дегенде бірлікке артады, жоғарғы шегі . Форд-Фулкерсон алгоритмінің өзгеруі, яғни Эдмондс-Карп алгоритмі, кепілдік берілген аяқталумен және максималды ағын мәніне тәуелсіз орындалу уақытымен сипатталады және уақыт ішінде жұмыс істейді.

Интегралды мысал

Келесі мысалда Форд-Фулкерсон алгоритмінің 4 түйінді, бастапқы және соңғы ағыс желісіндегі алғашқы қадамдары көрсетілген. Бұл мысал алгоритмнің ең нашар жағдайдағы қызметін көрсетеді. Әр қадамда желі арқылы тек бірлік ағын жіберіледі. Егер ендігі бірінші іздеу қолданылса, тек екі қадам ғана қажет болар еді. Жол Сыйымдылығы Нәтижесіндегі ағыс желісі Бастапқы ағыс желісі 1998 жылдан кейін тағы көп қадамдар Соңғы ағыс желісі.

Жолды тапқан кезде ағынның қалай бастапқы түйінден соңғы түйінді қарай "кері итерілетінін" байқаңыз.