Ja, hier. So. Wie kriege ich von da die
Kurve? Flüsse. Das letzte Thema, was ich heute
aus der Grafentheorie machen wollte. Das ist auch das,
wo ich am wackeligsten auf den Füßen bin.
Also das ist heute die beste Chance, mich ordentlich scheitern
zu sehen und so. Oder zumindest irgendwie schwimmen.
Mal gucken. Ich habe die Folien ja gemacht,
also sollte ich mir irgendwas dabei gedacht haben.
Habe ich auch gestern Abend gedacht, als ich mir die
Folien dann nochmal um sie mir ins Kurzzeitgedächtnis zu ballern angeguckt habe.
Mal gucken. Erste Folie,
die überrascht mich noch nicht. Wiederholung, das ist gut
Was haben wir bisher gemacht? Klar, Grundlagen von Grafen,
die Definitionen, Atjazenzmatrix, Atjazenzliste, solche Geschichten, Tiefen- und Breitensuche,
um den Graf zu tranversieren, um alle Knoten zu erreichen und gegebenenfalls,
wenn man das damit machen will, einen Spannbaum aufzubauen.
Haben wir auch noch bessere Techniken kennengelernt, aber auch damit kann man einen Spannbaum aufbauen.
Dann haben wir basierend auf der Tiefensuche, topologisches Sortieren gemacht,
wenn man so irgendwie einen adzyklischen Grafen hat und die kannten quasi interpretiert als Bedingung,
dass man sagt, wenn es eine Kante von A nach B gibt,
dann muss ich A ausgeführt haben,
bevor ich B ausführen kann,
dann kann man so eine topologische Sortierung machen und dann kriegt man eine lineare Ordnung,
eine Knoten raus,
die quasi die To-do-Liste der Linie asortiert
Starke Zusammenhangskomponenten, die Komponenten im Graphen, die so miteinander verbunden sind,
dass es von jedem Knoten zu jedem anderen eine Kante gibt.
Also wenn ihr hier ein Dreieck habt und da ein Dreieck habt,
dann gibt es eine Kante von da nach da,
dann habt ihr zwei stark zusammen als Komponenten.
Konnte man auch mit der Tiefensuche machen. Das war bei
beiden so die Idee, irgendwie eine Tiefensuche drüber laufen
zu lassen und dann irgendwas mit diesen Finishing-Zeiten zu machen.
Also die Zeit waren Knoten wirklich abgearbeitet war.
Also wenn ihr das noch erinnert,
so für jeden hat man dieses DV-Discovery und dieses FV-Finished
gesetzt und mit den F-Werten hat man dann was gemacht.
Minimale Spannbäume, definiert, kann man auch schon mit
tiefen und breiten Suchen machen.
Und dann haben wir halt Algorithmus von Kruskal und Algorithmus
von Prim
dafür kennengelernt
Ja, genau. Und hier ist halt
das Schöne bei den minimalen Spannbaum mit den beiden,
da können jetzt die Kanten auch ein Gewicht haben.
Vorher war das ja so, dass wir die Gewichte eigentlich
überall ignoriert haben. Und dann konnte man vom Algorithmus von Prieben
mit so einer ganz kleinen Änderung zu kürzesten Faden kommen.
Das war den Algorithmus von Deixtra und haben wir da auch
noch zwei Varianten kennengelernt. Bam in Ford und Floyd Warshell.
Bam in Ford hat noch mit negativen Gewichten umgehen können und
Floyd Warshell bestimmt halt relativ effizient für jedes Knotenpaar in kürzesten Pfad.
Ja, das war das zu Grafen und heute machen wir
noch Flüsse.
Fluss. So, sieht erst mal genauso aus
wie bei den gerichteten, gewichteten Grafen auch.
Also wir haben irgendwie so einen Grafen mit gerichteten Kanten und
dann jeder Kante darf ein Gewicht dran stehen.
Und das wollen wir jetzt aber als Flussnetzwerk interpretieren.
Und was man erst mal so als Unterschied sehen kann,
wenn das jetzt irgendwie so ein Flussnetzwerk sein soll,
wir haben hier irgendwie so einen Knoten, wo keine Kanten reingehen.
Das soll die Senke sein, da kommt irgendwie der Fluss
raus und wir haben hier die Quelle, Entschuldigung,
das ist die Quelle.
Und wir haben hier einen Knotentee, dafüren keine Kanten raus.
Das soll die Senke sein, da geht alles hin
Und jetzt kann man damit irgendwie Flüsse modellieren oder was man
vor allem modelliert, ist irgendwie Logistik-Sachen, Materialverlüsse, Informationsflüsse.
Man kann auch ganz viele Probleme in dieses Setting von Flüssen
übertragen und dann hat man Flussalgorithmen lösen. Also zum Beispiel kann man,
man guckt sich alle noch ausstehenden Spiele in der Fußball-Bundesliga an,
macht dann auf bestimmte Art und Weise so einen Flussgrafen,
den kann man ausrechnen, ob irgendwie das Team noch gewinnen kann oder nicht.
Sowas kann man damit auch machen. Und die Idee ist halt,
dass quasi diese Kantengewichtung hier, dass die die Kapazität angibt,
wie viel Fluss entlang dieser Kante sein darf.
Dann kann man zum Beispiel über diesen Weg hier oben von S
nach V von V nach W und von W nach Tee
Da kann man einen Fluss der Wertigkeit 12 maximal rüberschicken,
weil diese Kante von V&AW mit dem 12, die beschränkt das halt.
Und dann kann man halt hier zwölf rüberschicken,
da zwölf rüberschicken, da zwölf rüberschicken.
Und dann kann man sich als nächstes überlegen,
hier stehen ja noch vier aus von S nach V.
Dann kann man die vier zum Beispiel nochmal über SVUXT leiten oder sowas.
Dann hat man noch mehr Fluss von S nach T.
Und die Idee ist halt nachher einen möglichst großen Fluss zu bestimmen,
dass man also möglichst viel aus der Quelle rausfließen lassen will und in die Senke reinfließen lassen will.
Das ist das Ziel. Da sieht man auch mal so
einen Fluss
Blau hervorgehoben. Da wird jetzt bei jeder Kante so ein Fluss der Kapazität 4 benutzt.
Da drunter jetzt die Definition und Flussnetzwerk gerichteter Graf,
jede Kante hat zusätzlich eine nicht negative Kapazität und wenn die Kante gar nicht im Grafen drin ist,
dann nehmen wir halt an,
dass die Kapazität null ist, sodass einfach nur,
dass man nachher besser mit diesem CUV rechnen kann.
Kommt ja gleich in der Ausnahme, die Kante nicht da ist,
dann kann er nichts drüber fließen und wenn die Kapazität null ist,
kann er auch nichts drüber fließen.
Und dann gibt es halt diese speziellen Knoten S und Tee,
wobei S eben keine Kanten rein hat und Tee
keine Kanten raus
Und, was man jetzt vielleicht auf den ersten Blick
nicht so sieht, aber was halt auch sein soll,
alle Knoten liegen auf Faden von der Quelle zur Senke.
Ja, das ist die Definition für das Flussnetzwerk und das
wird jetzt der Fluss. Oder gibt es jetzt noch so
ein paar Eigenschaften, die man sich wünschen will?
Wir haben also so einen Graphen G, die Kapazitätsfunktion C.
S und T wie oben, eine Quelle und Senke.
Und ein Fluss ist jetzt so eine Funktion hier,
die also quasi jeder kannte oder jeder möglichen kannte,
also jedem Element aus V-Kreuz V,
einen reellen Wert zuweist.
Wir arbeiten eigentlich nur mit
ganz zahligen Werten
Aber der Vollständigkeit halber steht da mal er. Und zwar soll gelten Kakapazitätsbeschränkungen,
sprich über keine Kante wollen wir mehr Fluss schicken als Kapazität möglich ist.
Das macht irgendwie Sinn. Dann gibt es noch Asymmetrie,
dass man quasi sagt,
wenn ich über eine Kante von S nach V einen Fluss 4 schiebe,
dann kann ich, wenn ich von dem anderen Knoten gucke,
sagen irgendwie, naja,
hier gibt es so einen Fluss minus 4. Das hat was damit zu tun,
dass wir nachher den Fluss auch zurückschieben können wollen.
Erstmal nehmen wir das so hin, aber werden wir gleich singen,
wofür das gut ist. Und das letzte ist Flusserhaltung,
dass man quasi sagt, wenn ich einen Knoten uh festhalte,
der jetzt mal nicht Start oder Zielknoten ihr sein soll,
nicht Quelle und Senke, engt einen von den anderen Knoten,
halte ich fest und ich summiere dann auf über alle Kanten,
die da quasi rausgehen, rein oder rausgehen.
Dann soll da immer null rauskommen. Das führt mit der Asymmetrie zusammen dazu,
wenn ihr in einen Knoten irgendwie 18 Fluss reinfließen habt und ihr habt 18 Fluss rausfließen,
dann wird das reinfließen irgendwie für den Knoten negativ gerechnet,
das rausfließen wird positiv gerechnet und dann habt ihr 18,
minus 18, also null.
Also das, was hier verlangt wird bei der Flusserhaltung,
ist, dass nicht mehr in den Knoten reinfließt,
als rausfließt und auch nicht mehr rausfließt
als reinfließt
Das wird da verlangt. Und das kann man halt deswegen hier
so schön einfach schreiben, weil man hier diese Asymmetrie hat.
Sonst müsste man das irgendwie aufteilen, sonst müsste man sagen,
ich halte den Knoten u fest und die FUV,
die sumiere ich und die FVU ziehe ich ab oder irgendwie sowas,
dann würde ich das auch kriegen.
Genau. Also zusammengefasst,
nie mehr Fluss über eine Kante als die Kapazität sagt,
erstens und zweitens in jeden Knoten fließt genauso viel rein wie raus.
Außer Quelle und Senke. Bei denen macht es keinen Sinn,
weil aus der Quelle fließt nur raus und aus der Senke
fließt nur rein,
da wird es also keinen Sinn machen zu sagen,
dass das
null sein soll
Genau, und das Problem ist jetzt das folgende,
was wir untersuchen wollen, wenn wir jetzt so ein Flussnetzwerk haben,
dann wollen wir einen Fluss mit maximalem Wert bestimmen.
Und der Wert des Flusses, der ergibt sich daraus,
dass wir den Startknoten nehmen, dieses S,
und halt quasi über die Kanten, die aus S rausgehen, den Fluss summieren.
Wenn ihr euch jetzt überlegt, wir haben ja so Flusserhalt,
oder wir haben ja hier diese Flusserhaltung,
dann kann man relativ gut beweisen, das,
was hier rausfließt, das muss in die Quelle nachher reinfließen,
weil das verteilt sich irgendwie in den Flussgrafen,
alle Knoten liegen auf Haden von S zu T,
Fluss muss irgendwo hin,
weil ja in jedem Knoten genauso viel rein wie rausfließt,
also muss das irgendwo hin und das kann nur irgendwie
in die Senke
Kommt das vom Staat zum Ziel? Also könnte man hier genauso gut machen,
man summiert auf über den Fluss von V nach Tee und dann über alle V.
Das könnte man auch machen, ne? Also quasi das
hier umdrehen und statt Ziel statt Staat das Ziel nehmen.
Genau, und den hätten wir gerne, diesen maximalen Fluss,
weil der für verschiedene Anwendungen halt praktisch und relevant ist.
Also wenn man sowas wie hier Materialflüsse oder sowas modelliert,
irgendwas aus der Logistik, da möchte man ja üblicherweise die Kapazitäten,
die man hat, möglichst gut ausnutzen.
Also das Amazon-Warenlager möchte bitte möglichst viel von seinen Sachen verteilen und
nicht irgendwie ein paar Laster, die sie gemietet haben,
einfach gar nicht benutzen,
sondern nur einfach so über die Straße schicken.
Das wäre irgendwie unnötig
Ja, das wollen wir machen, das ist das Ziel.
Einmal am Beispiel, wenn man sich jetzt so einen naiven Ansatz
erstmal überlegt, naja, dann überlegt man sich vielleicht,
es soll ja irgendwie von Essen nach Tee gehen,
also suche ich mir irgendeinen Fahrt von Essen nach Tee und
wähle da entweder einen beliebigen Fluss oder den maximal möglichen.
Kann ich irgendwie den eben schon genannten hier nehmen. SV-W-U-X-T,
ich weiß jetzt nicht so der Pfad,
der ihm als erstes einfallen würde,
aber es ist halt irgendeine Fahrt von Essen nach Tee.
Maximaler Fluss darüber ist beschränkt durch die kleinste Kapazität einer Kante
entlang des Flusses, also durch diese Kante von x
nach Tee
Die hat die Kapazität 4. Das heißt,
über diesen Weg kann ich maximal den Fluss 4 rüberlaufen lassen.
Dann überlege ich mir als nächstes, gibt es noch
irgendeinen anderen ST-Fahrt, wo ich noch Kapazität übrig habe.
Und dann lande ich vielleicht bei dem SVUX-WT.
Wie viel kann ich darüber schicken? Sieben, ne?
Die sieben hier, hier würden noch zehn gehen,
da gehen noch zehn, hier gehen noch zwölf, da gehen
20. Also ist das da irgendwie der Flaschenheiz?
Kann ich also noch sieben rüberschicken
Und dann mache ich das und dann sieht er schon so aus.
Und dann kann man auch sehen, der maximal,
also der Fluss, den wir bisher haben,
da hatten wir ja gesagt,
wir addieren den Fluss aus S heraus auf.
Das ist im Moment die L-4 plus, die Null hier.
Also ist das der Fluss 11. Oder man könnte eben
auch den Fluss, der ein Tee reingeht, aufsummieren.
Das wäre 7 plus 4. Das ist auch 11. Ja.
Sieht noch einer was? Ja. Nee,
ob der Fluss durch alle Knoten durchgehen muss.
Nee, er muss halt von S nach Tee gehen.
Also du musst einen Fahrt von S nach Tee
haben und entlang dem kannst du dann
was schicken
Mhm. Genau. Kommt das jetzt eigentlich noch? Ja
, kommt noch. So, und bei dem hier,
das war der, den du eben gesagt hattest, ne?
SUVW-T. Ja, genau. Wie viel Fluss geht darüber
Vier, ne? So, wenn man jetzt guckt,
hier würde 13 drüber gehen, da würde vier drüber gehen,
hier geht auch viel, also die vier ist hier das Maximum,
hier kann man auch die vier machen,
hier kann man auch die vier machen.
Und jetzt nochmal daran denkt von eben,
dass ja quasi gesagt wurde,
wenn ich hier einen Fluss von sieben von sieben habe,
was habe ich dann für einen Fluss von U nach V?
Diese Asymmetrie-Geschichte. Genau, also habe ich von U
nach V gerade minus sieben von vier.
Also ich habe eine Kapazität von vier und ich habe
einen Fluss von minus sieben
Jetzt ergibt sich, wie viel kann ich also rüberschicken?
Mehr als vier, nämlich wie viel? Nee, weniger
. Habe ich eben auch zuerst gedacht, aber weniger,
da oben ist noch so eine andere Kante, die nervt.
Acht, ne? Genau, die da beschränkt. Ich dachte auch
eben elf, aber die beschränkt es dann, ne?
Die Idee ist quasi hier, wenn man jetzt sagt,
ich kann jetzt acht hier rüberschicken von S nach U, das ist klar,
acht von 13. Und jetzt kann ich aber auch acht von U nach V schicken.
Und dann natürlich acht wieder von V nach W und von V nach Teso, ne?
Aber die acht hier von U nach V,
da ist die Idee quasi, dass man sagt,
die sieben, die da gerade ankommen,
die kompensiere ich
Und dann kann ich noch den einen, der da eh von UNAV
mit der Kapazität ist, da kann ich noch einen rüberschicken.
Das kann man sich entweder so überlegen, dass man mathematisch sagt,
aktuell ist da ein Fluss von UNAV von minus sieben.
Und ich habe eine Kapazität von vier. Es gibt mir
die Möglichkeit, maximalen Fluss von elf da rüber zu schicken.
Oder man kann das so sehen, dass man sagt,
es gab ja schon, ihr kam ja schon sieben an,
die dann irgendwie weiter verteilt wurden.
Und jetzt nehme ich von hier sieben von S nach U
und mache mit denen dann das, was ich vorher machen wollte,
mit den sieben, die da schon angekommen sind.
Und die sieben, die da bisher angekommen sind,
naja, die sind dann also nicht hier angekommen,
sondern die sind jetzt wieder bei dem V.
Die stehen da wieder rum und ich muss die
irgendwie anders verteilen
Nicht klar. Du guckst so skeptisch. Oder bisher hattest du
sieben Lastwagen, die von V nach U gefahren sind.
Und jetzt sagst du, naja, das,
was ich mit denen jetzt im Weiteren machen würde,
das mache ich mit den sieben Lastwagen,
die ich jetzt von erst nach U schicke.
Also bisher hast du sieben Lastwagen in S beladen,
hast die von S nach V geschickt,
von V nach U und dann irgendwie weiter.
Und dieses irgendwie weiter, das machst du jetzt mit
sieben Lastwagen, die du von S nach U schickst.
So, und dann sind die sieben Lastwagen,
die du von S nach V nach U geschickt hast,
plötzlich wieder frei.
Und den ersten Schritt lässt du sie machen,
von S nach V und jetzt bummeln die da rum
und müssen irgendwas tun
So kannst du es auch. Also so ist so
quasi diese Kompensationsidee so und mathematisch kann man einfach sagen,
naja, wenn da sieben steht von V nach U,
dann habe ich in die andere Richtung einen Fluss von minus sieben.
Kann ich damit arbeiten? Wir sehen auch nachher eine Möglichkeit
mit sogenannten Restnetzwerken, wie man das schneller sieht,
aber genau hier, so würde man es ja machen.
Dann hat man hier diesen Fluss. Dann kommen hier acht dazu,
das heißt, die sieben gehen weg und hier kommt halt
einer dazu, dann sieht das halt so aus.
8, 13, 1, 4, da die zwölf,
da die 15., vorher war das hier vier und sieben,
also wird das acht und
Das ist eigentlich so einer der Hauptknackpunkte bei diesen Flüssen,
dass man sich irgendwie bewusst macht, okay,
ich kann Fluss wieder zurückschicken quasi.
Also ich kann ja irgendwie kompensieren, zurückschicken,
was auch immer man da gerade für eine Analogie benutzen möchte.
Genau, und jetzt, boah, ich glaube,
geht da noch was?
Ich glaube nicht. Echt? Geh noch was?
Was geht noch
Ja. Ja, warte, oh Gott.
Vier von S nach U, boah, ja,
ich überlege gerade, wie das im Restnetzwerk aussieht.
Also, aber oben betrauen, weg,
und zwar das 16-male Ausnutzen des Bürgertes,
Die Eltern verzeihen dir im Kopf. Was? Nein,
nein. Mach mal einen Fluss von S nach Tee.
Was wollt ihr machen? Die gesamte ubergische Ecke ist durch
von der BI gestreckt, dass es uns wird.
Ja. Genau. Ja. Von X verteidigt die Eltern.
Was? Was? Stopp, was? Wie denn?
Ja, 84 und 7. Frieden. Was, was,
was, was, was?
Was willst du tun
Ich schüttel es, über die und der Sprecher.
Ja, das machst du ja aktuell.
Aber wie denn? Genau, wie es da steht,
sind wir früher zu 64. Das ist eine wichtige Idee.
Ja, aber das mache ich doch schon.
Okay, ja, okay, das mache ich schon.
12, 12, 12, 12, der Friedschüttel.
Ja, aber das machen wir doch auch schon.
Aber dazu haben wir die Tiere deutende Tiere,
die können wir doch völlig streichen und auch werden die Kapitel Wir brauchen ja vielleicht Kreuze.
Was? Nein, wieso? Also die kommt ja durch irgendeinen Fluss,
den wir schon gemacht haben. Wenn du jetzt einfach sagst,
so die vier gefallen mir nicht mehr, die Lastwagen tötig?
Die Lastwagen lasse ich ausfallen, Entschuldigung. Umbauen finde ich
gut. Nicht mehr Hass, das ist nicht ein bisschen.
Wie geht es um Biber, den Buch, hier zu wenig?
Dafür können die viel zu wenig durch den Essen befluss,
wieder gegen viel mehr geben und die vierte BMW hat keinen BND nach B abschieben konnte.
Ich glaube, darum geht es. Muss. Hat das
einer verstanden? Ich nicht. Es war mir zu schnell
Kann mir einer mal einen ST-Pfad sagen, über den ihr was laufen lassen wollt?
Ja, wir wollen, das werden wir fast verändern.
Ah, ihr wollt bisherige Pfade verändern, okay.
Und zwar, wir werden im Moment von B,
nach B, 4, 1,5 Intermenten.
Ja. Und das können wir weglassen. Dann haben wir im B
vier Einheiten mehr, die wir nach Tee schicken können.
Dafür müssen wir dann kompensieren, dass wir die 4,5 Ligu
jetzt fehlen, auch ausgleichen müssen.
Das können wir durch einen S da rumfahren. Ja,
das klingt gut. Wenn wir jetzt nochmal in der Denkweise von eben,
wenn wir von U nach Wehen Fluss,
von Weh nach U,
einen Fluss von 4 haben,
haben wir von U
nach W-Einfluss von minus 4. Kapazität
UW ist
Nee, Uwe? Ja, null, genau. Also
wir haben minus vier und Kapazitäten null ganz am Anfang,
wo das auch mal irgendwer hat das Ganze am Anfang schon gesagt.
Und dann können wir SU nehmen, Uwe und WT und dann haben wir das.
Aber von der Idee her passiert genau das,
was du gesagt hattest und was du, glaube ich,
auch gemeint hattest, dass man halt sagt irgendwie,
von wem nach U gehen aktuell vier,
die lenke ich um und dann fehlen mir vier an U
und die kommen halt von S. Genau.
Genau, das klappt,
denke ich,
Es sind ja keine negativen Kanten, das ist eine Kante
der Kapazität null und da läuft gerade negativer Fluss drüber.
Und den kompensieren wir. Aber von der Idee, das,
was er gesagt hat. Aber da merkt man schon,
dass das irgendwie ein bisschen tricky ist, rauszufinden so.
So lange, dass der Screenshafer angeht. Und dafür benutzen wir dann gleich Restnetzwerke,
um das schneller sehen zu können,
also um man das auch algorithmisch irgendwie besser in den Griff zu kriegen,
weil bei dem Restnetzwerken treten dann die aktuellen Flüsse nicht mehr
auf und dann kann man einfach immer einen schönen,
einen guten Pfad quasi nehmen.
Das sehen wir gleich
Also, genau. Da habe ich bei dem Beispiel aufgehört und ihr habt recht,
man könnte jetzt hier von S-U-W-T noch vier rüberschicken und dann hat man,
glaube ich, den maximalen Fluss.
Ja, dann hat man den maximalen Fluss. Damit wir das gleich beweisen können,
also wir wollen jetzt ja gleich ein Verfahren ausdenken,
mit dem wir diesen maximalen Fluss berechnen können.
Und das wollen wir dann beweisen, dass das irgendwie korrekt ist.
Und dafür erstmal zum Beschreiben des Algorithmus brauchen wir noch ein
bisschen Handwerkszeug und dann zum Beweisen, dass da korrekt ist,
brauchen wir auch noch ein bisschen Handwerkszeug.
Weil bisher ich zwar die ganze Zeit von Restnetzwerken,
aber ich habe noch niemandem gesagt, was das eigentlich ist.
Da kommen wir dann gleich zu. Das brauchen wir halt
um den Algorithmus gut beschreiben zu können und um ihn dann
als korrekt nachweisen zu können, brauchen wir die Schnitte.
Und mit denen kann man dann dieses berühmte,
vielleicht habt ihr ja schon mal gehört, dieses Min-Flow-Max-Cut-Theorien.
Max Cut münden wir halt auch min. Max-Flow-Min-Cut so rum.
Maximaler Fluss minimaler Schnitt. Vielleicht, wer hat das schon gehört?
1, 2, 3, 4, 5. Wo?
Optimierung. Auch Optimierung? Jo. Okay. Dann
ist das ja gar nicht neu für euch
Dann ist das ja gar nicht nice für euch.
Dann könntest du ja einen Kaffee trinken gehen. Und wenn
du auf dem Weg zum Backup bist, könntest du mir was mitbringen.
Ja, das steht auch im Kommen, ja.
Klar. Nix, was ich mache, steht nicht im Kormen.
Das war eine geile Bemerkung, so. Es steht auch
im Kommen, warum erzählst du uns das? Naja. Ey,
die Folge sogar auf dem Kommen basiert natürlich, mein ich.
So, Eigenschaften, die wir noch brauchen,
die gleich nützlich sind
Weder UV noch V ohne Kante ist. Also wenn ich zwei Knoten habe,
die durch gar keine Kante verbunden sind, dann ist der Fluss bei beiden null.
Haben wir sich schnell überlegen, wenn beide Kanten nicht drin sind,
haben sie nach Definition beide die Kapazität null.
Wenn ich also über einen irgendwie einen Fluss drüberlaufen lasse,
also ich kann da gar keinen Fluss drüber laufen lassen,
sondern das müsste dann, wenn,
dann müsste es ein negativer Fluss sein,
damit diese Gleichung mit kleiner Gleichkapazität gilt.
Dann wäre es aber in die andere Richtung ein positiver Fluss,
dann wäre das nicht mehr kleiner gleich der Kapazität,
kann also irgendwie nicht sein.
Ergo müssen die beide gleich null sein hier. Und das andere
Wenn man so den positiven Fluss in den Knoten V ausrechnet.
Also V wird festgehalten und es wird über alle Knoten u
summiert, bei denen halt FUV größer ist als null.
Weil bei kleiner null ist es ja nicht der Fluss,
der in den Knoten reingeht, sondern der Fluss,
der irgendwie aus dem Tuten rausgeht.
Wenn man so diesen gesamten positiven Fluss aufsummiert und analog den gesamten
positiven Fluss aus einem Knoten, dann sind die beiden Werte eben gleich.
Das ist im Grunde genommen genau das Gleiche wie diese Flussehaltung.
Also das, was gefordert wird für den Fluss als dritter Punkt,
diese Flusserhaltung, daraus folgt das im Grunde genommen sofort
Weil ich hier halt nicht das habe mit negativen Flüssen,
sondern ich rechne die immer positiv.
Dann habe ich halt irgendwie was Positives, was reinfließt,
was Positives, was rausfließt und wegen der Flusshaltung muss das gleich sein.
Genau. Wenn ihr wollt, könnt ihr das zweite nochmal mathematisch aufschreiben,
aber von der Idee ist das, glaube ich, klar.
So, dann brauchen wir noch gleich,
insbesondere für die Schnitte und so, Summennotation.
Bisher hat dieses F ja als Argumente immer zwei Knoten und was wir gerne hätten,
ist, dass wir das auch für Mengen von Knoten machen können.
Dass wir also sagen können,
X ist eine Menge von Knoten,
Y ist eine Menge von Knoten und was ist jetzt
der Fluss von der Knotenmenge X in die Knotenmenge Y
Und das, was im Grunde genommen einfach gemacht wird,
ist, es werden alle Knoten in X genommen und alle Knoten in Y.
Und dann wird paarweise all die FXY werden genommen und aufsummiert.
Das ist der Fluss von Groß X nach Groß Y. Und dann lassen sich halt,
also und für, wenn eine dieser Mengen,
also das große X zum Beispiel, wenn das eine einelementige Menge ist,
dann schreibt man da jetzt nicht Mengen, Klammern V,
sondern man schreibt dann einfach Klein V.
Als Shortcut. Und dann lässt sich halt die Flusserhaltung so formulieren,
dass man sagt, also die Flusserhaltung war ja bisher Summe von FUV,
U halte ich fest und über V sumiere ich drüber.
Und dann kann ich das jetzt eben hier
so formulieren
Und das gilt eben für alle U, außer für die Quelle und die Senke.
Das ist genau das Gleiche wie die Flusshaltung. Genau,
und hier nochmal so ein bisschen,
also hier seht ihr ja schon eine einelementige Menge,
da schreibe ich gar keine Mengenklammern drum.
Und wenn ich jetzt hier irgendwie sowas machen will wie V ohne S,
dann schreibe ich da auch nicht groß mit Mengenklammern,
dann schreibt das auch so.
Und dann kann man halt irgendwie sowas hier kurz, kurz und kompakt schreiben.
Genau. Und das hier zum Beispiel gilt, liegt einfach daran,
dass es von S nach S halt keinen Fluss gibt.
Von ersten vom Staat zum Staat,
das ist kein Fluss
Ja, das ist die implizite Notation und jetzt kann man
solche Sachen hier beweisen, die wir auch überall benutzen werden gleich.
Einmal, dass man sagt, der Fluss von einer Knotenmenge
in die gleiche Knotenmenge, das ist null.
Für alle Timing von V, dann, dass man sagt,
wenn ich einen Fluss von X nach Y habe und
ich will den Fluss von Y nach X haben,
dann kann ich dann Minus vorsetzen.
Also im Grunde genommen beides genauso, wie ich das beim einzelnen Knoten habe.
Also wenn ich einen Knoten V habe, dann ist FVV
immer null, weil wir keine Stleifen haben an dem Knoten.
Und wenn ich FXY, wenn ich zwei Knoten UNV habe,
dann war FUV eben per Definition das Gleiche wie minus FVU
Ja, wie da. Deswegen führen wir das ja ein. Ja. Ja,
und dann hier, wenn ich FX vereinigt Y habe,
als Anfang und ich will den Fluss nach Z wissen,
dann kann ich halt auch eben den Fluss von X nach Z
nehmen und den Fluss von Y nach Z und das aufsummieren.
Wenn denn X geschnitten Y leer ist.
Sonst zähle ich halt irgendwelche Sachen doppelt. Deswegen X und Y
, der Schnitt soll leer sein
Genau, und andersrum,
wenn ich den Fluss von Z nach X Vereinigt Y wissen will,
dann kann ich auch den Fluss von Z nach X und
den Fluss von Z nach Y mir angucken und die aufsummieren.
Flusseigenschaften. Kann man sich immer schnell überlegen, dass das
halt für einzelne Knoten sofort gilt. Wenn ihr hier irgendwie habt,
den Fluss von Klein X, Klein Y nach Kleinset,
dann habt ihr einen Knoten X,
einen Knoten Y und von beiden geht ihr irgendwie Fluss nach
Z und dann ist das halt der Fluss von X nach Z plus den Fluss von Y nach Z.
Also für einzelne Knoten gilt das sofort und für Mengen von Knoten
kann man das dann eben auch ganz gut zeigen.
Für eine machen wir das mal hier für die zweite
Im Grunde genommen haben wir nicht sonderlich viel zum Arbeiten.
Wir haben halt nur diese 3 Punkte, die für Flüsse gelten.
Und mit denen müssen wir jetzt irgendwie arbeiten, um das zu beweisen.
Da kann man sich überlegen, FXY, implizite,
oder diese Summennotation, die wir gerade eingeführt haben,
das ist also die Summe über die Knote in X,
die Summe über die Knoten in Y und dann eben FXY oder sowas da.
Und jetzt kann man sich überlegen, wir wollen ja dahin kommen, minus FYXY X,
also sprich, wir wollen irgendwie das hier andersrum stehen haben,
statt FXY, mal mit der FY X stehen haben und
die Summen zeichnen wollen wir vielleicht auch noch tauschen,
damit das dann genau wieder die Definitionen spricht.
Und wenn wir statt FXY, FY X hinschreiben,
dann kommt davor
ein Minuszeichen
So sieht das so aus. Jetzt kann man das Minuszeichen
ganz nach vorne ziehen. Und dann kann man noch,
ob man hier die nach Regeln für das Summationszeichen,
ob man hier irgendwie die Summe über die X,
die Summe über die Y bildet und dann die alle aufsummiert oder ob man
die Summe über die Y oder die Summe über die X bildet und die alle aufsummiert,
das ist das Gleiche.
Man sieht das so aus. Und das hier ist eben
gerade minus F, Groß Y, Groß X. Fertig.
Da hat man die implizite Summennotation benutzt bei dem ersten Gleichheitszeichen,
bei dem letzten Gleichheitszeichen auch. In der zweiten Zeile,
da hat man tatsächlich die Asymmetrie benutzt. Also da ist
die einzige Stelle, wo wir die Definition mal ausgenutzt haben.
Und dann der Rest in der zweiten Zeile,
dass wir es halt rechnen mit dem Minuszeichen und der Anfang
in der dritten Zeile ist, rechnen mit Summationszeichen.
Im Grunde genommen könnte man die erste Zeile sofort hinschreiben und die letzte Teile sofort,
weil man weiß, dass man von da nach da kommen will,
dann muss man noch die Zeile dazwischen irgendwie füllen.
Gut, dann weiß man das,
dass man also quasi diese Asymmetrie,
die vereinzelne Konnoten nach Definition gelten soll,
dass man die halt auf Mengen von Knoten
übertragen kann
Genau, und die beiden könnt ihr ja mal
zur Übung probieren, die gehen relativ ähnlich.
Ich schreibe das einmal auf, was das als implizite Sumulation bedeutet.
Also habe ich irgendwas mit zwei Simulationszeichen und da muss ich
ein kleines bisschen umformen und dann komme ich zu dem Ergebnis,
wie es da steht.
Ja, jetzt kann man das beweisen. Definiert ist das
hier, dass es ja der Wert des Flusses ist.
Das ist ja definiert, definiert als der Fluss,
der aus der Quelle rausgeht. Und das kleine Lämmer hier,
das sagt gerade, dass das Gleiche ist,
wie der Fluss,
der in die Senke reingeht
Also das hier ist ja die Summe über alle Knoten,
welcher Fluss geht von allen Knoten in die Senke.
Und bei den meisten Knoten ist es eben null,
weil es gar keine Kante gibt von dem Knoten zur Senke
und bei den Paar, die da irgendwie reingehen,
addiert das sich eben gerade zum Fluss auf.
Jetzt kann man sich überlegen, das erste Gleichheitszeichen ist klar,
das ist die Definition von dem Wert des Flusses.
Uh, wo kommt die zweite Zeit?
Ja. Das kommt wirklich sicher,
dass es die Person von FP4
war als ein absolutes Wert
Was meinst du? Achso, ja. Also du meinst
einen positiven Wert, ne? Ja, weil die ja...
Also wir gehen ja jetzt mal von ganz zahligen Kantengewichten aus.
Und sobald du einen so einen Vater hast von S. nach Tee,
hast du ja einen positiven Fluss da irgendwie hin.
Und es gibt keine Möglichkeit, wie der irgendwie negativ werden könnte.
Der ganze Fluss so, ne? Bei einigen Kanten,
ja, aber insgesamt halt nicht nur.
Aus der Quelle geht ja immer was Positives raus und in
die Senke geht immer was Positives rein
Wie kommt man von der ersten zur zweiten Zeile?
Weißt du, was von den S raussehen ist in die Menge?
Warte mal, alles, was aus S rausfließen muss,
nochmal? Eine Menge, wo es nicht geht
Ja. Ja, aber hier sind ja nicht die Mengen getauscht,
weil dann wäre das F von V,
S und da fuhren minus.
Kommt mal von der zweiten zu dritten,
mit irgendwas davon
Der Ansatz, dass das dann null sein muss, ist auch cool.
Das habe ich gestern gar nicht, also ich habe es
anders gemacht. Aber damit können wir bestimmt auch arbeiten.
Bitte? Ja, ja, steht auf der anderen Folie.
Es ist ja auch richtig, dass das null ist.
Nee, ich glaube nicht. Also ich glaube,
man kommt anders. Ich bin mir gerade nicht sicher.
Also wenn man es einfach weglassen würde,
also du kannst ja machen so, dann müsstest du halt dir überlegen,
warum es FSV das Gleiche wie minus fv-sv.
Kann man auch irgendwie argumentieren, aber ich...
Also es geht mit was anderen von den Dingern
Hoffe ich. Vielleicht habe ich mich auch geirrt.
Ja. Probiert mal nicht von der,
probiert man nicht von der ersten zur zweiten Zeile zu kommen,
sondern die Dinger umzuformen.
Also es müsste ja nur die Gleichheit irgendwie gelten, ne?
Wenn ihr auf beiden Seiten das Negative hier addiert, was steht dann da?
Dann steht da FSV Plus F von V-S-S-V, ja.
Und das soll gleich V, Komma V sein.
Dann habt ihr hinten also immer das Gleiche,
hinten steht immer ein
Und vorne habt ihr Links stehen S und V-S.
Wenn man die vereinigt, kommt V raus, ne?
Er ist vereinigt mit V ohne S ist irgendwie V.
Das sieht ziemlich so aus, wie das hier.
Die erste Zeile bei drittens. Hinten,
der Bereich hinten wird immer gleich, wird festgehalten.
Und auf der einen Seite steht halt X und Y
und auf der anderen Seite steht dann X vereinigt mit Y.
Das ist genau das, was ihr habt, wenn ihr
hier auf beiden Seiten den Teil FV-S-K, V addiert.
Und wenn man weiß, dass das beides gleich ist,
dann ist halt FSV das Gleiche wie FV- und so weiter
Ja. Und jetzt im nächsten Schritt nutzt man aus, dass FVV0 ist.
Dann sagt man, okay, das hier weiß ich ja,
dass das null ist, nach dem ersten Punkt hier.
Kann ich das also wegfallen lassen, jetzt steht das da?
Jetzt benutze ich das, das wurde alles eben schon mal gesagt, so zwischendurch.
Jetzt benutze ich das, dass ich das Vorzeichen tauschen kann,
wenn ich erstes und zweites Argument drehe.
Dann habe ich das hier. Ja,
und jetzt wird es ein bisschen rumgetweet, ne? Jetzt,
ich weiß ja, dass ich da hinkommen will zu VT.
Und jetzt brauche ich also irgendwie noch einen Zusammenhang zu FVVV-S und FVT.
Und dann kann ich mir so ähnlich weben, wieder überlegen,
dass das hier Ja, das Gleiche sein muss,
wie wenn ich vorne die Menge festhalte und hinten halt zwei Mengen habe,
die vereinigt, v-s ergeben.
Und zu guter Letzt muss ich mir noch überlegen, dass das hier null ist.
Aber das ist quasi nach dem... FU,
hier vorne Enken-U, hinten die ganze Menge V,
das ist ja immer null für jedes U außer EMS und T. Wenn das immer null ist,
dann ist es auch null, wenn ihr V&U dreht.
Asymmetrie, ist da minus null, aber ist ja
auch wieder null
Und dann könnt ihr quasi hier da über alle Elemente in V-S-T,
da nehmt ihr die jetzt alle einzeln.
Und dann ist immer F-Groß-V, irgend so ein Element da
draus, null. Und dann habt ihr 0 plus 0
plus 0 plus 0 plus 0 plus 0 und so weiter.
Es ist insgesamt null. Deswegen fliegt der hier auch weg. Ja,
und dann kommt ihr dahin, dass quasi der Fluss aus
der Quelle FSV ist das Gleiche wie der Fluss in die Senke.
Ja, genau. Kurzer Exkurs,
wenn man jetzt irgendwie mehrere Quellen und Senken hat,
hat man auch öfter mal bei irgendwelchen Problemen,
hier habe ich jetzt ganz viele Quellen und ganz viele Senken,
dann kann ich mir eine super Quelle und eine Supersenker einführen,
also irgendwie eine Quelle, die alle anderen vereinnahmt und eine Senke,
die alle anderen vereinnahmt,
indem ich halt quasi hier vorne eine neue Quelle hinmache und hier hinten eine neue Senke,
das ist dann meine einzige Quelle und meine einzige Senke und die verbinde ich dann mit einer sehr,
sehr, sehr hohen Kapazität einfach mit S1, S2,
S3, beziehungsweise T-1, T-2, T3,
hier mit dem I illustriert für Infinity, also unendlich,
man kann auch einfach, weiß ich nicht,
die höchste,
hängt die Summe aller Kapazitäten nehmen oder irgendwie sowas,
irgendwas hohes
Wobei hier fließt ja irgendwie zum Beispiel nur sechs und drei raus,
also dann würde hier auch so eine Kapazität von Neuen reichen.
Das reicht, wenn man kleine Werte haben will.
Und dann hat man quasi das Problem mit multiplen Quellen und Senken
zurückgeführt auf das Problem mit einer Quelle und einer Senke.
Genauso kann man mit, wenn man jetzt an den Kanten rationale Zahlen habe,
rationale Zahlen haben möchte, dann kann man das auch so machen,
dass man dann mit einer Skalan-Multiplikation das auf den Fall zurückführt,
dass man mit ganz heiligen Werten arbeitet.
Problem sind irrationale Zahlen, aber die braucht man jetzt in
den Anwendungen meistens auch nicht.
Da wird es hässlich
Eure Schüttheitsgebühr sagt, dir lässt dich auch auf den Thermienfluss
und er fängt zu einer Fälle zu tippen,
ihr zettet die Beweise vielleicht, das sind die ganzen Ärger.
Von was? Es gibt ja jetzt unkompensiert, das kann
eine Quelle zur Senkgebühr, wenn man jetzt nur der Mist tippt.
Nee, nee, ganz schlecht. Dann kannst du ja
gar nicht mehr von Flüssen reden,
dann hast du überall Null
Das machen wir jetzt. Ah, jetzt kommen sie endlich
hier, Restnetzwerke. Also, was wir ja machen wollten,
was das die ganze Zeit das Ziel ist, ist,
maximalen Fluss zu bestimmen.
Da gibt es diese Ford Falkerson, Ford Falküstenmethode,
der... Es ist im Grunde genommen ist das so eine,
deswegen steht auch Methode und nicht Algorithmus.
Das ist eigentlich so eine Vorschrift, die relativ viele Flussalgorithmen umfasst.
Und dann kann man halt erstmal eine naive Implementierung machen und
dann an einer bestimmten Stelle tweaken und mehrere Implementierungen gewinnen.
Und die Implementierung unterscheiden sich zum Beispiel darin, wie sie
die Erweiterungspfade gleichbestimmen. Das werden wir dann gleich sehen.
Was für eine Methode gemeint ist,
ist immer irgendwie diese Restnetzwerke zu bestimmen
Und dann halt auf unterschiedliche Arten und Weisen
Erweiterungspfade zu bestimmen und darüber dann maximal Fluss zu ermitteln.
Und was man halt zum Beweis braucht, sind nachher die Schnitte.
Also wenn man beweisen will, dass das Verfahren tatsächlich korrekt
ist oder die Methode in dem Fall, benutzt man oft diese Schnitte.
So, erstmal hier das Restnetzwerk. Das ist quasi das Ding,
mit dem wir gleich schneller gegeben einen Fluss,
den wir schon haben in so einem Flussnetzwerk,
dann können wir mit dem Restnetzwerk schneller bestimmen, wo es noch Pfade gibt,
über die wir noch einen Fluss laufen lassen können.
Weil vorhin in dem Beispiel, wenn ihr euch daran erinnert,
mit dem, wo wir dann nochmal diese vier oder was das war,
rüberschicken konnten, da war das ja nicht so elegant zu sehen.
Und in den Restnetzwerken ist es sehr viel schneller zu sehen
So, was ist so ein Restnetzwerk? Im Grunde genommen versucht man
in dem Restnetzwerk zu ermitteln, wo man noch Flüsse langschicken kann.
Was macht man? Man nimmt wieder dieses Flussnetzwerk G,
Kapazitätsfunktion C hier, F ist ein Fluss, den wir schon in G haben.
Also am Anfang ist der Fluss halt null.
Nach der ersten Iteration ist das irgendwie ein bestimmter Fluss.
Und jetzt definiert man sich zu jeweils zwei Knoten UV,
diese Restkapazität hier. Das ist quasi der Fluss,
den man da noch rüberschicken kann. Das führt jetzt dazu,
wenn ihr irgendwie bei einer Kante UV die Kapazität noch nicht ausgenutzt habt,
Dann kommt er halt für die Kapazität im Restnetzwerk die Restkapazität noch raus.
Wenn ihr über eine Kante schon Fluss schickt, dann ist das ja,
wenn ihr das umdreht, negativer Fluss und dann steigt die Kapazität.
Und dieses Steigen kann auch dazu führen, dass in dem
Restnetzwerk plötzlich eine Kante entsteht, die vorher gar nicht da war.
Wenn ihr eine Kante mit Kapazität null hattet,
eine Kante,
die also gar nicht da ist in dem eigentlichen Flussnetzwerk und ihr habt jetzt einen Fluss,
aber in die andere Richtung gibt es eine Kante und ihr habt da einen Fluss der Menge vier,
dann wisst ihr,
oh,
jetzt könnte ich in diese Richtung ein Fluss der Menge
minus vier schicken
Von der Idee, äh, ein Fluss der Menge 4 schicken,
so von der Idee, weil er minus 4 ist.
Und hier käme dann eben raus Kapazität null,
minus minus 4, also hat der da die Kapazität 4.
Das ist da die Idee. Und dann ist eben
das Restnetzwerk gegeben durch die gleichen Knoten,
aber die Kanten sind eben all die Verbindungen zwischen zwei Knoten,
bei denen diese Kapazität CF eben größer ist als null.
Das sind die Restkanten. Genau, Restnetzwerk besteht also aus
jenen Kanten, die noch mehr Fluss aufnehmen können.
Und das Wichtige ist eben, dass da bei Kanten entstehen können.
Und dann habt ihr halt wieder ein Flussnetzwerk.
Das werden wir auch gleich sehen, dass es wieder
Flussnetzwerk ist
Keinen Fluss hat. Dann habt ihr ganz normale Knoten mit
Kanten und die haben alle eine Kapazität, eine positive.
Und dann könnt ihr wieder ganz, der erste Schritt ist
immer so schön einfach. Also wenn ich euch irgendwie
einen Grafen gebe und ihr sollt den ersten Fluss bestimmen,
bestimmt ihr halt irgendeinen Fahrt von S nach Tee.
Und die Kapazität, die ihr da maximal benutzen könnt,
und dann lasst ihr dann Fluss drüber laufen.
Und das ist jetzt bei diesem Restnetzwerk eben wieder so.
Deswegen macht man einmal diesen Schritt, das Restnetzwerk zu bestimmen
und dann kann man recht schnell wieder Flüsse bestimmen.
Und was man jetzt aber dann zeigen muss, ist,
dass sich diesen Fluss, den ich mir jetzt im Restnetzwerk überlegt habe,
dass ich den tatsächlich auch im richtigen Netzwerk fließen lassen kann.
Weil das ist jetzt ja erstmal nicht so offensichtlich,
dass ich das machen kann
Beispiel, der hier. Das war der Graf, den wir vorhin schon hatten.
Mit dem, ich glaube, zwei Iterationen war das.
Und jetzt kann man sich halt überlegen. Jetzt sagt man im Restnetzwerk,
ich nehme die gleichen Kanten, die gleichen Knoten, Entschuldigung.
Und als Kanten guckt man sich jetzt alle Möglichkeiten zwischen SV,
VS, SU, US und so.
Also alle Möglichkeiten, die es irgendwie zwischen zwei Knoten gibt,
an. Und dann sagt man, okay, hier von
S nach V habe ich irgendwie Kapazität 16 und Fluss 11.
Das heißt, nach der Rechnung hier, Kapazität 16,
Fluss 11,
kriege ich also
eine Kapazität
Von S nach V im Restnetzwerk. Ich kriege da
eine Kante mit Kapazität 5. Umgedreht von V nach S habe
ich bisher eine Kapazität null und einen Fluss von minus 11.
Das ergibt hier in der Rechnung null minus minus 11,
also 0 plus 11, also kriege ich da raus Kapazität 11.
Also kriege ich für die Kante von V nach S
eine Kapazität von 11 raus. Und schwupps ist die Kante
plötzlich da, die vorher nicht da war. Genau,
das sieht dann halt, das kommt da heraus,
ihr seht ihr es da,
von S nach V gibt es 5,
von V nach S
gibt es
Was haben wir noch hier irgendwie, wenn ich von U nach V gehe?
Dann habe ich da bisher eine Kapazität von 4 und einen Fluss von 1,
4 minus 1 ist 3. UV 3 und von V nach U habe ich
eine Kapazität 10 und einen Fluss von minus 1. 10 minus minus 1 ist 11,
kommt der da raus.
Und so gehe ich das dann eben alles durch. Und an Stellen,
wo irgendwie die Kapazität hier komplett ausgenutzt wurde,
da gibt es dann nur eine Kante zurück mit dem
gleichen Wert dieser Kapazität
Also an der Stelle VW,
wo ich bisher zwölf Fluss habe bei einer Kapazität 12,
da kriege ich dann eben die Kante zurück nur raus.
Wenn ich eine Kante habe,
wo ich bisher gar keinen Fluss drüber laufen habe,
also irgendwie eine Kantekapazität, 4 Fluss 0,
dann entsteht genau die gleiche Kante.
Und die spannenden Fälle sind eben die, wo ich irgendwie
eine Kante habe, die nur einen Teilfluss aufnimmt.
Dann entstehen immer irgendwie zwei Kanten. Und bei solchen Fällen
hier zwischen V&U natürlich auch,
da entstehen dann auch immer zwei Kanten.
Entschuldigung,
ich habe es nicht gehört
Ja, das ist die Einheit. Die Frage war gerade,
ob es quasi Zusammenhänge gibt zu Elektronenflüssen. So, ja,
kann man machen. Und das ist der wichtige Satz,
den wir brauchen. Wenn ich wieder dieses Flussnetzwerk habe, mit einem Fluss da drin und ich bestimme jetzt dieses Restnetzwerk und ich bestimme jetzt im Restnetzwerk einen Fluss. Das kann ich ja machen,
wenn ich hier dieses Restnetzwerk habe, dann ist das Schöne,
ich habe jede Menge Kanten zwischen S und T,
nirgendwo läuft ein Fluss rüber, das heißt,
ich bestimme einfach einen Fahrt von S nach T, bestimmen da irgendwie,
wie viel ich da maximal rüberschicken kann oder auch schicke einfach nur eins rüber oder so,
aber vielleicht schicke ich so viel wie möglich rüber,
halt irgendeinen Fluss verlässt nach Tee,
so und den Bamm und F-Strich ein Fluss und gehe,
dann ist diese Flusssumme, F-Plus F-Strich,
ein Fluss in G, sprich, ich kann den Fluss,
den ich im Restnetzwerk bestimmt habe,
den kann ich auch in G machen und die Summe,
die da rauskommt, F-Plus, F-Strich,
ist wieder ein Fluss.
Zuerst muss man sich vielleicht überlegen, dass das hier dieses Restnetzwerk,
dass das tatsächlich wieder ein Flussnetzwerk ist, aber das ist relativ einfach.
Ich habe die gleichen Knoten,
es entstehen keine Kanten nach S hinein,
es entstehen keine Kanten nach Tee raus,
also bleiben S und Tee irgendwie Quelle und Senke und dann kann man halt argumentieren,
dass das weiter im Flussnetzwerk bleibt.
Warte mal, ja
Was tue ich denn da? Nein. Muss ich mal
zurückgehen hier zu der Definition. Ich muss ganz am Anfang
zurückgehen, so. Aha. Wo war mein Fehler?
Was habe ich richtig geschrieben, aber falsch gesagt?
Schon die ganze Vorlesung lang. Ja, was habe ich die ganze Zeit falsch erzählt? Etwas,
auf dem alle Knoten Das war halt mehr,
das war jetzt auch die, ob die alle tot liegen,
nicht, dass es nur halt auch so hinausgeht. Genau,
es wird nirgendwo gesagt, da steht nur,
es gibt diese besonderen Knoten, die Quelle essen und die senke Tee,
da wird aber nicht verlangt,
dass aus S keine Kanten rausführen würden,
keine Kanten reinführen würden oder das aus Tee keine Kanten rausführen dürfen,
so das darf schon sein,
aber alle Knoten liegen eben auf Haden von der Quelle zur Senke.
Genau. So gesehen kann man sogar so eine Kante
einführen von T nach S, aber Bringt nichts.
Ja, gut, okay. Wieder dann zurück.
Genau. Dennis ist ja noch leichter zu argumentieren,
dass das ein Flussnetzwerk bleibt. Also es gibt ja weiterhin die Knoten,
der ist so ein Tee, dann sage ich weiter,
das ist Quelle und Senke.
Knoten liegen weiterhin auf den Faden von S nach Tee,
alles gut.
Genau. So, genau, jetzt müssen wir diesen Fluss bestimmen.
Und jetzt müssen wir zeigen, dass das ein Fluss ist.
Und für diesen Fluss gab es ja diese drei Eigenschaften,
irgendwie diese Asymmetrie, dann die Flusserhaltung und diese erste Bedingung mit dem,
was waren die erste Bedingungen?
Kapazitätsbeschränkung, genau, ja. Also, dass ich nie
mehr Fluss rüberschicke über eine Kante, als ich Kapazität habe.
Also, wir müssen zeigen,
F-Plus auf Strich hat die drei Eigenschaften eines Flusses, Kapazitätsbeschränkungen,
also mit Rief Flusserhaltung und dass tatsächlich diese Gleichung hier gilt.
Also, dass der Fluss F-Plus F-Strich,
dass das das Gleiche ist,
wie der Fluss F plus der Fluss F-Strich
Genau, wir zeigen die ersten beiden Eigenschaften,
also Kapazitätsbeschränkungen, Asymmetrie, Flusserhaltung und das hier könnt ihr
zu Übung machen oder da steht auch im Kormen drin.
Also ein paar von den anderen Sachen,
wo ich dahin geschrieben hatte zur Übung,
die stehen gar nicht im Kormen drin, stehen halt auch als Übungsaufgaben drin,
aber das stünde zum Beispiel auch wirklich in dem Kormen drin,
könnt ihr also lesen.
Machen wir über Kapazitätsbeschränkungen, also wir wollen zeigen,
dass die Summe hier F-Plus F von UV,
dass die Kleiner gleich der Kapazität ist.
Das ist ganz spannend, weil F-Strich ist ja einfach
nur ein Fluss in dem Restnetzwerk.
Das ist ja gar kein Fluss in G. Wir behaupten jetzt nur einfach,
naja, wenn wir aus dem Fluss in Gewehre gucken,
wenn was passiert
Was wissen wir? Wir wissen, F-Strich-UV ist kleinergleich der
Kapazität im Restnetzwerk. F-Strich ist ja ein Fluss in diesem
Restnetzwerk. Und wir kennen die Definition von diesem CFUV.
Jetzt kann man ausrechnen, dann sagt man, okay,
dann ist F-Plus der Strich von UV ja das Gleiche nach Definition von
dieser Flusssumme hier, wie F-UV plus F-Strich von UV.
Das ist das Gleiche, oder das Kleinergleich,
weil F-Strich von UV ja kleinergleich CFUV ist, was das Gleiche ist,
wie C-UV-F-UV, also ist das Kleine gleich dem hier.
Jetzt kann man F-UV minus F-UV rechnen,
dann ist man bei CUV,
Und dann sieht man, dass F-Plus-F-Strich von UV,
kleiner gleich, C-U-V ist, schon fertig.
Das war relativ einfach. Man benutzt die Definition von der
Kapazität im Restnetzwerk und ist fertig. Kapazitätsbeschränkung war einfach Asymmetrie,
auch wieder als erstes die Definition von dieser Flusssumme benutzt.
Und dann ist das ja das Gleiche,
wie wenn ich die beiden einzeln umdrehe.
Also F-U-V ist minus F-V-U, F-U-V ist minus V-Strich-F-U,
weil es ja beides Flüsse sind.
Also gilt für beide Nasymmetrie-Eigenschaft
Und dann kann ich das Minus nach vorne ziehen.
Und dann kann ich wieder genauso,
wie ich das hier an der ersten Teile gemacht habe,
einfach diese Definition von der Flussnummer ausnutzen.
Und dann steht da die Asymmetrie.
Hier vorne ist der Fluss F plus F Strich,
hier ist der Fluss F plus F Strich und steht ein Minus davor.
Und da nutzt man einfach nur diese Asymmetrie der einzelnen Flüsse.
Genau. Und dann ist halt noch zu zeigen die Flusserhaltung,
dass das dir tatsächlich null ist.
Kann man sich schon relativ schnell überlegen, wie das geht.
Da mache ich auch, benutze ich einmal
die Flusssumme
Naja, dann ziehe ich die, also im Schnitt,
dann steht da irgendwie Summe über F-U-V plus F-Strich-U-V,
wenn ich die Flusshumme genommen habe,
dann ziehe ich die Summe auseinander,
sodass ich einmal die Summe habe über all die F-U-Vs und die Summe habe über all die F-Strich-U-Vs,
weil es beide Flüsse sind, sind die beide null,
also ist die Summe auch null.
Und dann muss man noch denen dir zeigen,
dass also tatsächlich der Fluss von F plus F-Strich
das gleiche sogar Fluss von S plus F plus der,
der Fluss von F plus der Fluss von F-Strich.
Genau, das geht aber auch relativ einfach,
da nimmt man sich hier die Definition von dem Fluss von
F und die Definition von dem Fluss von F-Strich,
summiert das auf und dann kommt man da halt zu
dem Ergebnis
Genau. So, jetzt kann man sich noch überlegen,
dieser Fluss hier, der ist ja positiv.
Ergo kann ich, ich nehme ihren Fluss,
also ich habe, am Anfang habe ich mein Flussnetzwerk.
Jetzt bestimme ich einen Fluss, also irgendeine Fahrt von Essen
nach Tee und sage da irgendwie, okay,
was kann ich da maximal rüberlaufen lassen über diesen Pfad?
Das kriege ich ja durch die minimale Kapazität irgendwie raus.
Und den Fluss lasse ich darüber laufen. Jetzt bestimme ich
das Restnetzwerk, bestimme da einen Fluss und addiere den dazu.
Habe ich wieder einen neuen Fluss. Der muss ja
größer sein, weil alle flüssiger positiv sind.
Jetzt bestimme ich wieder, Das Restnetzwerk zu diesem jetzt neuen Fluss.
Bestimmen da wieder, dann in diesem des neuen Restnetzwerk,
wieder ein Fluss, addiert den wieder dazu und so weiter.
Kommt immer was dazu. Es gibt eine obere Grenze,
weil es kann ja nicht beliebig viel aus der Quelle rausfließen.
Ärger muss das irgendwann aufhören. Irgendwann bin ich fertig.
Was ist jetzt noch das Problem? Also jetzt hätte ich ja
schon mal ein schönes Verfahren, um einen maximalen Fluss zu bestimmen.
Stimmt das? Ja oder nein? Was stört dich?
Ja, ja genau, aber das Ganze nennt sich Anfluss.
Das wäre jetzt noch nicht das Problem
Was ist jetzt noch das Problem? Findet ihr das alle gut, das Verfahren?
Ich meine, das funktioniert auch, aber klingt jetzt,
warum, warum solltet ihr mir das nicht glauben,
wenn ich sage, wir sind fertig?
Wir sind fertig, Feierabend. Warum stimmt das nicht?
Bitte? Weil ich das frage, ja genau.
Voll die gute Begründung. Genau, läuft ein Metaargument dazu,
das ist so ungefähr. Ne, warum, also stört euch nichts? Wenn ich jetzt sage,
so ist ja cool, jetzt haben wir ja ein Verfahren,
wir bestimmen immer den nächsten Fluss und es wird ja auch tatsächlich immer mehr,
so, das ist tatsächlich so, es wird tatsächlich immer mehr,
so, das ist okay,
da habe ich nicht gemogelt
Und jetzt sage ich, ja cool,
das machen wir so lange, bis das Verfahren terminiert.
Da kann man sich jetzt nochmal überlegen, terminiert das wirklich,
aber das ist irgendwie auch relativ klar,
weil man ja wirklich immer das Restnetzwerk bestimmen kann.
Und entweder gibt es da einen Fluss drin,
dann kann ich den nehmen und drauf verlieren,
dann wird es mehr oder es gibt halt keinen mehr,
dann höre ich auf.
Aber was ist das Problem? Wir wissen noch nicht,
dass es da maximal ist. Genau, das muss ja gar nicht
der Maximale sein. Da wird es mal immer größer,
aber vielleicht wird das dann drei, fünf, sieben,
neun und ich bin fertig und eigentlich gibt es so einen Fluss,
wenn ich mal in dem Restnetzwerken einen anderen Fahrt genommen hätte oder irgendwie sowas,
der hat 15 oder irgendwie.
Das weiß ich halt noch nicht. Sprich,
ich hätte jetzt schon ein Verfahren, um einen immer größeren
Fluss zu bestimmen und kann da auch irgendwann aufhören.
Aber was ich halt nicht weiß, ist,
ob der wirklich maximal ist
Bitte? Nö, also wenn ich jetzt das Verfahren,
so wie ich es eben skizziert habe, wenn ich sage so,
naja, ich bestimme das Restnetzwerk und da drin jetzt wieder ein Fluss von S nach Tee,
so, und nehme den,
dann ist dieses Bestimmen des Flusses von S nach Tee.
Das ist ja nicht eindeutig. Du kannst ja irgendwie,
haben wir ja auch gesehen bei den Beispielen,
dass ich irgendwie so einen etwas grünen Weg genommen habe,
so, ne, man hätte ja auch einfach so gehen können.
So, und diese Wahl der Kanten ist ja nicht eindeutig.
Du kannst ja zum Beispiel mit den Sachen,
die wir schon hatten, du könntest eine Tiefensuche machen,
du könntest eine Breitensuche machen, du könntest irgendwas anderes machen.
Maximale Kapazität des Flussnetzwerks
Die maximale Kapazität des Flussnetzwerkes, also die eindeutig ist,
der maximale Kapazitätswert irgendwie an enger Kante.
Ich weiß nicht genau, was die maximale Kapazität des Flussnetzwerks sein soll.
Wie kann man sie nicht auserst rauslesen? Okay. Dazwischen
halte ich auch. Das mit dem dazwischen? Also das
aus S raus, da kriege ich wieder eine 100er-Karte.
Ja. Das ist die maximale, kann man sie mit Fluss wechseln.
Ja, dieser Einsatz. Ja, bei dem Beispiel ja
. Aber sonst, wenn das Netzwerk jetzt so ist,
was man maximal Der Monkey Island Stan.
In nasmus. Ja, zumindest eine obere Schranke.
Kommt man damit immerhin, wenn man diesen Verfahren folgt.
Genau, das ist jetzt ein bisschen doof, weil ja,
tut man. Ja, das Verfahren ist ja auch korrekt,
aber warum? Ob das so wichtig ist, ja.
Ihr wollt auch Informatiker werden, nicht irgendwie Programmier-Heavies,
die nur Library-Funktionen aufrufen,
Doch, das ist wichtig. Ihr solltet wissen, warum
Verfahren korrekt sind. Genau, und das geht gleich mit Schnitten.
Ist auch ein echt schöner Satz so und auch gar nicht
so kompliziert. Aber einmal hier kurz zusammenfassend bis hierhin,
Restnetzwerk zu einem gegebenen Flussnetzwerk und dem Fluss besteht das dann
aus den Kanten, die mehr Fluss aufnehmen können.
Und das, bei einigen Kanten ist es irgendwie klar,
wenn ich eine Kante habe, die bisher Fluss 5 hat,
hat aber Kapazität 10, dann weiß man ganz schnell,
ja, der geht noch 5 rüber.
Aber die, wo man halt aufpassen muss, ist,
dass es dann auch irgendwie Rückwärtskanten entstehen können,
weil ich das eben auch zurückschieben kann.
Und die wichtige Eigenschaft ist eben,
was wir jetzt auch gleich ganz viel ausnutzen,
wenn man in diesem Restnetzwerk GF, FS.
Fluss, einen weiteren Fluss F-Strich findet,
dann ist eben F-Plus F-Strich ein Fluss in G.
Obwohl ich F-Strich eben in diesem GF bestimmt habe,
ist das ein Fluss auch in G und der hat eben diesen Wert hier,
Fluss von F-Plus von F-Strich.
Und das ist, weil der Fluss von der Strich
eben positiver Wert ist, größer als der Fluss von F.
Das ist die wichtige Eigenschaft
Achso, genau. Wenn ich, kann man nochmal definieren,
hier die Erweiterungspfade, das war das,
worüber wir eben auch schon die ganze Zeit geredet haben,
wenn ich halt dieses Restnetzwerk gehe.
F. habe und ich nehme jetzt einen Pfad von S nach Tee.
Da nenne ich das auch ein Erweiterungspfad, weil ich quasi den Fluss,
den ich schon habe, um diesen Pfad erweitere.
Ich nehme dann den Vater, das ist ja der Fluss in
dem Restnetzwerk und um den erweitere ich den eigentlichen Fluss.
Und da nehme ich halt quasi als Fluss das maximal Mögliche.
Ich gucke mir dann alle Kanten in meinem Erweiterungspfad an,
gucke mir an,
was die für eine Kapazität haben und davon nehme ich mir das Minimum,
weil das ist das,
was ich maximal darüber schicken kann
Das Beispiel, was auch eben hatte,
wenn ich irgendwie eine Kante habe, 100,
eine Kante habe, vier und noch eine Kante 100,
dann kann ich da eben maximal vier rüberschicken.
Deswegen gucke ich mir von jeder Kante die Kapazität an,
davon das Minimum. Und das ist die Restkapazität der Röhre,
der Fluss, den ich da noch rüberschicken kann.
Und das würde dann immer weniger fahren.
Das Problem ist vollständig Einfluss. Ja, es werden aber
nicht immer weniger Pfade, aber ja,
das können wir machen
Steht auch. Hatten wir ja. Genau, genau so geht es.
Wir wissen nur nicht, warum. Also wir wissen nicht,
dass das tatsächlich zum Maximalen führt. Genau, so,
da haben wir es nochmal,
da ist jetzt dieses Beispiel von vorhin, also die,
wir hatten ja bei dem Beispiel ganz am Anfang die zwei Iterationen,
dann haben wir die dritte Iteration per Hand gemacht,
wo wir dann gesagt haben, oh,
dann können wir doch von SU, SUWT was schicken.
Hier ist jetzt das Restnetzwerk, was nach der zweiten Iteration entstanden wäre.
Und da kann man dann nämlich schön sehen, oh,
jetzt kann ich ja diesen Fahrt hier nehmen
Und dann kann man sagen, okay, die minimale,
ja, die minimale Kapazität entlang dieses Pfades ist vier,
also kann ich da noch einen Fluss der Menge vier rüberschicken über diesen Weg.
Und dann updatet man seinen anderen Fluss. So sah nämlich dieses,
der Graf aus und das war eben das Restnetzwerk dazu und
dann kann man eben, was mache ich denn hier?
So sieht es aus, den kann ich nehmen und dann sieht es sowas.
Also, mich verwirrt die, die kann, glaube ich, weg.
Also das war nach der zweiten Iteration der Stand,
das Restnetzwerk sieht so aus, vor allem hier,
wenn man hier sieht,
man hat diese Kante von W nach U,
der Kapazität vier
Dann sieht so das Restnetzwerk aus. Man bestimmt da drin
einen Fluss, können wir zum Beispiel den nehmen.
Und wenn man diesen Fluss, versucht euch mal zu merken,
SU-U-W-W-T, jeweils mit vier, wenn man den hier dazu addiert,
dann kommt hier halt zwölf, 0,19.
Und so sieht es dann aus. Zwölf,
0,19. Genau, das kann man machen, ja.
Die hier, ne? Ja. Du hast aktuell ja
von UNAV Fluss der Menge 1 und das Kapazität 4,
das erklärt die drei hier
Und du hast von V nach U
ein Fluss der Menge minus eins und eine Kapazität 10,
da hast du 10 minus minus eins und dann hast du wieder diese 11.
Das ist halt genau die Stelle, wo man auch,
wenn man das jetzt irgendwie händisch durchrechnet,
das sind genau die Stellen, wo man leicht Fehler macht.
Genau, so. Genau, und jetzt kann man wieder dazu das Restnetzwerk bestimmen.
Jetzt hat man ja hier irgendwie einen Fluss der Menge 12,
hier wieder einen der 1. Hier hat man jetzt aber
gar keinen.
Dann sieht das Fluss
das Restnetzwerk so aus
Hier habe ich elf, dann kriege ich irgendwie drei von
U nach X und elf von X nach U.
Das sind irgendwie die Kanten hier und so weiter.
Und jetzt kann man halt gucken, ich meinte ja vorher,
ich glaube, es geht nichts mehr,
aber man kann jetzt gucken, ob es hier noch eine Erweiterungsfahrt gibt.
Und ich glaube, das ist relativ hoffnungslos. Ja,
genau, das wäre sogar streng genommen, gar kein Flussnetzwerk mehr. Ich frage mich gerade,
ich muss das gleich nochmal nachlesen, ob dieses,
ob das Restnetzwerk tatsächlich ein Flussnetzwerk sein muss oder ob man da irgendwie sagt,
ich bin ein bisschen kulanter mit der Definition,
weil man bestimmt ja quasi einen Pfad in diesem Restnetzwerk von
S nach
Und interpretiert das dann als Fluss. Ich meine, gut,
solange es noch einen Fluss gibt, geht das immer noch.
Ich frage mich gerade, ob diese Situation eintreten kann,
das ist eigentlich kein Flussnetzwerk gibt,
aber es ist eigentlich kein Flussnetzwerk mehr ist,
aber es gibt noch einen Fahrt von S nach Tee.
Weil dann dürfte man den, glaube ich, nehmen,
muss ich nachher nochmal nachlesen, bin ich mir nicht ganz sicher.
Aber das Verfahren ist ja trotzdem klar.
Okay, klar, da gibt es ja nichts mehr.
Da gibt es keinen Fahrt mehr von S nach Tee,
den ich irgendwie ausnutzen könnte.
Von X komme ich nicht nach Tee und von Weh
komme ich auch nicht nach Tee
Kommt von nirgendwo mehr, dachte ich. Warte,
von wem komme ich noch nach Tee, aber ich komme nicht mehr zu weh.
Also geht das nicht mehr. So. Das wollen wir noch machen,
wenn Geh wieder so ein Flussnetzwerk ist mit Kapazitätsfunktion C,
F ist ein Fluss in G,
P ist ein Erweiterungserweiterungspfad in dem Restenetzwerk GF und dann definiere ich mir die folgende Funktion hier.
FP, das ist jetzt quasi einfach der Fluss.
Das wird hier jetzt auch gesagt, dann ist FP ein
Fluss in GF. Die definiere ich mir halt so,
dass ich sage, FP von Erkannte UV,
das soll gerade die minimale Kapazität entlang dieses Pfades sein,
also dieses CFP,
wenn UV zu P gehört und wenn VU zu P gehört,
dann eben Minus davon und Null sonst.
Also im Grunde genommen macht man nichts anderes als die Erweiterungsfahrt
entlang zu gehen und daraus einen Fluss abzulesen.
Genau, und dann sagt man, dann ist FP eben
Einfluss in GF. Mit dieser Eigenschafter. Das haben wir
eben schon die ganze Zeit uns immer mal so überlegt,
das kann man auch relativ schnell zeigen, dass das ein Fluss sein muss.
Und dann kann man, den hatten wir ja schon,
Den kann man zeigen, ja, dann weiß man,
FP ist ein Fluss, den hatten wir schon.
Und dann kann man das hier zeigen. Wenn ich wieder G,
C und F habe, wie eben,
und ich habe diesen Erweiterungsfahrt P, und ich definiere,
mit dem wir eben,
dann ist F-Strich eben definiert als F-Plus-FP-Einfluss in G mit dieser Eigenschaft.
Im Grunde genommen wird da gerade nichts anderes gemacht,
als zu sagen, Genie hatten wir ja schon für einen beliebigen Fluss-F-Strich.
Und jetzt fasst man das nochmal genauer, dass man sagt,
ich nehme mir irgendeine Erweiterungsfahrt, ich definiere mir den so maximal,
wie es geht, über dieses CFP.
Und das ist dann tatsächlich auch ein Fluss. Also das,
was man intuitiv auch machen würde,
wenn ich irgendwie einen Pfad von S nach Tee bestimme im Restenetzwerk,
dann nehme ich da halt so viel Fluss,
wie nur irgendwie geht und nicht irgendwie weniger
Da nochmal, erstens und zweitens hatten wir eben schon und drittens halt hier nochmal,
dass diese Eigenschaft hier F plus F-Strich, die gilt insbesondere auch,
wenn man über einen Erweiterungsfahrt so viel wie irgendwie möglich leitet.
Also diese Restkapazität CFP ausnutzt. Gut, da ist die
Ford Falconson-Methode. Wir fangen mit einem leeren Fluss an,
wir bestimmen das Restenetzwerk GF und eben diese Kapazitätsfunktion CF,
dann bestimmen wir eine Erweiterungsfahrt.
Wenn es keinen gibt, hören wir auf.
Und dann erhöhen wir F eben entlang dieses Erweiterungsfahrtes P,
um diese maximal mögliche Kapazität und dann gehen wir wieder zu eins,
bestimmen wieder das neue Restnetzwerk und die Kapazitäten bestimmen darum,
wieder in Erweiterungsfahrt und immer so weiter.
Und F ist eben dann irgendwann ein maximaler Fluss.
Wird zumindest im Moment noch behauptet, müssen wir gleich noch zeigen.
Aber ist tatsächlich einer. Terminiert das Verfahren,
das kann man wirklich schnell sagen, ja, das terminiert,
ist F wirklich maximal, das ist jetzt so die Frage.
Termination ist irgendwie klar, weil ich kann irgendwie immer weiter
dieses Restnetzwerk bestimmen und den Fluss immer wieder drauf addieren auf den Fluss,
den Geh schon hat und da der nach oben beschränkt ist,
muss das irgendwann terminieren.
Aber ob F wirklich maximal ist, das wissen wir
noch nicht. Aber schaffe ich das heute noch
Maximaler Fluss minimaler Schnitt. Das Theorien besagt, Fluss ist maximal genau dann,
wenn das Restnetzwerk keinen Erweiterungsfahrt mehr enthält. Das ist eigentlich genau das,
was wir haben wollen, weil wir dann sagen können,
wenn ich jetzt irgendein Restnetzwerk habe,
also ich habe irgendeinen Grafen mit einem Flussnetzwerk mit dem Fluss,
ich bestimme das Restnetzwerk, wenn ich keine Erweiterungsfahrt mehr da drin finde,
dann weiß sich der Fluss in dem anderen ist maximal.
Super. Zum Beweis benötigen wir Schnitte.
Wer ist für Pause?
Nö. Schnitt
Ich habe die Knotmenge V, ich partitioniere sie in zwei Mengen S und Tee.
Das haben wir auch schon mal gesehen, irgendwie bei den
minimalen Spannbäumen. Hier noch mit der speziellen Eigenschaft,
die Quelle S soll in der Menge groß erst drin sein.
Die Senke Tee soll in der Menge Großtee drin sein.
So partitioniere ich mir meine Knotenmenge V und dann kann ich
von Nettofluss und der Kapazität eines Schnitte sprechen.
Das war das, was du vorhin schon haben wolltest.
Kann ich nämlich sagen, ich nehme dieses FST,
das ist dann der Fluss,
der Nettofluss durch den Schnitt und ich nehme die Kapazität CST,
das ist die Kapazität dieses Schnittes.
Und ein minimaler Schnitt ist dann ein Schnitt,
dessen Kapazität die kleinste von allen Schnitten des Netzwerkes ist
Gucken wir uns mal ein Beispiel an. Wenn ich das hier habe,
jetzt habe ich die Mengen so partitioniert, dass ich sage,
hier SVU, das ist meine Menge Großess,
da ist ja das Kleine, ist drin.
Und WXT, das ist meine Menge Großtee,
da ist ja das kleine Tee drin.
Das ist jetzt ein Schnitt. Und hier durch die
rote Linie angedeutet, das sind gerade die relevanten Kanten.
Und wenn ich jetzt den Fluss, also dieses FST ermitteln möchte,
ladiere ich all die Flüsse auf,
die durch diesen Schnitt führen.
Was kommt da raus
Also ich addiere jetzt quasi, ich gehe alle Knoten durch,
die in S sind und gucke immer,
was ist der Fluss davon zu den Knoten, die in T sind.
Dafür sind halt die meisten Kanten nicht relevant, die ganzen Kanten,
die auf der linken Seite sind, nicht relevant,
sondern nur die drei, die da irgendwie durch die Routelinie hervorgehoben sind.
Aber was kommt da raus aus FST? 19,
genau, 12 plus 11. Und dann dieses eine Ding,
wo ich einmal aufpassen muss, es gibt noch einen Fluss
von U nach W, aber der ist minus 4.
Da habe ich 12 plus 11, 23, minus 4,
19. Also habe ich einen Fluss durch den Schnitt von 19.
Und was habe ich als Kapazität? Da ist
auch ein bisschen Was ist Kapazität von S nach Tee?
Macht man jetzt genauso wie beim Fluss auch, dass man sagt,
ich führe da auch diese Summennotation ein und dann weiß ich halt,
hier habe ich eine Kapazität von zwölf, von V nach W,
hier von U nach X habe ich eine Kapazität von 14. Ja,
und von U nach W gibt es gar keine Kante.
Also ist die Kapazität null. Da wird es ja nicht
gedreht. Die Kapazität von U nach W ist null.
Die Kapazität
Dabei zählt es null. Beim Fluss haben wir gesagt,
wenn ein Fluss von A nach B ist,
dann ist von B nach A das Negative.
Aber die Kapazität der Kante UW ist gerade null,
da kann nichts rüberfließen in dem Netzwerk.
Im Restnetzwerk ja, aber in dem nicht.
Das heißt, die Kapazität dieses Schnittes ist 26.
Die Kapazität, wenn ich den Schnitt hier machen würde,
direkt nach dem S, dann wäre die Kapazität irgendwie 29.
Der Fluss wäre auch 19. Wenn ich den Schnitt hier mache,
Was kriege ich dann als Fluss raus?
Also wenn ich das W noch dazu nehme zu der Menge,
esse, was kriege ich jetzt als Fluss raus?
Wieder 19, ne? Kommt einem schon irgendwie vertraut vollständig
, kommt da 19 raus. Also hier ist der Fluss
immer gleich so. Egal welchen Schnitt ich betrachte,
ich wohl immer den gleichen Fluss so, kann man zumindest mal mutmaßen.
Die Kapazität ändert sich, aber da kommt jetzt das Spiel,
was du auch schon vorhin meintest, so, naja,
wenn ich dann mal irgendwie die minimale Kapazität rauskriege,
größer kann der Fluss nicht werden.
Also wenn tatsächlich der Fluss bei jedem Schnitt die gleiche Zahl ist,
Und die Schnitte haben alle eine unterschiedliche Kapazität,
vielleicht haben sie auch mal die gleiche,
aber so ein paar haben wir unterschiedliche Kapazität,
dann muss der Fluss durch die minimale Kapazität beschränkt werden.
So, sei geh ein Flussnetzwerk, CST wie üblich,
F ein Fluss und ST jetzt ein Schnitt.
Dann gilt der Fluss durch den Schnitt, das ist gerade der Fluss.
Das heißt, der Nettofluss durch beliebige Schnitte ist immer gleich,
nämlich gleich den Wert des Flusses. Ja,
das war das Erste, was wir eben vermutet haben,
weil überall 19 rausgekommen ist, konnte man vermuten,
vielleicht ist der Fluss immer gleich,
ist er tatsächlich
Ausrechnen, FST ist das Gleiche wie der FSH mini oder dünn.
Ah ja, genau. Gleiche Idee wie vorhin,
wenn ich auf beiden Seiten S plus S addiere,
dann habe ich hier FST plus FSS.
S&T vereinigt das V. Vorne halte ich fest,
hinten kann ich vereinigen, der muss da FSV rauskommen.
Das ist also okay. Dann habe ich das hier,
dann weiß ich, wie der FSS ist null.
Also kriege ich FSV raus. Und dann kann ich jetzt
vorne aufsplitten. Dann sieht das so aus
Er ist minus, groß, erst, minus klein,
ess, vereinigt mit klein. Es ist gerade die Menge Großes.
Also da benutze ich wieder den dritten Punkt aus diesem Lämmertar,
dass wir immer ganz am Anfang hatten.
Und jetzt kann man sich wieder überlegen, dass das hier
immer null sein muss. Also wenn ich irgendein Element aus S-Minus
erst rausnehme und ich summiere das auf über die ganzen V,
dann kommt da immer irgendwie null raus.
Das heißt, ich kriege dieses FSV und das ist gerade
der Fluss.
Nach Definition.
Ich muss kurz überlegen
Ach ja, genau. V ist ja die ganze Knotenmenge,
ne? Deswegen stimmt das, was ich eben gesagt habe.
Ich dachte gerade irgendwie, das stimmt ja gar nicht,
aber wenn V die ganze Knotenmenge ist,
dann gilt das wieder nach dieser, was wir ganz,
ganz am Anfang hatten, diese Flusshaltungsgeschichten und so.
Und dann gilt das für jeden Knoten.
Genau. Dann haben wir das. Dann wissen wir also,
wir können beliebigen Schnitt machen und der Fluss ist immer gleich.
Jetzt in einem Flussnetzwerk ist der Wert eines beliebigen Flusses durch
die Kapazität jedes beliebigen Schnittes nach oben beschränkt.
Ich kann also irgendeinen Schnitt nehmen und dann ist die Kapazität
des Fluss, er ist der Fluss dadurch beschränkt. Ja,
und dann kommt gleich das Lämmert oder er ist Korola,
dann kann ich auch den minimalen Schnitt nehmen und dann muss
der Fluss dadurch beschränkt sein
Den bin ich zwar noch nicht ganz fertig, weil dann weiß ich nur,
der Fluss kann maximal so groß werden wie der minimale Schnitt.
Und dann sagt dieses Min-Cut, Max-Flow-Theorem, dass sie tatsächlich
gleich sind. Sonst wüsste ich ja erstmal nur,
der Fluss ist dadurch nach oben beschränkt, aber nicht,
dass die gleich sein müssen.
Genau, so wollen wir zeigen hier, sei FST
ein Schnitt und Essen beliebiger Fluss. Wir wollen zeigen,
dass der Fluss kleiner gleich der Kapazität des Schnittes ist.
Dann fängt man wieder an, F ist nach Definition ja,
nach dem, was wir eben bewiesen haben,
ist F gleich dem Fluss durch den Schnitt.
Das hier ist FST, ist nach der Summennotation
gerade das hier
Und jetzt kann man jedes FFU durch die Kapazität nach oben,
nach oben beschränken, genau.
Sprich, F-U-V ist ja, kleiner gleich, C-U-V,
da hat man das immer nach oben beschränkt.
Und das hier auch wieder nach Summen-Notation ist das gleiche wie CST.
Und dann hat man gezeigt, dass der Fluss kleiner gleich der Kapazität des Schnittes ist.
Und dann kann man eben den Minimalen nehmen und dann weiß man,
der Fluss muss durch den minimalen Schnitt nach oben beschränkt sein.
Da steht es nochmal in den Anmerkungen, um der Satz,
den wir eben bewiesen haben und darunter die Anmerkung,
der maximale Fluss,
weil ja jeder Fluss durch jeden Schnitt beschränkt sein muss,
muss auch der maximale Fluss durch jeden Schnitt beschränkt sein,
also muss der maximale Fluss auch durch den minimalen Schnitt
beschränkt sein
Genau. Und dann hier, ne, das wichtige Max
Flohmann-Kattheorien sagt aus, dass die Werte tatsächlich gleich sind.
Wollen wir das noch machen? Vor der Pause?
Also eher nicht. Achso. Ja, komm,
die zehn Minuten geben wir uns noch.
Kannst du noch Kim? Zehn Minuten noch, okay.
Dann machen wir noch zehn Minuten und dann sind wir auch durch.
Sei geh gleich VE mit, ne, allem,
was wir vorhin schon hatten, Kapazitätsfunktion, C,
ST und so weiter, Fluss FNG.
Und jetzt sagen wir hier, die folgenden Bedingungen sind äquivalent.
F ist ein maximaler Fluss
Das Restnetzwerk enthält keine Erweiterungsfahrt. Das ist das,
was wir im Algorithmus ausnutzen. Und es ist,
der Betrag des Flusses ist gleich Kapazität, ST für Einschnitt ST von G.
Und wenn es für Einschnitt sein muss, diese Gleichheit,
dann muss es der Minimale sein. Weil es kann ja
nicht für einen größeren Schnitt als den Minimalen die Gleichheit gelten.
Und gleichzeitig der Wert des Flusses noch kleiner sein als der kleinste Schnitt.
Das wird nicht funktionieren. Also muss das gleich sein zu den minimalen Schnitt. Und der Grund,
warum man das so macht und nicht einfach nur zeigt,
dass erstens und zweitens Äquivalent sind, ist,
dass es eben leichter, das zu zeigen, wenn eins,
dann zwei, wenn zwei, dann drei, wenn drei,
dann eins, dann hat man so einen Ringschluss,
dann hat man sie
alle gezeigt
Genau. Erster ist einfach Widerspruchsbeweis, wenn ich weiß,
ich habe einen maximalen Fluss, dann enthält das Restnetzwerk keine Erweiterungsfahrt.
Naja, wenn es noch eine Erweiterungsfahrt hätte,
könnte ich den nehmen, könnte den zu dem Fluss F
drauf addieren und dann wäre der größer.
Das würde dem widersprechen, dass F schon maximaler Fluss ist.
Also von 1 zu 2 ist ziemlich einfach. 2 zu 3 schwieriger,
wenn ich es zeigen will, das Restnetzwerk enthält keiner,
ich weiß, das Restnetzwerk enthält keine Erweiterungsfahrt und ich würde zeigen,
dass jetzt der Betrag des Flusses gleich der Kapazität
des Schnittes ist
Dann wissen wir also, GF enthält keinen Fahrt von S
nach T, weil sonst gibt es ja noch eine Erweiterungsfahrt.
Und dann definieren wir uns das wie folgt S,
das sind all die Knoten,
für die es einen Pfad gibt im Restnetzwerk von S nach V.
Und Tee ist dann eben das Umgekehrte.
Jetzt wird behauptet, ST ist ein Schnitt. Naja,
erstmal ist es eine Partition der Knotenmenge,
weil in S sind Knoten drin und in Tee sind all die anderen Knoten drin,
also habe ich eine Partition hier und der Knotenmenge.
In Groß-Ess muss klein S drin sein, weil es ganz
bestimmt einen Pfad gibt von klein S zu klein ist.
Ich bewege mich gar nicht. Und gleichzeitig kann ein Groß-Ess
das kleine Tee nicht drin sein,
weil das ja gerade hier die Bedingung ist,
GF enthält kein Fahrt von S
nach Tee
Und hier tun wir ja nur die Knoten rein,
für die es eine Pfad gibt. Es gibt also keinen Vater,
das kleine Tee ist da nicht drin,
dann muss das kleine Tee, also ein Großtee sein,
sprich, ich habe hier einen Schnitt, ST.
Dann wissen wir noch, der Fluss von U nach V,
der muss überall gleich der Kapazität sein.
Weil sonst, da sonst UV, eine Kante wäre im Erweiterungsnetzwerk.
Und dann könnten, ja, und dann würde V in S gelten.
Also hier, wir gucken uns die Knoten an,
Entschuldigung, da, wir gucken uns die Knoten an,
wo UNS ist und VNT
Und für diese Knoten, also quasi für die Kanten,
die gerade den Schnitt kreuzen. Die Kanten gucken wir uns
an. Und bei denen kannten die den Schnitt kreuzen,
also die ihren Anfangspunkt in S haben und ihren Endpunkt in Tee.
Für die muss gelten, dass sie die maximale Kapazität ausnutzen.
Wenn sie das nämlich nicht täten,
dann gäbe es diese Kante im Reste-Netzwerk,
weil ich dann sagen könnte,
Kapazität minus Fluss durch ist noch eine positive Zahl und dann gibt es die Kante im Restnetzwerk.
Und dann wäre aber nicht VNT,
sondern weil es dann ja diese Kante von S nach Tee gäbe,
würde ich wegen der Definition von S
hier das noch in die Menge groß erst aufnehmen
Naja, und dann wissen wir also,
dass der Fluss von S nach Tee,
also das hier wissen wir dann, dass der Fluss,
Moment, nee, das wissen wir von dem vorherigen Satz,
dass der Fluss von F ja gerade der Fluss durch den Schnitt ist.
Und wenn aber der Fluss durch den Schnitt ja gerade über diese Kanten ja definiert ist,
die von S nach Tee gehen, von Großes nach Großtee,
und die alle gleich der Kapazität sind,
dann muss FST das Gleiche sein wie CST.
Und dann hat man bewiesen,
dass der Fluss gerade den Wert der Kapazität des Schnittes hat
Und dritter, wenn ich jetzt drittens weiß und ich will zuerstens,
ich weiß jetzt, es gilt der Betrag von F,
also die Menge des Flusses, ist gleich der Kapazität des Schnittes,
dann will ich jetzt zeigen, dass Effen maximaler Fluss ist.
Naja, das geht ungefähr so einfach wie erstens,
wir haben ja vorhin schon gezeigt,
dass der Fluss höchstens so groß sein kann,
wie eben der minimale oder wie irgendein Schnitt.
Alle Schnitte beschränken den nach oben. Naja,
und wenn dann für irgendeinen Schnitt das hier gilt,
dann muss Effen maximaler Fluss sein,
noch größer kann er nicht sein.
Wenn er größer wäre, kann er gleichzeitig klarer gleich sein.
Fertig. Genau, und damit hat man dann bewiesen,
dass die drei Aussagen Äquivalent sind hier
Diese drei Aussagen äquivalent sind. Und dann kann man ihm algorithmisch das ausnutzen,
indem man halt immer wieder Restnetzwerke bestimmt und darin Erweiterungspfade.
Und wegen dem dritten Punkt und der Äquivalenz zum ersten Punkt
weiß man dann eben, oh,
dann habe ich tatsächlich einen Maximalfluss.
Genau. So, jetzt wollen wir das noch einmal kurz sehen,
diese Ford Fuckerson-Methode. So sah die ja aus.
Und jetzt kann man sich überlegen,
wo hat man da eigentlich Stellschrauben
Wo gibt es Wahlmöglichkeiten? Weil sie heißt ja Ford Falkerson
Methode und nicht Algorithmus. Also wo darf man Dinge wählen?
Genau. Hier ist irgendwie nicht so genau spezifiziert, wie
das passieren soll. Also bei den anderen Sachen ist klar,
wenn ich einen Fluss habe,
dann gibt es auf genau eine Art und Weise
eine Möglichkeit,
das Restnetzwerk zu bestimmen
Und wenn ich schon eine Erweiterungsfahrt habe, gibt es nur eine Möglichkeit,
dieses CFP zu bestimmen und da mit F zu erhöhen und so.
Das ist alles deterministisch, was du meintest. Aber hier bestimme ein Erweiterungsfahrt,
naja, das kann ich halt irgendwie machen,
das kann ich irgendwie naiv machen, indem ich einfach durchsuche,
bis ich irgendwie ein Fahrt von S nach Tee habe oder ich kann mir irgendwie Mühe geben.
Das ist die Stellschraube. Und hier nochmal das Beispiel aus
den vorherigen Folien so, am Anfang nimmt man engen Pfad,
die maximale, die minimale Kapazität ist die vier,
also hüllt man überall um vier.
Dann bestimmt man das Restnetzwerk, bestimmt da eine Fahrt von
S nach Tee,
Meine minimale Kapazität 7. Und addiert das eben zu dem Pfad,
zu dem Fluss dazu, den man schon hatte in seinem ursprünglichen Grab.
Bestimmt mal wieder das Restnetzwerk. Guckt wieder,
ob man noch einen Pfad von S nach T findet.
Minimale Kapazität 8. Bei dir das dazu und so weiter.
Das guckt man nochmal. Restnetzwerk findet man da nochmal
in Pfad. Tut man minimale Kapazität 4 drauf addieren.
Restnetzwerk bestimmen. Gibt keinen Weg mehr von S nach T.
Also hört man auf. Und so sieht das dann in
der Implementierung aus
Wenn man das so macht,
also ohne das jetzt hier genauer zu spezifizieren,
es gibt einen Pfad von S nach Tee.
Was meint ihr, wie die Laufzeit ist? Also nehmen wir mal,
man findet diesen Vater irgendwie in V plus E oder irgendwie sowas, so grob.
Was meint ihr? Was wird hier das hässliche,
nicht Buttleneck, aber was wird hier hässlich?
Das schreibt ja zwei Minuten.
Zwei Hochanzahl erkannten es nicht
Eine Matte, sie faul, wo man dann den Schluss hatte,
hat er gefragt, was für ein Punkt,
wo sie mir geht, ist der 20.000er-Karten, hier,
Denker, unter 50, 1,5, 1,5. Das heißt,
man könnte einmal drunter gefragt werden,
wie einer kann sich da, da hat er die Zwecke.
Genau. Genau, das Beispiel kommt auch gleich.
Deswegen fasse ich das mal nicht zusammen, das Beispiel kommt gleich.
Das Problem ist quasi, dass wenn man hier sagt,
hier an der Stelle, ich erhöhe den Fluss um dieses CFP,
dann ist die Anzahl der Iterationen der Whitechlife ja beschränkt durch den Wert des Flusses.
Und sowas ist immer total hässlich, weil wenn der Wert des Flusses ist,
was weiß ich, 10.000 ist oder so,
dann habe ich als Eingabegröße die Diskussion oder 1.000,
die Diskussion hatten wir ja schon, dann ist die Eingabegröße irgendwie nur 10 Bit,
weil um 1.000 dazu kurdieren wir auch irgendwie 10 Bit oder so.
Aber ich brauche vielleicht 1.000 Iterationen. Also hängt diese Anzahl
der Iterationen irgendwie von der Wertigkeit des Flusses ab.
Das ist immer richtig hässlich so. Und genau das Beispiel,
was man konstruieren kann, ist genau das, was du eben meintest.
Das kommt gleich noch. Vorschleife sind O-E,
weil Schleife wird maximal Wertigkeit des Flusses ausgeführt.
Und das ist halt hässlich. Da kriegt man irgendwie diese breiten Tiefendu und so,
das kriegt man irgendwie in den O von eh hin,
diese Iteration der Wahlschleife.
Und dann ist die Routine aber eben in O von eben mal dieses F-Stern.
Und das ist halt blöd, ne? Da will man
irgendwie drumherum kommen. Da noch mal kurz die Anmerkung für
Interessierte, was wir auch schon die ganze Zeit machen.
Wir gehen immer von ganz heiligen Kapazitäten aus. Rationale sind
auch okay, aber bei irrationalen kann halt Unsinn passieren so.
Bei irrational muss das Verfahren halt nicht terminieren,
das ist so
ein bisschen
Aber ich gebe auch so, in der Praxis tritt das
eigentlich nicht auf. Und hier ist halt dieser Problemfall,
wenn man jetzt für X irgendwie einen hohen Wert nimmt,
muss ja nicht gleich ganz so hoch sein, der ist 100 oder so.
Und man nimmt dann ständig diese Wege irgendwie SVUT. Ja,
und dann im Restnetzwerk eben die andere Richtung und wieder die Richtung,
wieder die Richtung, wieder die Richtung, so,
dann braucht man halt diese 100 Iterationen oder so oder 200 Iterationen,
um den maximalen Fluss rauszukriegen,
während man sonst einfach sagen würde, naja,
100 von SVT und 100 von SUT und ich bin fertig.
Aber wenn der Fahrt halt immer blöd gewählt wird,
dann muss man da 200 Iterationen machen.
Also bei wiederholt ungünstiger, weil das Fahrt des P Ähm,
wer da diese Laufzeitgrenze hier tatsächlich erreicht.
Ein Beispiel, wenn er für X100 wählt und wiederholt
SVU-T nehmt und dann im Rest der Netzwerk SUVT.
Weil im Rest der Netzwerk gibt es dann ja die andere Kante.
Dann braucht er diese 200 Iterationen. Und das ist halt
echt doof, ne? Und die Möglichkeit,
drumherum zu kommen, ist halt mit Edmunds Carb, zum Beispiel,
der spezifiziert halt genauer, wie man diesen Erweiterungspfad bestimmt.
Und er macht das eigentlich auf recht einfache Weise.
Der sagt einfach, lass uns eine breiten Suche machen.
Er sagt, wir nehmen uns das Restenetzwerk,
interpretieren alle Kanten mit dem Gewicht
Also die Kapazitäten haben ja was mit den Flüssen zu tun.
Das interessiert uns jetzt gerade nicht. Ihr sagt, alle kannten
mit Gewicht eins interpretieren. Und dann mache ich eine Breitensuche
dadurch und bestimme damit einen kürzesten Pfad von S nach Tee.
Und das nehme ich. Und tatsächlich ist es so,
dass das funktioniert. Ich meine, ist ja auch immer eine Erweiterungsfahrt,
wenn er irgendwie einen mit der breiten Suche findet.
Und dann wird es eben, ist es nicht mehr nur,
es ist nicht mehr nur korrekt, sondern auch sehr viel schneller.
Hier unten steht die Laufzeit. OV mal e-Quadrat. Weil
wenn ihr diese Pfade eben dann speziell mit der Breitensuche ermittelt,
dann geht das deutlich schneller
Und das Spannende ist eben, dass, wenn ihr das mit der Breitensuche macht,
dass ihr dann diesen Fall von eben, dass ihr da drumherum kommt.
Da nochmal in Rot unscheinbar platziert, aber das ist halt quasi das wichtige Resultat, ne? Weil das andere,
das würde man ja so,
also das andere kann man ja auch gar nicht implementieren,
weil da steht ja gar nicht, wie man diese Erweiterungsfahrt bestimmt,
man muss sich also irgendwas ausdenken und dann macht man das mit einer breiten Suche und das geht wunderbar.
Wenn ihr da wissen wollt, warum das tatsächlich funktioniert,
also die Frage ist ja jetzt quasi,
warum komme ich, wenn ich die Breitensuche mache,
um die Problemstellung von eben drumherum oder auch um alle anderen,
also warum habe ich damit diese schöne, bessere Laufzeit,
warum wird die Beißschleife jetzt eben nicht mehr so oft ausgeführt,
wie ich diese Kapazität des Flusses habe,
sondern nur noch viel,
viel seltener
Und das könnt ihr mal kaum nachlesen,
wenn ihr das lesen wollt. Hier steht es,
die Anzahl der durch die Edmunds Carp-Algorithmus vorgenommenen Flusserweiterung ist in UV
mal E und eben nicht mehr in Ovon F. Genau.
Letzte Folie. Da vor allem, wenn es euch interessiert,
steht da im Kormen noch sehr viel mehr zu.
Es gibt noch so ein Push-Relabel-Algorithmus, der läuft irgendwie hier in OV hoch
3. Und das geht auch noch schneller und so,
da steht dann was zu in den Kapitelanmerkungen im Kommen.
Aber da, an der Stelle wollen wir das verlassen. Also was ihr mitnehmen solltet,
ist, was Flüsse sind natürlich,
wie man die Restnetzwerke bestimmt, wenn man Fluss hat,
wie man Erweiterungsfahrt bestimmt und wie man dann,
wenn man eben diese Erweiterungsfahrt hat,
das wieder irgendwie in sein eigentliches Flussnetzwerk reinkriegt,
also sprich den Fluss darum erhöhen und wie man dann damit eben wieder das Restnetzwerk stimmt.
Es geht dann halt iterativ immer weiter. Und die Laufzeitgrenzen solltet ihr irgendwie mitnehmen,
dass ihr irgendwie wisst, okay,
Ford Falcons, das ist eine Methode,
aber wenn ich das ein bisschen clever mache, also ich meine,
Breitensuche zu nehmen ist jetzt ja nicht der große Wurf zu sagen,
ich bestimme den Fahrt von SNAT mit einer breiten Suche,
das Spannende da ist eher zu zeigen,
dass das dann tatsächlich funktioniert
Genau, und das sollte ich dann eben auch wissen,
dass das irgendwie ein V-Quadrat mal E geht oder was war das hier eh mal?
V mal E-Quadrat so rum. Super. Die letzten Folien sind Wiederholung,
ich glaube, die brauchen wir jetzt nicht durchgehen.
Das ist irgendwie die Wiederholung Flussnetzwerk nochmal. Definition des Flusses,
Problemstellung, Restnetzwerk, wenn man das ja braucht, Erweiterungsfahrt,
da die Intuition dahinter und dann eben die Ford Falconson-Methode,
wie dieses Verfahren funktioniert, da für den Korrektheitsbeweis,
fürs Eigenverfahren braucht man es ja nicht,
aber für den Korrektheitsbeweis, dass es neues geht,
das ist ein Schnitt.
Und dass eben dieses Max Floh mit Katheorem gilt.
Das braucht ihr jetzt eigentlich fürs Arbeiten mitflüssen.
Braucht ihr das ja nicht, aber so fürs Hintergrundwissen,
dass man weiß, okay, deswegen ist es korrekt.
Genau, und dann eben wichtig, dieses Admins Carp.
Also ich würde mal sagen, so für die Wiederholung,
wenn ihr irgendwie diese zwei Folien überspürt,
wenn ihr diese zwei Folien überspringt, hier die 81 und 82,
das ist doch schon okay, aber die anderen solltet ihr halt kennen.
Und jetzt hatten wir auch hier den letzten Punkt mit den Flüssen.
11 Uhr, hey, gutes Timing, nur eine Viertelstunde
überzogen.
Wann kommt die Probe her? Wann kommt die Probeklausur?
Relevante Frage. Heute kommt ja nochmal der letzte Aufgabenzettel.
Und damit ihr euch darauf konzentriert und nicht gleich auf die Probeklausuren.
Klammer auf und weil ich die noch nicht fertig habe, klammert zu.
Gibt es die Probeklausur dann? Ich glaube Ende nächster Woche. Und dann,
weil also Hintergrund ist auch, dass sich die Klausur,
die Probeklausur, die zweite Klausur alles zusammen entwerfen will und
dann muss ich halt drei Klausuren entwerfen,
damit das alles zusammenpasst so.
Und ich mich nicht ständig wiederhole bei allen Dingen so.
Und dann, deswegen wollte ich die Reihe auf einmal machen,
dann ist das endlich so.
Ja, da kann ich wiederholen. Ja, das kommt
bestimmt auch vor. Und das genau das zu der Probeklausur,
dann noch Für den weiteren Ablauf,
nächste Woche wollte ich noch mal mit euch Sonnentechniküberblick machen.
Also wir hatten ja schon so Greedy-Verfahren und die weit in Konka-Verfahren.
Backtracking kennt ihr wahrscheinlich auch schon irgendwie,
aber dass wir so Greedy, Devideo Conka,
Backtracking und vielleicht Branch in Bound oder so noch mal uns angucken.
Das wollte ich nächste Woche noch mal machen.
Übernächste Woche mache ich die drei Stunden Zusammenfassung und vielleicht schon so
ein Übergang des Repetitoriums, weiß ich noch nicht so genau.
Und in der letzten Veranstaltung in drei Wochen dann,
da mache ich dann die drei Stunden komplett Repetitorium,
da könnt ihr euch dann irgendwie schon mal die Probeklausur ordentlich zu angucken,
Fragen sammeln und die mir dann stellen und so.
Weil die Zusammenfassung mache ich ja schon vorher,
also es ist das Repetitorium dann wirklich so,
bringt Fragen mit
Dass dazu und, das hatte ich noch, das war der weitere Ablauf,
die eigentliche Klausur ist dann ja am 6.2., was leider ein Samstag ist.
Die zweite ist, glaube ich, am 15.3., was Dienstag ist,
das ist irgendwie okay, aber der Samstag ist ein bisschen fies.
Ich weiß auch gar nicht, ob wir ins Audi reinkommen.
Ich muss mich da nochmal erkundigen. Nicht,
dass wir da dann so alle stehen und so denken,
schreiben wir sie halt im Freien oder so.
Genau, und noch eine Anmerkung. Schön, dass du fragst,
das hätte ich mir fast vergessen. Noch eine Anmerkung. Wir hatten doch,
ich schreibe es doch gleich nochmal für Stinemelde rum,
aber wir hatten doch diese Geschichte mit Christiane Frede,
dass die in ihrer Masterarbeit sich Kleingruppenarbeiten angeguckt hat und sich so angeguckt hat,
wie die Leute arbeiten und so.
Und damit sie das besser quasi in den globalen Kontext setzen kann.
Braucht sie quasi so ein bisschen Daten dazu,
wie die Sachen nachher bewertet wurden. Also jetzt nicht nur von den Leuten,
bei denen sie die Sachen beobachtet hat,
sondern so generell, damit sie halt sagen kann,
was weiß ich, wenn sie zum Beispiel beobachtet hat,
niemand ist mit dieser Aufgabe klargekommen und von 80 Abgaben ist der Notendurchschnitt auch null von vier Punkten.
So, dann kann man Schlussfolgern, oh, vielleicht war die Aufgabe eine Vollkatastrophe oder so. Wenn sie sagen kann irgendwie,
okay, ich habe zwei Gruppen beobachtet, die haben das super gemacht,
aber der Notendurchschnitt ist irgendwie nur ein von vier Punkten oder so,
dann kann sie irgendwie sagen, so die Aufgabe war wohl relativ schwer,
aber die, die ich beobachtet habe,
haben das ziemlich gut gemacht und dann liegt das vielleicht daran,
dass die eh gut sind oder irgendwie so,
dass sie sowas halt in Verbindung setzen kann.
So, deswegen braucht sie halt quasi die korrigierten Abgaben
von euch
Schock. Sie anonymisiert das auch. Also da sollen ja auch so ihre Rabe,
also in ihrer Arbeit wird dann nicht stehen, Fritzchen,
Fehlzug ist der schlechteste in diesem Kurs gewesen oder so,
sondern das wird dann irgendwie anonymisiert.
Aber sie braucht halt diese Sachen. So, dafür gibt es jetzt
drei Möglichkeiten. Entweder ihr gebt das heute Morgen und übermorgen
in eurer Übungsgruppe ab und eure Übungsgruppenleiter sorgen dann dafür,
dass das zu mir kommt.
Ich sorge dafür, dass das zu Christiane kommt.
Oder zweite Möglichkeit, ihr scannt das ein und schickt ihr
das direkt. Geht auch. Da schicke ich euch gleich
noch mal eine Stine-E-Mail mit ihrer E-Mail-Adresse oder dritte Möglichkeit,
ihr bringt mir das einfach nächsten Mittwoch mit.
Okay? Und um euch zu motivieren,
gibt es da für acht Bonuspunkte
Dann spare ich mir nämlich die Bonusaufgaben am Ende des Semesters.
Also wenn ihr mitspielt, kriegt ihr nochmal acht Bonuspunkte auf
euer Punktekonto, dann solltet ihr auch alle durchkommen.
Genau. Alles klar? Kriegen wir die Bier, wenn das hier aussieht?
Oder sind die eine Firma? Ihr kriegt ihn,
also die Frage ist gerade, ob er die wiederkriegt.
Ja, ihr kriegt die auch wieder.
Aber ihr könnt sie ja sonst auch einscannen und so.
Anonymisierung ist ein bisschen schwierig, weil ich dann keine Bonuspunkte vergeben kann.
Also irgendwie muss ich ja wissen, wer ihr das zurückgegeben hat.
Aber es wird halt, es bringt ja auch nichts,
das vor mir zu anonymisieren. Ich weiß das sowieso.
Eure Übungsgruppen leider wissen das auch, was sie euch gegeben haben.
Also bringt da irgendwie Anonymisierung nicht, der vorletzte,
der vierte
Das mit PNP und so weiter. Das ist alles seit irgendwie dem dritten.
Mikro 14, ja, sehr schön. Genau, genau,
das habe ich auch noch nicht gesagt, Blatt 4,
also das mit PNP und so hatte sie untersucht.
So, den nochmal. Je mehr, desto besser,
also auch die, die jetzt vielleicht gut sind und sagen,
ich brauche die Punkte ja gar nicht, gebe das auch mal ab,
sonst entsteht nachher natürlich so ein Zerrbild, ne?
Ah, gute Frage für die Übung. Ob es
acht Punkte für die Klausur oder für die Übung gibt?
Ja, bitte. Ja, bitte was? Nein,
die Klausur wird auch nicht so schwer. Ich habe schon gehört,
es gibt wieder so ganz viel rumgezählter wegen der Klausur und so.
Die Klausur wird echt nicht so schlimm so
Ja, es ist ja auch so.
Und dann gibt es wieder so TNT-Aufgaben, 50 Prozent.
Ja, also guck mal, mein erklärtes Ziel ist,
dass 50 Prozent durchkommen, ist doch super.
Du kommst durch, ja nicht, oder so, ist alles super.
Jeder zweite ist toll. Nein, nein, nein.
Also ihr kriegt ja noch Probeklausur, wir machen ein Repetitorium
und so, das sollte eigentlich alles funktionieren. Okay,
zehn Minuten Pause und dann machen wir noch eine halbe Stunde was zu,
ich wollte noch kurz was zu PNP mit euch machen,
zehn Minuten lang und um euch da die Ängste zu nehmen,
das sind nämlich, glaube ich, primär die Ängste für die Klausur,
da wollte ich nochmal was zu sagen.
Genau, und dann, also zehn Minuten Pause und dann
machen wir noch kurz ein bisschen Session,