Tutorial pe matematică discretă

Potokomvsetimezhduvershinoyt (sursa) și s (de scurgere) este un set de numere Sij, (de exemplu, numărul de „încărcare“ condiționată, efectuate cu vârful i trece prin punctul număr cu numărul j ..), satisfăcând cele patru condiții:

3) în cazul în care nodul cu indicele i - intermediar (nu coincide cu sursa și drena),

T. e. numărul de „mărfuri exportate“ din partea de sus i, este numărul de „mărfuri“ importate în acest summit;

4) cantitatea de „încărcare“, exportate din sursă t, trebuie să fie egal cu numărul de mărfuri importate în scurgere s:

Numărul A este mărimea fluxului, sau pur și simplu de flux între t și s.

În cele ce urmează avem nevoie de următoarea definiție:

Să presupunem că avem o secțiune între noduri s și t. Apoi, secțiunea transversală este suma capacităților de trecere a nervurilor incluse în această secțiune. Secțiunea transversală se numește minim (maxim), în cazul în care valoarea sa este minimă (maximă).

Teorema Ford - Fulkerson (1955). Debitul maxim între noduri s și t este egală cu secțiunea transversală minimă între aceste noduri.

Dovada acestei teoreme este constructiva (m. E. arată cum să găsească debitul maxim dorit), cu toate acestea prezentate mai jos.

  1. Mai întâi dovedesc că orice flux între noduri și T s este mai mică sau egală cu valoarea oricărei secțiuni. Având în vedere un anumit debit și o secțiune. Amploarea acestui flux este format din variabile „Produse“ purtate de toate nodurile vozmozhnymputyam T în s. Fiecare cale trebuie să aibă o muchie comună cu această secțiune. Deoarece fiecare secțiune de margine nu poate fi tradus în „încărcare“ totală mai mult decât capacitatea sa, astfel încât suma tuturor mărfurilor este mai mică sau egală cu suma tuturor capacităților individuale ale marginilor secțiunii. Afirmația este dovedită.

Rezultă că orice flux este mai mică sau egală cu valoarea secțiunii transversale minimă și deci debitul maxim este mai mică sau egală cu valoarea secțiunii minime.

  • Demonstrăm acum inegalitatea inversă. Să fie niște cij flux (unele flux este întotdeauna acolo, de exemplu, la zero, atunci când toate cij = 0). Să ne marchează vârfurile graficului, și cred că toate vârfurile etichetate formează o multitudine de Y. blaturi tagging sunt realizate din sursa. Fiecare marca de sus (în cazul în care vârful pot fi etichetate) este format din două numere: în primul rând - un „+“ sau „-“ numărul superior (de la Y), c care este conectat un nou marcați vârful, iar al doilea - (necesar trebuie să fie pozitiv) - acesta este de fapt aditivul pentru fluxul, care poate fi în continuare „condus“ în partea de sus a sursei în comparație cu fluxul de alimentare.
  • Mai precis, o pluralitate de Y marcat vârfuri se formează după cum urmează:

    Y t aparține sursa și pavilionul său (0, ∞); al doilea număr, relativ vorbind, este infinit - ceea ce înseamnă că este numărul atât de mare, așa cum vom avea nevoie de matematică discrete;

    în cazul în care nodul i aparține Y și CJI 0 este egal cu dj = min i, qij - cij>. Rețineți aici că numărul de di - al doilea număr este marcat deja vertex i și i + semn înainte de numărul înseamnă că arcul care leagă nodurile (i, j) este o consecință directă (și nesaturate);

    în cazul în care nodul k aparține Y și SJK> 0 (arc invers), atunci nodul cu numărul j trebuie să aparțină Y și eticheta acestuia este egală cu (-. la dj), unde semnul minus indică faptul că vertex j asociat cu vertexul deja etichetate cu arc invers , dj = nurcă, qjk + CJK>, și este evident că dj, de asemenea, strict mai mare decât zero. Astfel, construcția set Y este inductiv, t. E. nod nou se adaugă la Y. Dacă acesta este asociat cu un vârf în Y uzhevhodyaschey drept nesaturat sau arc sau un arc de feedback.

    După construirea de Y este completat (este imposibil să se adauge noi noduri), există 2 cazuri.

    1. Fresh (m. E. Vertex s numerotate) nu sunt incluse în setul de vârfuri Y. Apoi, setul de noduri în afara Y Z. graficul nostru de condiție este conectat, astfel încât de la Y, sunt unele margini în Z. Conform regulilor de construcție a Y toate aceste muchii sunt arce saturate drepte (Fig. 7).

    Nervurile se extind dintr-o multitudine de Y la Z. formează o secțiune între nodurile s și t. De asemenea, se observă că suma capacităților individuale ale marginilor acestei secțiuni transversale (și toate aceste margini sunt drepte, saturate) este fluxul t în s. Prin urmare, debitul este maxim (deoarece este egală cu secțiunea transversală a), iar această secțiune este minimă.

    S 2. Partea superioară este inclusă și în Y, și lăsați al doilea număr este sa tagging d s> 0. Apoi, este evident că între vârfurile s și t are un lant (format din muchii dirijate - arce directe și inverse) care leagă aceste noduri

    Schematic este prezentat în Fig. 8.

    t ® · ® · ¬ · ¬ · ® · ® · ¬ · ¬ · ® · ®s

    Rețineți că arcul care merge de la sursă și un arc, o parte din scurgere ar trebui să fie în mod necesar drept. Adăugați DS CJI Îndreptarea arce lanțului (de construcție se poate observa că numărul rezultat este mai mic sau qij egal) și scade acest DS de CJI pentru arce inverse (se poate obține un număr negativ, dar este în mod necesar în valoare absolută mai puțin qij, deoarece pentru a construi un DS £ CJI + qij, ceea ce înseamnă că arcul invers își schimbă direcția, devine un arc drept și „sarcină“ ei va fi egal cu modulul de numere, apoi noi pentru arce din lanțul nostru, precum și „vechi“ CJI pentru toate arcele nu au fost incluse în circuitul nostru, formează un flux nou de vertexul la vertex t s (n Este ușor de verificat argumentul simplu că noile numere ale următoarelor condiții (1) -. (4)) În plus, valoarea noul flux în comparație cu cele vechi a crescut DS> 0. Pentru un nou fir din nou să efectueze aceeași procedură, și așa mai departe ..

    Din moment ce de fiecare dată când debitul este crescut cu cel puțin 1 (lățimi de bandă coaste sunt numere întregi), iar debitul maxim este limitat (valoare minimă secțiune), această procedură nu poate continua la nesfârșit, și, prin urmare, la un pas obține un flux al cărui nod s nu este inclus în Y, m. e. debitul este maxim și egal cu valoarea secțiunii sale minime. Acest lucru dovedește teorema.

    Fundamentarea Ford Teorema - Fulkerson algoritm este de a găsi de fapt, debitul maxim între două noduri (sau dovada că acest flux este un maxim). Un exemplu detaliat cu privire la acest subiect este dat în Sec. 15 „Decizia problemelor tipice.“

    Notă. Dacă acest grafic cu bandwidths nervuri (t. E. Rețeaua) are mai multe surse și canale de scurgere, algoritmul descris mai sus poate fi aplicat după cum urmează. Să introducă o nouă sursă și o nouă chiuvetă, și nouă sursă conectate printr-o margine cu toate sursele, și o nouă chiuvetă - cu toate chiuvete, și capacitățile noilor muchii cred numere arbitrar de mare, astfel încât arcul în orice flux posibil ar fi nesaturat (rechemare nervuri care se extind de la sursă și coaste rulează în turul doi întotdeauna sunt arce drepte). Ulterior, pentru noul Graficul vom rezolva problema fluxului maxim (de la o nouă sursă la o singură chiuvetă nouă). Decizia de a intrat șterge toate marginile și vârfuri.

    Să ne uităm la unele dintre problemele (destul de generale) din teoria grafurilor. Rețineți că, în următoarele secțiuni, vom prezenta numai dovezile cele mai de bază și elementele de probă-cheie citat în cartea lui R. Wilson [6].