Ֆորդ-ֆալկերսոնի ալգորիթմ
Ֆորդ-ֆալկերսոնի ալգորիթմ | |
---|---|
Տեսակ | ալգորիթմ և գրաֆների ալգորիթմ |
Անվանված է | L. R. Ford, Jr.? և D. R. Fulkerson? |
Ֆորդ–Ֆալկերսոնի ալգորիթմը որոշում է տրանսպորտային ցանցերում առավելագույն հոսքերի հայտնաբերման խնդիրը։
Ալգորիթմի գաղափարը հետևյալում է. սկզբնապես հոսքի մեծությանը վերագրվում է 0։ նշանակություն՝ բոլոր համար։ Ապա հոսքի մեծությունը ինտերատիվ մեծանում է՝ մեծացնող ուղու ընդլայնման հետևանքով ( s աղբյուրից t հոսանքին ուղին, որի երկայնքով կարելի է ավելի շատ հոսք ուղարկել)։ Գործընթացը շարունակվում է, քանի դեռ հնարավոր է գտնել մեծացնող ուղի։
Ալգորիթմ[խմբագրել | խմբագրել կոդը]
Ոչ պաշտոնական բնութագրում[խմբագրել | խմբագրել կոդը]
- Բոլոր հոսքերը զրոյացնում ենք։ Մնացորդային ցանցը սկզբնապես համընկնում է ելակետային ցանցի հետ։
- Մնացորդային ցանցում գտնում ենք աղբյուրից դեպի հոսանք ցանկացած ուղի։ Եթե այդպիսի ուղի չկա՝ կանգ ենք առնում։
- Գտնված ուղով բաց ենք թողնում (այն անվանվում է մեծացնող ուղի կամ մեծացնող շղթա) առավելագույն հնարավոր հոսքը։
- Մնացորդային ցանցում հայտնաբերված ուղու վրա փնտրում ենք նվազագույն բացթողնման հնարավորությամբ եզրը ։
- Գտնված ուղու յուրաքանչյուր եզրի համար մեծացնում ենք հոսքը , իսկ դրա հակառակ ուղղությամբ՝ փոքրացնում ։
- Մոդիֆիկացնում ենք մնացորդային ցանցը։ Բոլոր եզրերի համար գտնված ուղու, ինչպես նաև դրան հակառակ եզրի վրա, դուրս ենք բերում նոր բացթողման հնարավորությունը։ Եթե այն դառնում է ոչ զրոյական, ապա եզրն ավելացնում ենք մնացորդային ցանցին, իսկ եթե զրոյական է՝ ջնջում ենք։
- Վերադառնում ենք 2-րդ քայլին։
Կարևոր է, որ ալգորիթմը չի հստակեցնում, թե կոնկրետ որ ուղին ենք մենք փնտրում 2-րդ քայլում կամ, թե ինչպես ենք մենք դա անում։ Այդ իսկ պատճառով ալգորիթմը համապատասխանում է միայն ամբողջ բացթողնման հնարավորություններին, սակայն անգամ դրանց համար, բացթողնման հնարավորությունների մեծ նշանակությունների դեպքում, այն կարող է շատ երկար աշխատել։ Եթե բացթողնման հնարավորությունները նյութական են, ապա կարող է անվերջ երկար աշխատել՝ չհամընկնելով օպտիմալ որոշմանը։ (տես օրինակը ներքևում).
Եթե փնտրենք ոչ ցանկացած ուղի, այլ ամենակարճը, կստացվի Էմոնդս-Կարպի ալգորիթմը կամ Դինիցի ալգորիթմը.
Պաշտոնական նկարագրություն[խմբագրել | խմբագրել կոդը]
Տրված է գրաֆը բացթողնման հնարավորությունով և հոսքով՝ u-ից v եզրերի համար։ Պետք է գտնել s աղբյուրից t հոսանքին առավելագույն հոսքը։ Ալգորիթմի յուրաքանչյուր քայլի համար գործում են բոլոր հոսքերի համար գործող պայմանները։
- . -ից հոսանքը չի գերազանցում բացթողնման հնարավորությունը։
- .
- բոլոր կապերի համար , բացի և ։ Կապերի միջով անցնելիս հոսքը չի փոխվում։
Մնացորդային ցանց - բացթողման հնարավորությունով ցանց և առանց հոսքի։
Մուտք Գրաֆ բացթողման հնարավորությունով , աղբյուր և հոսանք
Ելք Առավելագույն հոսք -ից
- բոլոր եզրերի համար
- Քանի դեռ ուղի կա -ից , այնպիսին, որ բոլոր եզրերի համար ։
- Գտնել
- Յուրաքանչյուր եզրի համար
Ուղին կարող է գտնվել.օրինակ, լայնությամբ փնտրման (Էմոնդս-Կարպի ալգորիթմ) կամ խորությամբ փնտրման ։
Բարդությունը[խմբագրել | խմբագրել կոդը]
Արդեն գոյություն ունեցող հոսքերին հոսք ավելացնելով առավելագույն հոսքը կստացվի այն դեպքում, երբ հնարավոր չի լինի գտնել մեծացող հոսք։ Այդուհանդերձ, եթե բացթողնման հնարավորության մեծությունը իռացիոնալ թիվ է, ապա ալգորիթմը կարող է անվերջ աշխատել։ Ամբողջ թվերի դեպքում այդպիսի խնդիր չի առաջանում և աշխատանքի ժամանակը սահմանափակ է O(E*f), որտեղ E - գրաֆում եզրերի թիվն է, f - գրաֆում առավելագույն հոսքը, քանի որ ամեն մեծացող ուղի կարող է գտնվել O(E) համար և մեծացնում է հոսքը առնվազն 1-ով։
Չհամընկնող ալգորիթմի օրինակ[խմբագրել | խմբագրել կոդը]
Դիտարկենք հետևյալ ցանցի օրինակը աղբյուրով, հոսանքով, = , = , = եզրերի բացթողնման հնարավորություններով և մնացած բոլոր եզրերի բացթողնման հնարավորություններով, որոնք հավասար են ամբողջ թվին. հաստատունը ընտրված է այնպես, որ . Օգտագործում ենք ուղիներ մնացորդային գծագրից, որոնք բերված են աղյուսակում, ընդ որում՝ , և .
Քայլ | Գտնված ուղի | Ավելացված հոսք | Մնացորդային բացթողնման հնարավորություններ | ||
---|---|---|---|---|---|
0 | |||||
1 | |||||
2 | |||||
3 | |||||
4 | |||||
5 |
Նկատենք, որ 1 քայլից հետո, ինչպես և 5 քայլից հետո , և եզրերի մնացորդային հնարավորությունները ունեն , և ձևը, համապատասխանաբար, որևէ բնական համար։ Դա նշանակում է, որ կարող ենք օգտագործել , , և մեծացող ուղիները անվերջ անգամներ և այդ եզրերի մնացորդային բացթողնման հնարավորությունները միշտ կլինեն նույն ձևով։ 5-րդ քայլից հետո ամբողջական հոսքը հավասար է ։ Անվերջ ժամանակահատվածում ամբողջական հոսքը կհամընկնի , այն դեպում, որ առավելագույն հոսքը հավասար է " Այսպիսով, ալգորիթմը ոչ միայն անվերջ երկար է աշխատում, այլ նաև լավագույն որոշմանը չի համընկնում[1]։
Օրինակ[խմբագրել | խմբագրել կոդը]
Հետևյալ օրինակը ցույց է տալիս Ֆորդ-Ֆալկերսոնի ալգորիթմի առաջին քայլերը չորս կապերով տրանսպորտային ցանցում` A աղբյուրով ևD հոսքով։ Այս օրինակը ցույց է տալիս ամենավատ դեպքը։ Լայնությամբ փնտրման դեպքում ալգորիթմին պետք կգա ընդամենը 2 քայլ.
Ուղի | Բացթողնման հնարավորություն | Արդյունք |
---|---|---|
Սկզբնական տրանսպորտային ցանց | ||
1998 քայլ հետո … | ||
Վերջնական ցանց |
Ծանոթագրություններ[խմբագրել | խմբագրել կոդը]
- ↑ Zwick, Uri (1995 թ․ օգոստոսի 21). «The smallest networks on which the Ford-Fulkerson maximum flow procedure may fail to terminate». Theoretical Computer Science. 148 (1): 165–170. doi:10.1016/0304-3975(95)00022-O.