Die Lösung des Problems des maximalen Durchflusses ergibt einen qualifizierten minimalen Schnitt. Aber ich möchte mehrere (vielleicht Hunderte) kleine Schnitte als Kandidaten. Die Schnitte müssen keine Mindestschnitte sein, solange sie klein sind (im Gewicht). Wie mache ich das?
7
Antworten:
Kennen Sie den randomisierten Kontraktionsalgorithmus, der auch als Karger-Algorithmus bekannt ist ? Der Algorithmus arbeitet grundsätzlich so, dass Kanten gleichmäßig zufällig ausgewählt und mit entfernten Selbstschleifen kontrahiert werden. Der Prozess wird angehalten, wenn noch zwei Knoten vorhanden sind und die beiden Knoten einen Schnitt darstellen. Um die Erfolgswahrscheinlichkeit zu erhöhen, wird der randomisierte Algorithmus mehrmals ausgeführt. Während der Läufe verfolgt man den kleinsten bisher gefundenen Schnitt.
Was ich jetzt vorschlage, ist, dass Sie den randomisierten Kontraktionsalgorithmus mehrmals ausführen. Entscheiden Sie jedes Mal, wenn der Algorithmus einen Schnitt ausgibt, ob er beibehalten werden soll oder nicht, indem Sie prüfen, ob er klein genug ist. Natürlich können Sie anhalten, wenn Sie genug von diesen ausreichend kleinen Schnitten produziert haben. Abhängig von der Größe Ihrer Eingabe kann dies in der Praxis sogar recht gut funktionieren.
quelle