• Keine Ergebnisse gefunden

Effiziente Algorithmen Kapitel 9 Randomisierte Algorithmen Walter Unger

N/A
N/A
Protected

Academic year: 2022

Aktie "Effiziente Algorithmen Kapitel 9 Randomisierte Algorithmen Walter Unger"

Copied!
344
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Kapitel 9

Randomisierte Algorithmen

Walter Unger

Lehrstuhl für Informatik 1

25.05.2012 08:08

(2)

Inhalt I

1 Einleitung Idee und Überblick

2 Minimaler Schnitt Einleitung Einfacher Algorithmus Abschätzungen Verbesserter Algorithmus Abschätzungen

3 3-SAT Einleitung

Algorithmus von Schöning Analyse

4 Vergleich Einleitung Umformungen

(3)

Die Idee

Kann eine zufällige Auswahl helfen?

Können effiziente Algorithmen noch schneller gemacht werden?

Kann bei schweren Problemen mit ausreichender Wahrscheinlichkeit ein gutes Ergebnis erreicht werden?

Hier nun:

Bestimmen eines minimalen Schnitts (Cuts).

Vergleich der Modelle.

Der Algorithmus hat mit hoher Wahrscheinlichkeit eine “gute”

Laufzeit.

Der Algorithmus liefert mit hoher Wahrscheinlichkeit eine Lösung.

(4)

Die Idee

Kann eine zufällige Auswahl helfen?

Können effiziente Algorithmen noch schneller gemacht werden?

Kann bei schweren Problemen mit ausreichender Wahrscheinlichkeit ein gutes Ergebnis erreicht werden?

Hier nun:

Bestimmen eines minimalen Schnitts (Cuts).

Vergleich der Modelle.

Der Algorithmus hat mit hoher Wahrscheinlichkeit eine “gute”

Laufzeit.

Der Algorithmus liefert mit hoher Wahrscheinlichkeit eine Lösung.

(5)

Die Idee

Kann eine zufällige Auswahl helfen?

Können effiziente Algorithmen noch schneller gemacht werden?

Kann bei schweren Problemen mit ausreichender Wahrscheinlichkeit ein gutes Ergebnis erreicht werden?

Hier nun:

Bestimmen eines minimalen Schnitts (Cuts).

Vergleich der Modelle.

Der Algorithmus hat mit hoher Wahrscheinlichkeit eine “gute”

Laufzeit.

Der Algorithmus liefert mit hoher Wahrscheinlichkeit eine Lösung.

(6)

Die Idee

Kann eine zufällige Auswahl helfen?

Können effiziente Algorithmen noch schneller gemacht werden?

Kann bei schweren Problemen mit ausreichender Wahrscheinlichkeit ein gutes Ergebnis erreicht werden?

Hier nun:

Bestimmen eines minimalen Schnitts (Cuts).

Vergleich der Modelle.

Der Algorithmus hat mit hoher Wahrscheinlichkeit eine “gute”

Laufzeit.

Der Algorithmus liefert mit hoher Wahrscheinlichkeit eine Lösung.

(7)

Die Idee

Kann eine zufällige Auswahl helfen?

Können effiziente Algorithmen noch schneller gemacht werden?

Kann bei schweren Problemen mit ausreichender Wahrscheinlichkeit ein gutes Ergebnis erreicht werden?

Hier nun:

Bestimmen eines minimalen Schnitts (Cuts).

Vergleich der Modelle.

Der Algorithmus hat mit hoher Wahrscheinlichkeit eine “gute”

Laufzeit.

Der Algorithmus liefert mit hoher Wahrscheinlichkeit eine Lösung.

(8)

Die Idee

Kann eine zufällige Auswahl helfen?

Können effiziente Algorithmen noch schneller gemacht werden?

Kann bei schweren Problemen mit ausreichender Wahrscheinlichkeit ein gutes Ergebnis erreicht werden?

Hier nun:

Bestimmen eines minimalen Schnitts (Cuts).

Vergleich der Modelle.

Der Algorithmus hat mit hoher Wahrscheinlichkeit eine “gute”

Laufzeit.

Der Algorithmus liefert mit hoher Wahrscheinlichkeit eine Lösung.

(9)

Die Idee

Kann eine zufällige Auswahl helfen?

Können effiziente Algorithmen noch schneller gemacht werden?

Kann bei schweren Problemen mit ausreichender Wahrscheinlichkeit ein gutes Ergebnis erreicht werden?

Hier nun:

Bestimmen eines minimalen Schnitts (Cuts).

Vergleich der Modelle.

Der Algorithmus hat mit hoher Wahrscheinlichkeit eine “gute”

Laufzeit.

Der Algorithmus liefert mit hoher Wahrscheinlichkeit eine Lösung.

(10)

Die Idee

Kann eine zufällige Auswahl helfen?

Können effiziente Algorithmen noch schneller gemacht werden?

Kann bei schweren Problemen mit ausreichender Wahrscheinlichkeit ein gutes Ergebnis erreicht werden?

Hier nun:

Bestimmen eines minimalen Schnitts (Cuts).

Vergleich der Modelle.

Der Algorithmus hat mit hoher Wahrscheinlichkeit eine “gute”

Laufzeit.

Der Algorithmus liefert mit hoher Wahrscheinlichkeit eine Lösung.

(11)

Die Idee

Kann eine zufällige Auswahl helfen?

Können effiziente Algorithmen noch schneller gemacht werden?

Kann bei schweren Problemen mit ausreichender Wahrscheinlichkeit ein gutes Ergebnis erreicht werden?

Hier nun:

Bestimmen eines minimalen Schnitts (Cuts).

Vergleich der Modelle.

Der Algorithmus hat mit hoher Wahrscheinlichkeit eine “gute”

Laufzeit.

Der Algorithmus liefert mit hoher Wahrscheinlichkeit eine Lösung.

(12)

Definition Schnitt

n=|V|,m=|E|

Definition (Schnitt)

SeiG= (V,E,c)gegeben. Seic:E 7→N+ Kostenfunktion auf den Kanten.

EinUV ist ein Schnitt (Cut) mit Wert:

c(U) = X

{v,w}∈E,v∈U,w6∈U

c({v,w}).

Schreibweise:CU=C={{v,w} ∈E,vU,w 6∈U}.

Definition:c(CU) =P

e∈CUc(e).

Alsoc(U) =c(CU) =P

e∈CUc(e).

Man kannc auch durch Multikanten darstellen.

Gesucht wird der minimale SchnittCmit:

∀U⊂V :c(U)>c(C).

(13)

Definition Schnitt

n=|V|,m=|E|

Definition (Schnitt)

SeiG= (V,E,c)gegeben. Seic:E 7→N+ Kostenfunktion auf den Kanten.

EinUV ist ein Schnitt (Cut) mit Wert:

c(U) = X

{v,w}∈E,v∈U,w6∈U

c({v,w}).

Schreibweise:CU=C={{v,w} ∈E,vU,w 6∈U}.

Definition:c(CU) =P

e∈CUc(e).

Alsoc(U) =c(CU) =P

e∈CUc(e).

Man kannc auch durch Multikanten darstellen.

Gesucht wird der minimale SchnittCmit:

∀U⊂V :c(U)>c(C).

(14)

Definition Schnitt

n=|V|,m=|E|

Definition (Schnitt)

SeiG= (V,E,c)gegeben. Seic:E 7→N+ Kostenfunktion auf den Kanten.

EinUV ist ein Schnitt (Cut) mit Wert:

c(U) = X

{v,w}∈E,v∈U,w6∈U

c({v,w}).

Schreibweise:CU=C={{v,w} ∈E,vU,w 6∈U}.

Definition:c(CU) =P

e∈CUc(e).

Alsoc(U) =c(CU) =P

e∈CUc(e).

Man kannc auch durch Multikanten darstellen.

Gesucht wird der minimale SchnittCmit:

∀U⊂V :c(U)>c(C).

(15)

Definition Schnitt

n=|V|,m=|E|

Definition (Schnitt)

SeiG= (V,E,c)gegeben. Seic:E 7→N+ Kostenfunktion auf den Kanten.

EinUV ist ein Schnitt (Cut) mit Wert:

c(U) = X

{v,w}∈E,v∈U,w6∈U

c({v,w}).

Schreibweise:CU=C={{v,w} ∈E,vU,w 6∈U}.

Definition:c(CU) =P

e∈CUc(e).

Alsoc(U) =c(CU) =P

e∈CUc(e).

Man kannc auch durch Multikanten darstellen.

Gesucht wird der minimale SchnittCmit:

∀U⊂V :c(U)>c(C).

(16)

Definition Schnitt

n=|V|,m=|E|

Definition (Schnitt)

SeiG= (V,E,c)gegeben. Seic:E 7→N+ Kostenfunktion auf den Kanten.

EinUV ist ein Schnitt (Cut) mit Wert:

c(U) = X

{v,w}∈E,v∈U,w6∈U

c({v,w}).

Schreibweise:CU=C={{v,w} ∈E,vU,w 6∈U}.

Definition:c(CU) =P

e∈CUc(e).

Alsoc(U) =c(CU) =P

e∈CUc(e).

Man kannc auch durch Multikanten darstellen.

Gesucht wird der minimale SchnittCmit:

∀U⊂V :c(U)>c(C).

(17)

Definition Schnitt

n=|V|,m=|E|

Definition (Schnitt)

SeiG= (V,E,c)gegeben. Seic:E 7→N+ Kostenfunktion auf den Kanten.

EinUV ist ein Schnitt (Cut) mit Wert:

c(U) = X

{v,w}∈E,v∈U,w6∈U

c({v,w}).

Schreibweise:CU=C={{v,w} ∈E,vU,w 6∈U}.

Definition:c(CU) =P

e∈CUc(e).

Alsoc(U) =c(CU) =P

e∈CUc(e).

Man kannc auch durch Multikanten darstellen.

Gesucht wird der minimale SchnittCmit:

∀U⊂V :c(U)>c(C).

(18)

Definition Schnitt

n=|V|,m=|E|

Definition (Schnitt)

SeiG= (V,E,c)gegeben. Seic:E 7→N+ Kostenfunktion auf den Kanten.

EinUV ist ein Schnitt (Cut) mit Wert:

c(U) = X

{v,w}∈E,v∈U,w6∈U

c({v,w}).

Schreibweise:CU=C={{v,w} ∈E,vU,w 6∈U}.

Definition:c(CU) =P

e∈CUc(e).

Alsoc(U) =c(CU) =P

e∈CUc(e).

Man kannc auch durch Multikanten darstellen.

Gesucht wird der minimale SchnittCmit:

∀U⊂V :c(U)>c(C).

(19)

Einfache Bestimmung des Minimalen Schnitts

n=|V|,m=|E|

Der minimale Schnitt kann durch

n 2

Aufrufe eines Flussalgorithmuses gelöst werden.

n−1 Aufrufe eines Flussalgorithmuses gelöst werden.

In ZeitO(n4)gelöst werden.

Hier nun:

Randomisierter Algorithmus mit besserer Laufzeit.

(20)

Einfache Bestimmung des Minimalen Schnitts

n=|V|,m=|E|

Der minimale Schnitt kann durch

n 2

Aufrufe eines Flussalgorithmuses gelöst werden.

n−1 Aufrufe eines Flussalgorithmuses gelöst werden.

In ZeitO(n4)gelöst werden.

Hier nun:

Randomisierter Algorithmus mit besserer Laufzeit.

(21)

Einfache Bestimmung des Minimalen Schnitts

n=|V|,m=|E|

Der minimale Schnitt kann durch

n 2

Aufrufe eines Flussalgorithmuses gelöst werden.

n−1 Aufrufe eines Flussalgorithmuses gelöst werden.

In ZeitO(n4)gelöst werden.

Hier nun:

Randomisierter Algorithmus mit besserer Laufzeit.

(22)

Einfache Bestimmung des Minimalen Schnitts

n=|V|,m=|E|

Der minimale Schnitt kann durch

n 2

Aufrufe eines Flussalgorithmuses gelöst werden.

n−1 Aufrufe eines Flussalgorithmuses gelöst werden.

In ZeitO(n4)gelöst werden.

Hier nun:

Randomisierter Algorithmus mit besserer Laufzeit.

(23)

Einfache Bestimmung des Minimalen Schnitts

n=|V|,m=|E|

Der minimale Schnitt kann durch

n 2

Aufrufe eines Flussalgorithmuses gelöst werden.

n−1 Aufrufe eines Flussalgorithmuses gelöst werden.

In ZeitO(n4)gelöst werden.

Hier nun:

Randomisierter Algorithmus mit besserer Laufzeit.

(24)

Einfache Bestimmung des Minimalen Schnitts

n=|V|,m=|E|

Der minimale Schnitt kann durch

n 2

Aufrufe eines Flussalgorithmuses gelöst werden.

n−1 Aufrufe eines Flussalgorithmuses gelöst werden.

In ZeitO(n4)gelöst werden.

Hier nun:

Randomisierter Algorithmus mit besserer Laufzeit.

(25)

Einfache Bestimmung des Minimalen Schnitts

n=|V|,m=|E|

Der minimale Schnitt kann durch

n 2

Aufrufe eines Flussalgorithmuses gelöst werden.

n−1 Aufrufe eines Flussalgorithmuses gelöst werden.

In ZeitO(n4)gelöst werden.

Hier nun:

Randomisierter Algorithmus mit besserer Laufzeit.

(26)

Idee

n=|V|,m=|E|

SeiUV minimaler Schnitt.

Damit haben wir:

“Wenig” Kanten inCU.

“Viele” Kanten innerhalbU.

“Viele” Kanten innerhalbV \U.

Damit ist eine zufällig gewählte Kante mit hoher Wahrscheinlichkeit nicht im Schnitt.

Damit sind die inzidenten Knoten einer zufällig gewählten Kante mit hoher Wahrscheinlichkeit beide inUoder beide inV\U.

Vorgehen: Wähle zufällig eine Kante und verschmelze diese zu einem Knoten.

U CU V\U

(27)

Idee

n=|V|,m=|E|

SeiUV minimaler Schnitt.

Damit haben wir:

“Wenig” Kanten inCU.

“Viele” Kanten innerhalbU.

“Viele” Kanten innerhalbV \U.

Damit ist eine zufällig gewählte Kante mit hoher Wahrscheinlichkeit nicht im Schnitt.

Damit sind die inzidenten Knoten einer zufällig gewählten Kante mit hoher Wahrscheinlichkeit beide inUoder beide inV\U.

Vorgehen: Wähle zufällig eine Kante und verschmelze diese zu einem Knoten.

U CU V\U

(28)

Idee

n=|V|,m=|E|

SeiUV minimaler Schnitt.

Damit haben wir:

“Wenig” Kanten inCU.

“Viele” Kanten innerhalbU.

“Viele” Kanten innerhalbV \U.

Damit ist eine zufällig gewählte Kante mit hoher Wahrscheinlichkeit nicht im Schnitt.

Damit sind die inzidenten Knoten einer zufällig gewählten Kante mit hoher Wahrscheinlichkeit beide inUoder beide inV\U.

Vorgehen: Wähle zufällig eine Kante und verschmelze diese zu einem Knoten.

U CU V\U

(29)

Idee

n=|V|,m=|E|

SeiUV minimaler Schnitt.

Damit haben wir:

“Wenig” Kanten inCU.

“Viele” Kanten innerhalbU.

“Viele” Kanten innerhalbV \U.

Damit ist eine zufällig gewählte Kante mit hoher Wahrscheinlichkeit nicht im Schnitt.

Damit sind die inzidenten Knoten einer zufällig gewählten Kante mit hoher Wahrscheinlichkeit beide inUoder beide inV\U.

Vorgehen: Wähle zufällig eine Kante und verschmelze diese zu einem Knoten.

U CU V\U

(30)

Idee

n=|V|,m=|E|

SeiUV minimaler Schnitt.

Damit haben wir:

“Wenig” Kanten inCU.

“Viele” Kanten innerhalbU.

“Viele” Kanten innerhalbV \U.

Damit ist eine zufällig gewählte Kante mit hoher Wahrscheinlichkeit nicht im Schnitt.

Damit sind die inzidenten Knoten einer zufällig gewählten Kante mit hoher Wahrscheinlichkeit beide inUoder beide inV\U.

Vorgehen: Wähle zufällig eine Kante und verschmelze diese zu einem Knoten.

U CU V\U

(31)

Idee

n=|V|,m=|E|

SeiUV minimaler Schnitt.

Damit haben wir:

“Wenig” Kanten inCU.

“Viele” Kanten innerhalbU.

“Viele” Kanten innerhalbV \U.

Damit ist eine zufällig gewählte Kante mit hoher Wahrscheinlichkeit nicht im Schnitt.

Damit sind die inzidenten Knoten einer zufällig gewählten Kante mit hoher Wahrscheinlichkeit beide inUoder beide inV\U.

Vorgehen: Wähle zufällig eine Kante und verschmelze diese zu einem Knoten.

U CU V\U

(32)

Idee

n=|V|,m=|E|

SeiUV minimaler Schnitt.

Damit haben wir:

“Wenig” Kanten inCU.

“Viele” Kanten innerhalbU.

“Viele” Kanten innerhalbV \U.

Damit ist eine zufällig gewählte Kante mit hoher Wahrscheinlichkeit nicht im Schnitt.

Damit sind die inzidenten Knoten einer zufällig gewählten Kante mit hoher Wahrscheinlichkeit beide inUoder beide inV\U.

Vorgehen: Wähle zufällig eine Kante und verschmelze diese zu einem Knoten.

U CU V\U

(33)

Idee

n=|V|,m=|E|

SeiUV minimaler Schnitt.

Damit haben wir:

“Wenig” Kanten inCU.

“Viele” Kanten innerhalbU.

“Viele” Kanten innerhalbV \U.

Damit ist eine zufällig gewählte Kante mit hoher Wahrscheinlichkeit nicht im Schnitt.

Damit sind die inzidenten Knoten einer zufällig gewählten Kante mit hoher Wahrscheinlichkeit beide inUoder beide inV\U.

Vorgehen: Wähle zufällig eine Kante und verschmelze diese zu einem Knoten.

U CU V\U

(34)

Idee

n=|V|,m=|E|

SeiUV minimaler Schnitt.

Damit haben wir:

“Wenig” Kanten inCU.

“Viele” Kanten innerhalbU.

“Viele” Kanten innerhalbV \U.

Damit ist eine zufällig gewählte Kante mit hoher Wahrscheinlichkeit nicht im Schnitt.

Damit sind die inzidenten Knoten einer zufällig gewählten Kante mit hoher Wahrscheinlichkeit beide inUoder beide inV\U.

Vorgehen: Wähle zufällig eine Kante und verschmelze diese zu einem Knoten.

U CU V\U

(35)

Kontraktion einer Kante

n=|V|,m=|E|

Gegeben sei:G = (V,E,c)undc:E 7→N+.

Bei der Kontraktion einer Kante{v,w}wirdG wie folgt verändert:

V0=V\ {w}

E0=E∪ {{x,v} | {x,w} ∈Ex 6=v} \ {e∈E |e={x,w}}

Die Kostenfunktion wird wie folgt angepasst:

c0(e) =





c(e) fallsv,w 6∈e

c(e) fallse={x,v} ∧ {x,w} 6∈E c({x,w}) fallse6={x,v} ∧ {x,w} ∈E c(e) +c({x,w}) fallse={x,v} ∧ {x,w} ∈E

Eine Kantenkontraktion kann in ZeitO(n)ausgeführt werden.

a b c

d e f

1 23 45

6

(36)

Kontraktion einer Kante

n=|V|,m=|E|

Gegeben sei:G = (V,E,c)undc:E 7→N+.

Bei der Kontraktion einer Kante{v,w}wirdG wie folgt verändert:

V0=V\ {w}

E0=E∪ {{x,v} | {x,w} ∈Ex 6=v} \ {e∈E |e={x,w}}

Die Kostenfunktion wird wie folgt angepasst:

c0(e) =





c(e) fallsv,w 6∈e

c(e) fallse={x,v} ∧ {x,w} 6∈E c({x,w}) fallse6={x,v} ∧ {x,w} ∈E c(e) +c({x,w}) fallse={x,v} ∧ {x,w} ∈E

Eine Kantenkontraktion kann in ZeitO(n)ausgeführt werden.

a b c

d e f

1 23 45

6

(37)

Kontraktion einer Kante

n=|V|,m=|E|

Gegeben sei:G = (V,E,c)undc:E 7→N+.

Bei der Kontraktion einer Kante{v,w}wirdG wie folgt verändert:

V0=V\ {w}

E0=E∪ {{x,v} | {x,w} ∈Ex 6=v} \ {e∈E |e={x,w}}

Die Kostenfunktion wird wie folgt angepasst:

c0(e) =





c(e) fallsv,w 6∈e

c(e) fallse={x,v} ∧ {x,w} 6∈E c({x,w}) fallse6={x,v} ∧ {x,w} ∈E c(e) +c({x,w}) fallse={x,v} ∧ {x,w} ∈E

Eine Kantenkontraktion kann in ZeitO(n)ausgeführt werden.

a b c

d e f

1 23 45

6

(38)

Kontraktion einer Kante

n=|V|,m=|E|

Gegeben sei:G = (V,E,c)undc:E 7→N+.

Bei der Kontraktion einer Kante{v,w}wirdG wie folgt verändert:

V0=V\ {w}

E0=E∪ {{x,v} | {x,w} ∈Ex 6=v} \ {e∈E |e={x,w}}

Die Kostenfunktion wird wie folgt angepasst:

c0(e) =





c(e) fallsv,w 6∈e

c(e) fallse={x,v} ∧ {x,w} 6∈E c({x,w}) fallse6={x,v} ∧ {x,w} ∈E c(e) +c({x,w}) fallse={x,v} ∧ {x,w} ∈E

Eine Kantenkontraktion kann in ZeitO(n)ausgeführt werden.

a b c

d e f

1 23 45

6

(39)

Kontraktion einer Kante

n=|V|,m=|E|

Gegeben sei:G = (V,E,c)undc:E 7→N+.

Bei der Kontraktion einer Kante{v,w}wirdG wie folgt verändert:

V0=V\ {w}

E0=E∪ {{x,v} | {x,w} ∈Ex 6=v} \ {e∈E |e={x,w}}

Die Kostenfunktion wird wie folgt angepasst:

c0(e) =





c(e) fallsv,w 6∈e

c(e) fallse={x,v} ∧ {x,w} 6∈E c({x,w}) fallse6={x,v} ∧ {x,w} ∈E c(e) +c({x,w}) fallse={x,v} ∧ {x,w} ∈E Eine Kantenkontraktion kann in ZeitO(n)ausgeführt werden.

a b c

d e f

1 23 45

6

(40)

Kontraktion einer Kante

n=|V|,m=|E|

Gegeben sei:G = (V,E,c)undc:E 7→N+.

Bei der Kontraktion einer Kante{v,w}wirdG wie folgt verändert:

V0=V\ {w}

E0=E∪ {{x,v} | {x,w} ∈Ex 6=v} \ {e∈E |e={x,w}}

Die Kostenfunktion wird wie folgt angepasst:

c0(e) =





c(e) fallsv,w 6∈e

c(e) fallse={x,v} ∧ {x,w} 6∈E c({x,w}) fallse6={x,v} ∧ {x,w} ∈E c(e) +c({x,w}) fallse={x,v} ∧ {x,w} ∈E Eine Kantenkontraktion kann in ZeitO(n)ausgeführt werden.

a b c

d e f

23 45

6

(41)

Kontraktion einer Kante

n=|V|,m=|E|

Gegeben sei:G = (V,E,c)undc:E 7→N+.

Bei der Kontraktion einer Kante{v,w}wirdG wie folgt verändert:

V0=V\ {w}

E0=E∪ {{x,v} | {x,w} ∈Ex 6=v} \ {e∈E |e={x,w}}

Die Kostenfunktion wird wie folgt angepasst:

c0(e) =





c(e) fallsv,w 6∈e

c(e) fallse={x,v} ∧ {x,w} 6∈E c({x,w}) fallse6={x,v} ∧ {x,w} ∈E c(e) +c({x,w}) fallse={x,v} ∧ {x,w} ∈E Eine Kantenkontraktion kann in ZeitO(n)ausgeführt werden.

a b c

d e f

29

6 3

(42)

Bestimme Minimalen Schnitt

n=|V|,m=|E|

Algorithmus von Karger (1993)

1 SetzeS(v) ={v}für allevV.

2 SetzeH=G.

3 Solange|V(H)|>2 wähle{v,w} ∈E(H).

1 SetzeS(v) =S(v)∪S(w).

2 Kontraktiere die Kante{v,w}inH.

4 WählevV(H).

5 Gebe SchnittS(v)(bzw.CS(v)) aus.

Laufzeit:O(n2).

(43)

Bestimme Minimalen Schnitt

n=|V|,m=|E|

Algorithmus von Karger (1993)

1 SetzeS(v) ={v}für allevV.

2 SetzeH=G.

3 Solange|V(H)|>2 wähle{v,w} ∈E(H).

1 SetzeS(v) =S(v)∪S(w).

2 Kontraktiere die Kante{v,w}inH.

4 WählevV(H).

5 Gebe SchnittS(v)(bzw.CS(v)) aus.

Laufzeit:O(n2).

(44)

Bestimme Minimalen Schnitt

n=|V|,m=|E|

Algorithmus von Karger (1993)

1 SetzeS(v) ={v}für allevV.

2 SetzeH=G.

3 Solange|V(H)|>2 wähle{v,w} ∈E(H).

1 SetzeS(v) =S(v)∪S(w).

2 Kontraktiere die Kante{v,w}inH.

4 WählevV(H).

5 Gebe SchnittS(v)(bzw.CS(v)) aus.

Laufzeit:O(n2).

(45)

Bestimme Minimalen Schnitt

n=|V|,m=|E|

Algorithmus von Karger (1993)

1 SetzeS(v) ={v}für allevV.

2 SetzeH=G.

3 Solange|V(H)|>2 wähle{v,w} ∈E(H).

1 SetzeS(v) =S(v)∪S(w).

2 Kontraktiere die Kante{v,w}inH.

4 WählevV(H).

5 Gebe SchnittS(v)(bzw.CS(v)) aus.

Laufzeit:O(n2).

(46)

Bestimme Minimalen Schnitt

n=|V|,m=|E|

Algorithmus von Karger (1993)

1 SetzeS(v) ={v}für allevV.

2 SetzeH=G.

3 Solange|V(H)|>2 wähle{v,w} ∈E(H).

1 SetzeS(v) =S(v)∪S(w).

2 Kontraktiere die Kante{v,w}inH.

4 WählevV(H).

5 Gebe SchnittS(v)(bzw.CS(v)) aus.

Laufzeit:O(n2).

(47)

Bestimme Minimalen Schnitt

n=|V|,m=|E|

Algorithmus von Karger (1993)

1 SetzeS(v) ={v}für allevV.

2 SetzeH=G.

3 Solange|V(H)|>2 wähle{v,w} ∈E(H).

1 SetzeS(v) =S(v)∪S(w).

2 Kontraktiere die Kante{v,w}inH.

4 WählevV(H).

5 Gebe SchnittS(v)(bzw.CS(v)) aus.

Laufzeit:O(n2).

(48)

Bestimme Minimalen Schnitt

n=|V|,m=|E|

Algorithmus von Karger (1993)

1 SetzeS(v) ={v}für allevV.

2 SetzeH=G.

3 Solange|V(H)|>2 wähle{v,w} ∈E(H).

1 SetzeS(v) =S(v)∪S(w).

2 Kontraktiere die Kante{v,w}inH.

4 WählevV(H).

5 Gebe SchnittS(v)(bzw.CS(v)) aus.

Laufzeit:O(n2).

(49)

Bestimme Minimalen Schnitt

n=|V|,m=|E|

Algorithmus von Karger (1993)

1 SetzeS(v) ={v}für allevV.

2 SetzeH=G.

3 Solange|V(H)|>2 wähle{v,w} ∈E(H).

1 SetzeS(v) =S(v)∪S(w).

2 Kontraktiere die Kante{v,w}inH.

4 WählevV(H).

5 Gebe SchnittS(v)(bzw.CS(v)) aus.

Laufzeit:O(n2).

(50)

Bestimme Minimalen Schnitt

n=|V|,m=|E|

Algorithmus von Karger (1993)

1 SetzeS(v) ={v}für allevV.

2 SetzeH=G.

3 Solange|V(H)|>2 wähle{v,w} ∈E(H).

1 SetzeS(v) =S(v)∪S(w).

2 Kontraktiere die Kante{v,w}inH.

4 WählevV(H).

5 Gebe SchnittS(v)(bzw.CS(v)) aus.

Laufzeit:O(n2).

(51)

Bestimme Minimalen Schnitt

n=|V|,m=|E|

Algorithmus von Karger (1993)

1 SetzeS(v) ={v}für allevV.

2 SetzeH=G.

3 Solange|V(H)|>2 wähle{v,w} ∈E(H).

1 SetzeS(v) =S(v)∪S(w).

2 Kontraktiere die Kante{v,w}inH.

4 WählevV(H).

5 Gebe SchnittS(v)(bzw.CS(v)) aus.

Laufzeit:O(n2).

(52)

Beispiel

n=|V|,m=|E|

a8 a1

a2 a3 a4 a5

a6

a7

c1 c8

c7 c6 c5 c4

c3

c2 1

1

1

1

1

1

1

1 1

1 1 1

1 1 1 1

1 1 1 1

1 1

1

1 1

1

1

1

1 1

1 1

1 1

1

1 1

1

1 1

1

1

1 1

1

1 1

1 1 1

(53)

Beispiel

n=|V|,m=|E|

a8 a1

a2 a3 a4 a5

a6

a7

c1 c8

c7 c6 c5 c4

c3

c2 1

1

1

1

1

1

1

1 1

1 1 1

1 1 1 1

1 1 1 1

1 1

1

1

1

1

1

1 1

1 1

1 1

1

1 1

1

1 1

1

1

1 1

1

1 1

1 1 1

(54)

Beispiel

n=|V|,m=|E|

a8 a1

a2 a3 a4 a5

a6

a7

c1 c8

c7 c6 c5 c4

c3

c2 1

1

1

1

1

1

1

1 1

1 1 1

1 1 1 1

1 1 1 1

1 2

2

2

2

1 2

1

1

1 1 1

1

1 1

1

1 1

1

1 1

1 1 1

(55)

Beispiel

n=|V|,m=|E|

a8 a1

a2 a3 a4 a5

a6

a7

c1 c8

c7 c6 c5 c4

c3

c2 1

1

1

1

1

1

1

1 1

1 1 1

1 1 1 1

1 1 1

1 2

2

2

2

1 2

1

1

1 1 1

1

1 1

1

1 1

1

1 1

1 1 1

(56)

Beispiel

n=|V|,m=|E|

a8 a1

a2 a3 a4 a5

a6

a7

c1 c8

c7 c6 c5 c4

c3

c2 1

1

1

1

1

1

1 2

1 1

1 2 1

1 2 1

1 2

2

2

2

1 2

1

1

1 1 1

1

1 1

1

1 1

1

1 1

1 1 1

(57)

Beispiel

n=|V|,m=|E|

a8 a1

a2 a3 a4 a5

a6

a7

c1 c8

c7 c6 c5 c4

c3

c2 1

1

1

1

1

1

1 2 1

1 2 1

1 2 1

1 2

2

2

2

1 2

1

1

1 1 1

1

1 1

1

1 1

1

1 1

1 1 1

(58)

Beispiel

n=|V|,m=|E|

a8 a1

a2 a3 a4 a5

a6

a7

c1 c8

c7 c6 c5 c4

c3

c2 1

1 2

1

1

1 2 2

2 1 4

1 2

2

2

2

1 2

1

1

1 1 1

1

1 1

1

1 1

1

1 1

1 1

1

(59)

Beispiel

n=|V|,m=|E|

a8 a1

a2 a3 a4 a5

a6

a7

c1 c8

c7 c6 c5 c4

c3

c2 1

1 2

1

1

1 2 2

2 1 4

1 2

2

2

2

1 2

1

1

1 1

1

1 1

1

1 1

1

1 1

1 1

1

(60)

Beispiel

n=|V|,m=|E|

a8 a1

a2 a3 a4 a5

a6

a7

c1 c8

c7 c6 c5 c4

c3

c2 1

1 2

1

1

1 2 2

2 1 4

1 4

2

2

2

1

2

2

1

2 1

1 1

1

1

1 1 1

1

(61)

Beispiel

n=|V|,m=|E|

a8 a1

a2 a3 a4 a5

a6

a7

c1 c8

c7 c6 c5 c4

c3

c2 1

1 2

1

1

1 2 2

2 1 4

1 4

2

2

2

1

2

2

1

2 1

1

1

1

1 1 1

1

(62)

Beispiel

n=|V|,m=|E|

a8 a1

a2 a3 a4 a5

a6

a7

c1 c8

c7 c6 c5 c4

c3

c2 1

1 2

1

1

1 2 2

2 1 4

1 4

4 2

1

4 1

2 2

1 1

1 1 2

(63)

Beispiel

n=|V|,m=|E|

a8 a1

a2 a3 a4 a5

a6

a7

c1 c8

c7 c6 c5 c4

c3

c2 1

1 2

1

1

1 2 2

2 1

1 4

4 2

1

4 1

2 2

1 1

1 1 2

(64)

Beispiel

n=|V|,m=|E|

a8 a1

a2 a3 a4 a5

a6

a7

c1 c8

c7 c6 c5 c4

c3

c2 1

1 3

3

1 3

3

4

4 2

1

4 1

2 2

1 1

1 1 2

(65)

Beispiel

n=|V|,m=|E|

a8 a1

a2 a3 a4 a5

a6

a7

c1 c8

c7 c6 c5 c4

c3

c2 1

1 3

3

1 3

3

4 2

1

4 1

2 2

1 1

1 1 2

(66)

Beispiel

n=|V|,m=|E|

a8 a1

a2 a3 a4 a5

a6

a7

c1 c8

c7 c6 c5 c4

c3

c2 1

1 3

3

1 3

3 8 3

3 2

1 1

1 1 2

(67)

Beispiel

n=|V|,m=|E|

a8 a1

a2 a3 a4 a5

a6

a7

c1 c8

c7 c6 c5 c4

c3

c2 1

1 3 1 3

3 8 3

3 2

1 1

1 1 2

(68)

Beispiel

n=|V|,m=|E|

a8 a1

a2 a3 a4 a5

a6

a7

c1 c8

c7 c6 c5 c4

c3

c2 4

1 3

4

8 3

3 2

1 1

1 1 2

(69)

Beispiel

n=|V|,m=|E|

a8 a1

a2 a3 a4 a5

a6

a7

c1 c8

c7 c6 c5 c4

c3

c2 4

1 3

4

3

3 2

1 1

1 1 2

Referenzen

ÄHNLICHE DOKUMENTE

Daher unterscheiden wir: Offline: Der Algorithmus bekommt die komplette Eingabe und löst dann das Problem.. Online: Der Algorithmus bekommt die Eingabe

Wenn ein Teil der Datei geschrieben werden soll und der Leser hat keine Kopie, so muss dieser Teil angefordert und die Änderungen zurückgeschickt werden.. Es

Falls der Cache voll ist, muss eine andere Seite verdrängt werden.. Ein Online-Paging-Algorithmus muss entscheiden, welche Seite

Verbesserung der Laufzeit (2:75) <> Walter Unger 17.1.2015 17:56 SS2014 Z

Pfade verbesserte Laufzeit mit Kosten Blüten Zwei Anwendungen.. (3:2.3) <> Walter Unger 17.1.2015 17:49

Pfade verbesserte Laufzeit mit Kosten Blüten Zwei Anwendungen Probleme bei ungeraden Kreisen (3:48) <> Walter Unger 17.1.2015 17:56 SS2014 Z

Kann bei schweren Problemen mit ausreichender Wahrscheinlichkeit ein gutes Ergebnis erreicht werden?.

Für jedes Stück der Eingabe muss der Algorithmus sofort eine Entscheidung treffen.. Getroffene Entscheidungen können nicht