Проталкивание предпотока

advertisement
Ïðîòàëêèâàíèå
ïðåäïîòîêà
Êîïåëèîâè÷ Ñ.Â., ìàðò 2013
1
Îïðåäåëåíèå ïðåäïîòîêà
Ïóñòü åñòü îðèåíòèðîâàííûé ãðàô èç n âåðøèí è m ðåáåð. Ïðåäïîëàãàåòñÿ,
÷òî ÷èòàòåëü óæå çíàêîì ñ òåì, ÷òî òàêîå ìàêñèìàëüíûé ïîòîê â îðèåíòèðîâàííîì
ãðàôå ñî ñòîêîì è èñòîêîì. Äîïîëíèì îïðåäåëåíèå ïîòîêà äî ïðåäïîòîêà.
Ó êàæäîé âåðøèíû v åñòü íåîòðèöàòåëüíàÿ öåëàÿ âûñîòà hv è íåîòðèöàòåëüíûé
èçáûòîê exv (â âåðøèíó ìîæåò âòåêàòü áîëüøå, ÷åì âûòåêàòü). Åñëè åñòü
íåíàñûùåííîå ðåáðî u → v, òî hu ≤ hv + 1.
2
Àëãîðèòì ïðîòàëêèâàíèÿ
Èçíà÷àëüíî âûñîòà èñòîêà ðàâíà n, âûñîòû îñòàëüíûõ âåðøèí ðàâíû 0.
Âñå ð¼áðà, èñõîäÿùèå èç èñòîêà íàñûùåíû.  âåðøèíàõ, êóäà âåäóò ýòè
ðåáðà ëåæèò èçáûòîê. Âûñîòû ñòîêà è èñòîêà ôèêñèðîâàíû (íå ìåíÿþòñÿ
ïî õîäó àëãîðèòìà). Ó êàæäîé âåðøèíû åñòü ñïèñîê ñìåæíûõ ðåáåð è
óêàçàòåëü íà ¾òåêóùåå ðåáðî¿. Èíèöèàëèçàöèÿ çàêîí÷åíà, äàëåå ïðîèñõîäèò
ñëåäóþùèé öèêë:
1. Ïîêà åñòü âåðøèíà v (íå ñòîê è íå èñòîê) ñ íåíóëåâûì èçáûòêîì.
Áåðåì òåêóùåå ðåáðî èç v. Ïóñòü îíî âåäåò â x.
2. Åñëè òåêóùåå ðåáðî íå íàñûùåííî, è hv = hx + 1, òî òîëêàåì ïî ðåáðó
ìèíèìóì èç èçáûòêà è îñòàòî÷íîé ïðîïóñêíîé ñïîñîáíîñòè.
3. Åñëè ýòî íå òàê, ïåðåõîäèì ê ñëåäóþùåìó ðåáðó (åñëè íå êîíåö ñïèñêà).
4. Åñëè ñïèñîê ðåáåð çàêîí÷èëñÿ, ïîäíèìàåì âåðøèíó v äî âûñîòà min
(hu + 1),
u
ãäå u âåðøèíû â êîòîðûå èç v âåäóò íåíàñûùåííûå ðåáðà.
3
Êîððåêòíîñòü àëãîðèòìà
Òåîðåìà 1. Âûñîòà âåðøèíû, èç êîòîðîé åñòü ïóòü â ñòîê èç íåíàñûùåííûõ
ðåáåð, íå áîëåå
n − 1.
Äîêàçàòåëüñòâî. Åñòü ïóòü, çíà÷èò åñòü ïðîñòîé ïóòü. Äëèíà ïðîñòîãî
ïóòè íå áîëåå n−1 ðåáåð. Âûñîòà ñòîêà 0, èçìåíåíèå âûñîòû ïî íåíàñûùåííîìó
ðåáðó íå áîëåå +1.
Åñëè âåðøèíà ïîäíÿëàñü äî óðîâíÿ n, òî èç íåå íåò è íå
áóäåò ïóòè äî ñòîêà.
Ñëåäñòâèå.
Ëåììà. Åñëè â âåðøèíå åñòü èçáûòîê, òî â íåå åñòü ïóòü èç èñòîêà,
ïî êîòîðîìó òå÷åò ïîòîê.
1
Äîêàçàòåëüñòâî ïðåäñòàâëÿåò èç ñåáÿ äåêîìïîçèöèþ ïðåäïîòîêà íà ïðîñòûå
ïóòè. Äàâàéòå ïðåäïîòîê äîïîëíèì äî ïîòîêà. Äëÿ ýòîãî èç êàæäîé âåðøèíû
ñ èçáûòêîì x ïóñòèì ôèêòèâíîå íàñûùåííîå ðåáðî â ñòîê ïðîïóñêíîé ñïîñîáíîñòè
x. À äåêîìïîçèðîâàòü ïîòîê ìû óìååì.
2n − 2
Åñëè èçáûòîê èç âåðøèíû íåëüçÿ ïðîòîëêíóòü â ñòîê (íåò ïóòåé), èçáûòîê
àâòîìàòè÷åñêè áóäåò âûòàëêèâàòüñÿ â èñòîê. Ïî ëåììå èìååì ïóòü èç
èñòîêà â âåðøèíó ïî ðåáðàì ñ íåíóëåâûì ïîòîêîì, à çíà÷èò, åñòü ïóòü èç
âåðøèíû â èñòîê ïî íåíàñûùåííûì ðåáðàì (âçÿëè ïóòü èç îáðàòíûõ ðåáåð).
Åñòü ïóòü, çíà÷èò åñòü ïðîñòîé ïóòü, åãî äëèíà íå áîëåå n − 2 ðåáåð (ò.ê.
÷åðåç ñòîê ýòîò ïóòü íå ïðîõîäèò). Âûñîòà èñòîêà ðàâíà n. Çíà÷èò, âûñîòà
âåðøèíû ñ èçáûòêîì íå áîëåå 2n − 2. Çíà÷èò, âûñîòà ëþáîé âåðøèíû íå
áîëåå 2n − 2.
.
Äîêàçàòåëüñòâî. Èçíà÷àëüíî âñå ðåáðà èç èñòîêà íàñûùåíû, åñëè ñåé÷àñ
íåêîòîðîå ðåáðî èç èñòîêà íå íàñûùåíî, çíà÷èò ïî íåìó ïðîèçîøåë òîë÷îê
â îáðàòíóþ ñòîðîíó. Òîëêàòü â èñòîê ìîæíî òîëüêî èç âåðøèí ñ âûñîòîé
n + 1, âûñîòà íå óìåíüøàåòñÿ, çíà÷èò, ñåé÷àñ îíà íå ìåíüøå n + 1, çíà÷èò,
ïî
íå ñóùåñòâóåò ïóòè èç ýòîé âåðøèíû â ñòîê ïî íåíàñûùåííûì
ðåáðàì.
Âî-ïåðâûõ, îí êîíå÷åí, òàê êàê âûñîòû âñåõ âåðøèí îãðàíè÷åíû ñâåðõó,
à êîãäà âûñîòû íå ìåíÿþòñÿ, óìåíüøàåòñÿ ïîòåíöèàë P exv hv .
Âî-âòîðûõ, êîãäà àëãîðèòì îñòàíîâèòñÿ, èçáûòîê áóäåò òîëüêî â èñòîêå
è ñòîêå. Ïðè ýòîì íå áóäåò ñóùåñòâîâàòü äîïîëíÿþùåãî ïóòè èç èñòîêà â
ñòîê. Çíà÷èò, ïî òåîðåìå Ôîðäà-Ôàëêåðñîíà íàéäåííûé ïîòîê ìàêñèìàëåí.
Òåîðåìà 2. Âûñîòà ëþáîé âåðøèíû íå áîëåå
Ëåììà
.
Åñëè àëãîðèòì îñòàíîâèëñÿ, òî íåò äîïîëíÿþùåãî ïóòè èç
èñòîêà â ñòîê ïî íåíàñûùåííûì ðåáðàì.
Òåîðåìå 1
Òåîðåìà 3. Àëãîðèòì êîððåêòåí
4
Îáùàÿ îöåíêà âðåìåíè ðàáîòû
Ìû óæå ïîêàçàëè, ÷òî âûñîòà êàæäîé âåðøèíû íå áîëåå 2n − 2, è
ñóììàðíîå êîëè÷åñòâî ïîäúåìîâ O(n2 ). Ýòè O(n2 ) ïîäúåìîâ âûïîëíÿþòñÿ
â ñóììå çà O(nm), òàê êàê îäèí ïîäúåì âûïîëíÿåòñÿ çà ñòåïåíü âåðøèíû
îïåðàöèé.
O(nm)
Äîêàçàòåëüñòâî. Êàæäóþ âåðøèíó ìû ïîäíèìàåì O(n) ðàç, ìåæäó
ïîäúåìàìè êàæäîå ðåáðî ìû íàñûòèì íå áîëåå îäíîãî ðàçà, òàê êàê, ÷òîáû
åãî ¾ðàçíàñûòèòü¿, âòîðîé êîíåö ðåáðà íóæíî ïîäíÿòü âûøå âåðøèíû.
O(nm)
Äîêàçàòåëüñòâî. Êàæäóþ âåðøèíó ìû ïîäíèìàåì O(n) ðàç, ìåæäó
ïîäúåìàìè ìû îäèí ðàç ïðîáåãàåìñÿ ïî ñïèñêó ðåáåð.
Ìû îöåíèëè êîëè÷åñòâî èíòåðåñíûõ ñîáûòèé ïîäúåì
âåðøèíû; ïðîòàëêèâàíèå, íàñûùàþùåå ðåáðî; ñäâèã òåêóùåãî ðåáðà. Îñòàëîñü
îöåíèòü êîëè÷åñòâî îïåðàöèé âèäà ¾ïîñìîòðåëè íà âåðøèíó, åñëè â íåé åñòü
èçáûòîê, òîëêíóëè åãî ïî òåêóùåìó ðåáðó, èçáûòîê óñïåøíî òîëêíóëñÿ,
Òåîðåìå 4. Ñóììàðíîå êîëè÷åñòâî íàñûùàþùèõ ïðîòàëêèâàíåé
Òåîðåìå 5. Ñóììàðíîå êîëè÷åñòâî ñäâèãîâ ïî ñïèñêó ðåáåð
Çàêëþ÷åíèå.
2
.
.
ðåáðî íå íàñûòèëîñü¿. Îïåðàöèþ òàêîãî âèäà áóäåì íàçûâàòü ¾ïðîñìîòð
âåðøèíû¿. Îäèí ïðîñìîòð âåðøèíû ðàáîòàåò çà O(1). Êîëè÷åñòâî ïðîñìîòðîâ
çàâèñèò îò òîãî, â êàêîì ïîðÿäêå ïåðåáèðàòü âåðøèíû. Ñîáñòâåííî êîëè÷åñòâî
âñåõ îñòàëüíûõ îïåðàöèé ìû óæå îöåíèëè, êàê O(nm). Òåïåðü íàì èíòåðåñíî
òîëüêî êîëè÷åñòâî ïðîñìîòðîâ âåðøèí.
5
Àëãîðèòì çà O(n3 )
Áóäåì ¾ïîêà ãäå-òî åñòü èçáûòîê¿ ïðîñìàòðèâàòü âñå âåðøèíû
â ïðîèçâîëüíîì ïîðÿäêå, êàæäóþ ðîâíî îäèí ðàç.
Îäíà ôàçà àëãîðèòìà ¾ïðîñìîòðåòü âñå
âåðøèíû¿ äåëàåò n ïðîñìîòðîâ. Ðàññìîòðèì âåëè÷èíó ϕ ¾âûñîòà ìàêñèìàëüíîé
âåðøèíû ïîìèìî èñòîêà ñ èçáûòêîì¿. Åñëè â ïðîöåññå îäíîé ôàçû íå áûëî
ïîäúåìîâ âåðøèí, ϕ óìåíüøèëàñü õîòÿ áû íà 1. Åñëè áûëè ïîäúåìû íà
ñóììàðíóþ âûñîòó h, òî ϕ óâåëè÷èëàñü íå áîëåå, ÷åì íà h. Ñóììàðíàÿ
âûñîòà âñåõ ïîäúåìîâ O(n2 ). Çíà÷èò, ϕ óâåëè÷èâàåòñÿ çà âñå âðåìÿ íà
O(n2 ). Çíà÷èò, è óìåíüøàåòñÿ òîæå íà O(n2 ). Êàæäàÿ ôàçà èëè ïîäúåì
(òàêèõ O(n2 )), èëè óìåíüøåíèå ϕ (òàêèõ òîæå O(n2 )). Òàêèì îáðàçîì
êîëè÷åñòâî ôàç O(n2 ), à àëãîðèòì ðàáîòàåò çà O(n3 ).
Àëãîðèòì.
Îöåíêà âðåìåíè ðàáîòû.
6
High level optimization
Ìîäèôèöèðóåì ïðåäûäóùèé àëãîðèòì. Áóäåì êàæäûé ðàç âûáèðàòü
ñàìóþ âûñîêóþ âåðøèíó ñ èçáûòêîì ïîìèìî èñòîêà è ïðîñìàòðèâàòü èìåííî
å¼. Åñëè åñòü ðîâíî îäíà âåðøèíà ìàêñèìàëüíîé âûñîòû, òî çà îäèí ïðîñìîòð
ìû èëè âûçîâåì ïîäúåì, èëè óìåíüøèì ϕ (ìàêñèìàëüíóþ âûñîòó èçáûòêà).
Òàêèì îáðàçîì, åñëè íàì âñåãäà áóäåò âåçòè è âåðøèí ìàêñèìàëüíîé âûñîòó
áóäåò O(1), òî àëãîðèòì áóäåò äåëàòü O(n2 ) ïðîñìîòðîâ è ðàáîòàòü
çà
√
O(nm). Íà ñàìîì äåëå, â õóäøåì ñëó÷àå àëãîðèòì ðàáîòàåò O(n2 m) (áåç
äîêàçàòåëüñòâà). Òåñò íà êîòîðîì m ≈ n2 , è äîñòèãàåòñÿ îöåíêà Θ(n3 )
ìîæíî ïîñòðîèòü ñàìîñòîÿòåëüíî, çà îñíîâó âçÿâ ïîëíûé äâóäîëüíûé ãðàô
ñ ðåáðàìè ïðîïóñêíîé ñïîñîáíîñòè 1 è èçáûòêàìè â ïåðâîé äîëå â êàæäîé
âåðøèíå ðàâíûìè n.
7
Global relabeling optimization
hv ≤ dv , ãäå dv ðàññòîÿíèå îò âåðøèíû v äî
ñòîêà ïî íåíàñûùåííûì ðåáðàì èëè ðàññòîÿíèå îò âåðøèíû v äî èñòîêà
ïî íåíàñûùåííûì ðåáðàì, åñëè ñòîê óæå íå äîñòèæèì. Áîëåå òîãî dv êîððåêòíàÿ âûñîòíàÿ ôóíêöèÿ.
Ïîñ÷èòàåì âñå dv çà O(m). Ýòî äâà bfs-à îò ñòîêà
è îò èñòîêà ïî îáðàòíûì ðåáðàì. Òåïåðü ñäåëàåì hv = dv . Òàêèì îáðàçîì
íåêîòîðûå âûñîòû óâåëè÷èëèñü, à ïðåäïîòîê îñòàëñÿ êîððåêòíûì.
Ðàññòîÿíèå äî ñòîêà.
Global relabeling.
3
Åñëè êàæäûå m ýëåìåíòàðíûõ îïåðàöèé çàïóñêàòü
lobal Relabeling, àëãîðèòì áóäåò ðàáîòàòü íå áîëåå ÷åì â äâà ðàçà ìåäëåííåé.
Ïî ôàêòó íà ñëó÷àéíûõ è ðåàëüíûõ òåñòîâûõ äàííûõ àëãîðèòì áóäåò ðàáîòàòü
â íåñêîëüêî ðàç áûñòðåå.
Èñïîëüçîâàíèå.
G
8
Ïðîñòîé è áûñòðûé àëãîðèòì
1. Ïîêà åñòü âåðøèíà ñ èçáûòêîì
2. Çàïóñòèëè bfs ïî îáðàòíûì ðåáðàì èç ñòîêà è èç èñòîêà, ïîëó÷èëè
âûñîòû âñåõ âåðøèí. Îò bfs-à íàì òàêæå ïðèãîäèòñÿ î÷åðåäü ìàññèâ
âåðøèí, óïîðÿäî÷åííûé ïî âûñîòå.
3. Ïåðåáèðàåì âåðøèíû â ïîðÿäêå óáûâàíèÿ âûñîòû. Äëÿ êàæäîé âåðøèíû
ïåðåáèðàåì âñå ðåáðà è òîëêàåì ïî ðåáðó ìèíèìóì èç èçáûòêà è îñòàòî÷íîé
ïðîïóñêíîé ñïîñîáíîñòè.
Åñëè ïóíêòû 2 è 3 íàçâàòü ôàçîé, òî êàæäàÿ ôàçà ðàáîòàåò çà O(m).
Ôàç, î÷åâèäíî íå áîëåå O(n2 ). Áîëåå òî÷íîé îöåíêè ÿ äîêàçûâàòü íå óìåþ.
Íà ïðàêòèêå àëãîðèòì âåäåò ñåáÿ íå õóæå ÷åì ¾O(n3 ) +
+
¿. Òàêæå çàìå÷ó, ÷òî íà èçâåñòíûõ ìíå òåñòàõ,
ïðèâåäåííûé àëãîðèòì ðàáîòàåò çà O(nm).
High Level Opti-
mization
Global Relabeling
4
Download