Kapitel 1: Suchprobleme
(Effiziente Algorithmen, WS 2019) Gerhard Woeginger
WS 2019, RWTH
Suchprobleme
Bitmuster
Graph-Zusammenhang Gr¨osste Zahl
Maximum und Minimum Zweitgr¨osste Zahl Median (worst case) Median (randomisiert)
EA/WS 2019 Kapitel 1: Suchprobleme 2/56
Zum Aufw¨ armen:
Suche nach Bitmustern
Ein einzelnes Bit (1): Problemstellung
Algorithmisches Problem: Bitmuster #1 Eingabe:Ein BitstringB[1, . . . ,7]der L¨ange7 Frage:Ist mindestens eines dieser Bits auf1?
Teure Operation: Abfrage eines Bits
Ziel: Antwort mit m¨oglichst wenig Bitabfragen finden
Frage
Wie sieht ein guter Algorithmus fuer dieses Problem aus, der auch im Worst Case nur wenige Bitabfragen macht?
EA/WS 2019 Kapitel 1: Suchprobleme 4/56
Ein einzelnes Bit (2): Resultat
Wenn die ersten sechs abgefragten Bits s¨amtlich gleich0sind, muss auch das siebente Bit abgefragt werden:
Satz
Es existiert kein Algorithmus,
der im Worst Case mit weniger als 7Abfragen auskommt.
F¨ur das entsprechende Problem f¨ur Bitstrings der L¨angengilt: Satz
Es existiert kein Algorithmus,
der im Worst Case mit weniger als nAbfragen auskommt.
Ein einzelnes Bit (2): Resultat
Wenn die ersten sechs abgefragten Bits s¨amtlich gleich0sind, muss auch das siebente Bit abgefragt werden:
Satz
Es existiert kein Algorithmus,
der im Worst Case mit weniger als 7Abfragen auskommt.
F¨ur das entsprechende Problem f¨ur Bitstrings der L¨angengilt:
Satz
Es existiert kein Algorithmus,
der im Worst Case mit weniger als nAbfragen auskommt.
EA/WS 2019 Kapitel 1: Suchprobleme 5/56
Zwei Bits (1): Problemstellung
Algorithmisches Problem: Bitmuster #2 Eingabe:Ein BitstringB[1, . . . ,5]der L¨ange5 Frage:Enth¨altB den Teilstring01?
Teure Operation: Abfrage eines Bits
Ziel: Antwort mit m¨oglichst wenig Bitabfragen finden
Frage
Wie sieht ein guter Algorithmus fuer dieses Problem aus, der auch im Worst Case nur wenige Bitabfragen macht?
Zwei Bits (2): Algorithmus
Algorithmus 1. AbfrageB[2]
2. AbfrageB[4]
Danach unterscheiden wir vier F¨alle: B =x0x0x: BitB[1]irrelevant B =x1x1x: BitB[5]irrelevant B =x1x0x: BitB[3]irrelevant B =x0x1x: Antwort = JA
Ergo: Es existiert ein Algorithmus, der mit h¨ochstens4Abfragen auskommt.
EA/WS 2019 Kapitel 1: Suchprobleme 7/56
Zwei Bits (2): Algorithmus
Algorithmus 1. AbfrageB[2]
2. AbfrageB[4]
Danach unterscheiden wir vier F¨alle:
B =x0x0x:
BitB[1]irrelevant B =x1x1x: BitB[5]irrelevant B =x1x0x: BitB[3]irrelevant B =x0x1x: Antwort = JA
Ergo: Es existiert ein Algorithmus, der mit h¨ochstens4Abfragen auskommt.
Zwei Bits (2): Algorithmus
Algorithmus 1. AbfrageB[2]
2. AbfrageB[4]
Danach unterscheiden wir vier F¨alle:
B =x0x0x: BitB[1]irrelevant
B =x1x1x: BitB[5]irrelevant B =x1x0x: BitB[3]irrelevant B =x0x1x: Antwort = JA
Ergo: Es existiert ein Algorithmus, der mit h¨ochstens4Abfragen auskommt.
EA/WS 2019 Kapitel 1: Suchprobleme 7/56
Zwei Bits (2): Algorithmus
Algorithmus 1. AbfrageB[2]
2. AbfrageB[4]
Danach unterscheiden wir vier F¨alle:
B =x0x0x: BitB[1]irrelevant B =x1x1x:
BitB[5]irrelevant B =x1x0x: BitB[3]irrelevant B =x0x1x: Antwort = JA
Ergo: Es existiert ein Algorithmus, der mit h¨ochstens4Abfragen auskommt.
Zwei Bits (2): Algorithmus
Algorithmus 1. AbfrageB[2]
2. AbfrageB[4]
Danach unterscheiden wir vier F¨alle:
B =x0x0x: BitB[1]irrelevant B =x1x1x: BitB[5]irrelevant
B =x1x0x: BitB[3]irrelevant B =x0x1x: Antwort = JA
Ergo: Es existiert ein Algorithmus, der mit h¨ochstens4Abfragen auskommt.
EA/WS 2019 Kapitel 1: Suchprobleme 7/56
Zwei Bits (2): Algorithmus
Algorithmus 1. AbfrageB[2]
2. AbfrageB[4]
Danach unterscheiden wir vier F¨alle:
B =x0x0x: BitB[1]irrelevant B =x1x1x: BitB[5]irrelevant B =x1x0x:
BitB[3]irrelevant B =x0x1x: Antwort = JA
Ergo: Es existiert ein Algorithmus, der mit h¨ochstens4Abfragen auskommt.
Zwei Bits (2): Algorithmus
Algorithmus 1. AbfrageB[2]
2. AbfrageB[4]
Danach unterscheiden wir vier F¨alle:
B =x0x0x: BitB[1]irrelevant B =x1x1x: BitB[5]irrelevant B =x1x0x: BitB[3]irrelevant
B =x0x1x: Antwort = JA
Ergo: Es existiert ein Algorithmus, der mit h¨ochstens4Abfragen auskommt.
EA/WS 2019 Kapitel 1: Suchprobleme 7/56
Zwei Bits (2): Algorithmus
Algorithmus 1. AbfrageB[2]
2. AbfrageB[4]
Danach unterscheiden wir vier F¨alle:
B =x0x0x: BitB[1]irrelevant B =x1x1x: BitB[5]irrelevant B =x1x0x: BitB[3]irrelevant B =x0x1x:
Antwort = JA
Ergo: Es existiert ein Algorithmus, der mit h¨ochstens4Abfragen auskommt.
Zwei Bits (2): Algorithmus
Algorithmus 1. AbfrageB[2]
2. AbfrageB[4]
Danach unterscheiden wir vier F¨alle:
B =x0x0x: BitB[1]irrelevant B =x1x1x: BitB[5]irrelevant B =x1x0x: BitB[3]irrelevant B =x0x1x: Antwort = JA
Ergo: Es existiert ein Algorithmus, der mit h¨ochstens4Abfragen auskommt.
EA/WS 2019 Kapitel 1: Suchprobleme 7/56
Zwei Bits (3): Strings mit ungerader L¨ ange
Nun betrachten wir die Suche nach dem Teilstring01in Strings der L¨angen.
Algorithmus f¨ur ungeradesn
Wir fragen die BitsB[2],B[4], . . . ,B[n−1] ab.
Danach unterscheiden wir vier F¨alle: B ∈Σ∗0Σ∗1Σ∗: Antwort = JA B ∈(Σ0)∗Σ: BitB[1]irrelevant B ∈(Σ1)∗Σ: BitB[n]irrelevant
B ∈Σ∗1Σ0Σ∗: Bit zwischen1und0irrelevant
Ergo: Es existiert ein Algorithmus, der mit≤n−1Abfragen auskommt.
Zwei Bits (3): Strings mit ungerader L¨ ange
Nun betrachten wir die Suche nach dem Teilstring01in Strings der L¨angen.
Algorithmus f¨ur ungeradesn
Wir fragen die BitsB[2],B[4], . . . ,B[n−1] ab.
Danach unterscheiden wir vier F¨alle:
B ∈Σ∗0Σ∗1Σ∗: Antwort = JA B ∈(Σ0)∗Σ: BitB[1]irrelevant B ∈(Σ1)∗Σ: BitB[n]irrelevant
B ∈Σ∗1Σ0Σ∗: Bit zwischen1und0irrelevant
Ergo: Es existiert ein Algorithmus, der mit≤n−1Abfragen auskommt.
EA/WS 2019 Kapitel 1: Suchprobleme 8/56
Zwei Bits (3): Strings mit ungerader L¨ ange
Nun betrachten wir die Suche nach dem Teilstring01in Strings der L¨angen.
Algorithmus f¨ur ungeradesn
Wir fragen die BitsB[2],B[4], . . . ,B[n−1] ab.
Danach unterscheiden wir vier F¨alle:
B ∈Σ∗0Σ∗1Σ∗: Antwort = JA B ∈(Σ0)∗Σ: BitB[1]irrelevant B ∈(Σ1)∗Σ: BitB[n]irrelevant
B ∈Σ∗1Σ0Σ∗: Bit zwischen1und0irrelevant
Ergo: Es existiert ein Algorithmus, der mit≤n−1Abfragen auskommt.
Zwei Bits (4a): Strings mit gerader L¨ ange
Eine b¨osartige Strategie, die Bitabfragen zu beantworten.
Adversary Strategie f¨ur geradesn
1. Definiere Dummybits B[0] =1undB[n+1] =0.
Setze`:=0und r :=n+1.
2. Wenn Abfrage q≤`: Antworte B[q] =1 Wenn Abfrageq≥r: Antworte B[q] =0 3. Wenn Abfrage ` <q<r:
Wenn q−`ungerade, antworteB[q] =0und setzer :=q.
Wenn r−qungerade, antworteB[q] =1und setze `:=q.
Invarianten:
Alle Bits links von `sind1, alle Bits rechts vonr sind0 Alle Bits zwischen`und r sind unbekannt
r −`ist ungerade (Wie wird das aufrecht erhalten?)
EA/WS 2019 Kapitel 1: Suchprobleme 9/56
Zwei Bits (4a): Strings mit gerader L¨ ange
Eine b¨osartige Strategie, die Bitabfragen zu beantworten.
Adversary Strategie f¨ur geradesn
1. Definiere Dummybits B[0] =1undB[n+1] =0.
Setze`:=0und r :=n+1.
2. Wenn Abfrage q≤`: Antworte B[q] =1 Wenn Abfrageq≥r: Antworte B[q] =0 3. Wenn Abfrage ` <q<r:
Wenn q−`ungerade, antworteB[q] =0und setzer :=q.
Wenn r−qungerade, antworteB[q] =1und setze `:=q.
Invarianten:
Alle Bits links von `sind1, alle Bits rechts vonr sind0 Alle Bits zwischen`undr sind unbekannt
r −`ist ungerade (Wie wird das aufrecht erhalten?)
Zwei Bits (4b): Strings mit gerader L¨ ange
Eine b¨osartige Strategie, die Bitabfragen zu beantworten.
Adversary Strategie f¨ur geradesn
1. Definiere Dummybits B[0] =1undB[n+1] =0.
Setze`:=0und r :=n+1.
2. Wenn Abfrage q≤`: Antworte B[q] =1 Wenn Abfrageq≥r: Antworte B[q] =0 3. Wenn Abfrage ` <q<r:
Wenn q−`ungerade, antworteB[q] =0und setzer :=q.
Wenn r−qungerade, antworteB[q] =1und setze `:=q.
Der Adversary konstruiert eine NEIN Instanz (ohne Teilstring01) Der Algorithmus muss alle Bits links von`erfragen
Der Algorithmus muss alle Bits rechts vonr erfragen Der Algorithmus muss alle Bits zwischen `undr erfragen
EA/WS 2019 Kapitel 1: Suchprobleme 10/56
Zwei Bits (5): Zusammenfassung
Der Adversary (f¨ur Strings mit gerader L¨ange) zwingt jeden Algorithmus, allenBits abzufragen:
Satz
F¨ur geradesnexistiert kein Algorithmus,
der im Worst Case mit weniger als nAbfragen auskommt.
Satz
F¨ur jedes ungeradenexistiert ein Algorithmus,
der im Worst Case mit h¨ochstensn−1Abfragen auskommt.
Graph-Zusammenhang
EA/WS 2019 Kapitel 1: Suchprobleme 12/56
Graph-Zusammenhang (1): Problemstellung
Algorithmisches Problem: Graph-Zusammenhang
Eingabe:Ein ungerichteter GraphG = (V,E)mitnKnoten Frage:Ist dieser Graph zusammenh¨angend?
Teure Operation: Abfrage einer Kante/Nicht-Kante zwischen zwei Knoten
Ziel: Antwort mit m¨oglichst wenig Abfragen finden
Frage
Wie sieht ein guter Algorithmus fuer dieses Problem aus, der auch im Worst Case nur wenige Abfragen macht?
Adversary Strategie (1)
Eine b¨osartige Strategie, die Abfragen zu beantworten.
1. DefiniereE+:=∅ undE?:=V ×V.
2. Die Abfrage nach einer Kante e wird wie folgt beantwortet:
Wenn(V,E?− {e})zusammenh¨angend ist, so l¨oschee ausE? und antworte NEIN.
Wenn(V,E?− {e})nicht zusammenh¨angend ist, so f¨ugee inE+ ein und antworte JA.
Beobachtungen:
Alle Kanten inE+ sind inG
Kanten ausserhalb vonE? sind nicht inG Es gilt E+⊆E?
EA/WS 2019 Kapitel 1: Suchprobleme 14/56
Adversary Strategie (1)
Eine b¨osartige Strategie, die Abfragen zu beantworten.
1. DefiniereE+:=∅ undE?:=V ×V.
2. Die Abfrage nach einer Kante e wird wie folgt beantwortet:
Wenn(V,E?− {e})zusammenh¨angend ist, so l¨oschee ausE? und antworte NEIN.
Wenn(V,E?− {e})nicht zusammenh¨angend ist, so f¨ugee inE+ ein und antworte JA.
Beobachtungen:
Alle Kanten inE+ sind inG
Kanten ausserhalb vonE? sind nicht inG Es gilt E+⊆E?
Adversary Strategie (2)
Invarianten:
Der Graph(V,E?)ist zusammenh¨angend
Wenn(V,E?)einen KreisC enth¨alt, so ist keine Kante vonC inE+ Der Graph(V,E+)ist kreisfrei
Wenn E+6=E?, dann ist(V,E+)nicht zusammenh¨angend
Satz
Der Adversary zwingt jeden Algorithmus, alle Kanten abzufragen.
EA/WS 2019 Kapitel 1: Suchprobleme 15/56
Adversary Strategie (2)
Invarianten:
Der Graph(V,E?)ist zusammenh¨angend
Wenn(V,E?)einen KreisC enth¨alt, so ist keine Kante vonC inE+
Der Graph(V,E+)ist kreisfrei
Wenn E+6=E?, dann ist(V,E+)nicht zusammenh¨angend
Satz
Der Adversary zwingt jeden Algorithmus, alle Kanten abzufragen.
Adversary Strategie (2)
Invarianten:
Der Graph(V,E?)ist zusammenh¨angend
Wenn(V,E?)einen KreisC enth¨alt, so ist keine Kante vonC inE+ Der Graph(V,E+)ist kreisfrei
Wenn E+6=E?, dann ist(V,E+)nicht zusammenh¨angend
Satz
Der Adversary zwingt jeden Algorithmus, alle Kanten abzufragen.
EA/WS 2019 Kapitel 1: Suchprobleme 15/56
Adversary Strategie (2)
Invarianten:
Der Graph(V,E?)ist zusammenh¨angend
Wenn(V,E?)einen KreisC enth¨alt, so ist keine Kante vonC inE+ Der Graph(V,E+)ist kreisfrei
Wenn E+6=E?, dann ist(V,E+)nicht zusammenh¨angend
Satz
Der Adversary zwingt jeden Algorithmus, alle Kanten abzufragen.
Adversary Strategie (2)
Invarianten:
Der Graph(V,E?)ist zusammenh¨angend
Wenn(V,E?)einen KreisC enth¨alt, so ist keine Kante vonC inE+ Der Graph(V,E+)ist kreisfrei
Wenn E+6=E?, dann ist(V,E+)nicht zusammenh¨angend
Satz
Der Adversary zwingt jeden Algorithmus, alle Kanten abzufragen.
EA/WS 2019 Kapitel 1: Suchprobleme 15/56
Evasive Graph-Eigenschaften (1)
Allgemeines Suchspiel:
Ein Algorithmus soll mit m¨oglichst wenig Kantenabfragen
herausfinden, ob ein Graph mitnKnoten eine EigenschaftP besitzt.
Ein Adversary beantwortet die Kantenabfragen und versucht, das Spielende m¨oglichst lange hinauszuz¨ogern.
Beispiele f¨ur EigenschaftP:
zusammenh¨angend; nicht zusammenh¨angend; kreisfrei; planar;
ohne Kanten; enth¨alt Knoten vom Grad 3; Baum;
Definition
Eine Graph-EigenschaftP heisstevasiv, wenn der Adversary erzwingen kann, dass der Algorithmus alle n2
Kanten abfragt.
Evasive Graph-Eigenschaften (1)
Allgemeines Suchspiel:
Ein Algorithmus soll mit m¨oglichst wenig Kantenabfragen
herausfinden, ob ein Graph mitnKnoten eine EigenschaftP besitzt.
Ein Adversary beantwortet die Kantenabfragen und versucht, das Spielende m¨oglichst lange hinauszuz¨ogern.
Beispiele f¨ur EigenschaftP:
zusammenh¨angend; nicht zusammenh¨angend; kreisfrei; planar;
ohne Kanten; enth¨alt Knoten vom Grad 3; Baum;
Definition
Eine Graph-EigenschaftP heisstevasiv, wenn der Adversary erzwingen kann, dass der Algorithmus alle n2
Kanten abfragt.
EA/WS 2019 Kapitel 1: Suchprobleme 16/56
Evasive Graph-Eigenschaften (2)
Definition
Eine Graph-EigenschaftP heisstnicht-trivial,
wenn es mindestens einen Graphen gibt, derP hat, und wenn es mindestens einen Graphen gibt, derP nicht hat.
Eine Graph-EigenschaftP heisstmonoton,
wenn f¨ur jeden GraphenG = (V,E)und jede TeilmengeE0⊆E gilt: Wenn G = (V,E)EigenschaftP hat, so auch der Graph(V,E0). Beispiel: Ist “kreisfrei” monoton?
Beispiel: Ist “zusammenh¨angend” monoton? Beispiel: Ist “nicht zusammenh¨angend” monoton?
Evasive Graph-Eigenschaften (2)
Definition
Eine Graph-EigenschaftP heisstnicht-trivial,
wenn es mindestens einen Graphen gibt, derP hat, und wenn es mindestens einen Graphen gibt, derP nicht hat.
Eine Graph-EigenschaftP heisstmonoton,
wenn f¨ur jeden GraphenG = (V,E)und jede TeilmengeE0⊆E gilt:
Wenn G = (V,E)EigenschaftP hat, so auch der Graph(V,E0).
Beispiel: Ist “kreisfrei” monoton?
Beispiel: Ist “zusammenh¨angend” monoton? Beispiel: Ist “nicht zusammenh¨angend” monoton?
EA/WS 2019 Kapitel 1: Suchprobleme 17/56
Evasive Graph-Eigenschaften (2)
Definition
Eine Graph-EigenschaftP heisstnicht-trivial,
wenn es mindestens einen Graphen gibt, derP hat, und wenn es mindestens einen Graphen gibt, derP nicht hat.
Eine Graph-EigenschaftP heisstmonoton,
wenn f¨ur jeden GraphenG = (V,E)und jede TeilmengeE0⊆E gilt:
Wenn G = (V,E)EigenschaftP hat, so auch der Graph(V,E0).
Beispiel: Ist “kreisfrei” monoton?
Beispiel: Ist “zusammenh¨angend” monoton?
Beispiel: Ist “nicht zusammenh¨angend” monoton?
Evasive Graph-Eigenschaften (3)
St˚al Aanderaa, Richard M. Karp, und Arnold L. Rosenberg vermuten:
Aanderaa-Karp-Rosenberg conjecture (1974)
Jede nicht-triviale, monotone Graph-Eigenschaft ist evasiv.
Alle F¨alle, in denenn=pk eine Primzahl-Potenz ist, sind bewiesen.
EA/WS 2019 Kapitel 1: Suchprobleme 18/56
Zum Aufw¨ armen:
Gr¨ osste Zahl
Maximum (1): Problemstellung
Algorithmisches Problem: Maximum Eingabe:Ganze Zahlena1,a2, . . . ,an Gesucht:Das Maximummax{a1,a2, . . . ,an}
Teure Operation: Vergleich von zwei Zahlenai undaj Liefert ai <aj oderai =aj oderai >aj als Antwort Kein Zugriff auf den Zahlenwert von ai
Verwaltungsoperationen (FOR-Loops; Indexoperationen;
Rechenoperationen; etc) sind gratis
Frage
Wie sieht ein guter Algorithmus fuer dieses Problem aus, der auch im Worst Case nur wenige Vergleiche macht?
EA/WS 2019 Kapitel 1: Suchprobleme 20/56
Maximum (1): Problemstellung
Algorithmisches Problem: Maximum Eingabe:Ganze Zahlena1,a2, . . . ,an Gesucht:Das Maximummax{a1,a2, . . . ,an}
Teure Operation: Vergleich von zwei Zahlenai undaj Liefert ai <aj oderai =aj oderai >aj als Antwort Kein Zugriff auf den Zahlenwert von ai
Verwaltungsoperationen (FOR-Loops; Indexoperationen;
Rechenoperationen; etc) sind gratis
Frage
Wie sieht ein guter Algorithmus fuer dieses Problem aus, der auch im Worst Case nur wenige Vergleiche macht?
Maximum (2): Algorithmus
1 k= n;
2 for i= 1 to n-1 do
3 if (a[i] ¿ a[k]) then k= i;
4
5 return k;
Satz
Das Maximum Problem
kann mitn−1Vergleichen (im Worst Case) gel¨ost werden.
Frage
Gibt es einen besseren Algorithmus?
EA/WS 2019 Kapitel 1: Suchprobleme 21/56
Maximum (2): Algorithmus
1 k= n;
2 for i= 1 to n-1 do
3 if (a[i] ¿ a[k]) then k= i;
4
5 return k;
Satz
Das Maximum Problem
kann mitn−1Vergleichen (im Worst Case) gel¨ost werden.
Frage
Gibt es einen besseren Algorithmus?
Maximum (3): Untere Schranke
Betrachte beliebigen AlgorithmusAf¨ur das Maximum Problem Konstruiere HilfsgraphenG = (V,E)mitV ={1,2, . . . ,n}
Am Anfang ist die KantenmengeE leer
Wenn AlgorithmusAdie Zahlenai und aj vergleicht, f¨ugen wir die Kante{i,j}ein
SolangeG = (V,E)nicht zusammenh¨angend ist,
hatAdas Maximum Problem noch nicht gel¨ost (Warum?)
(Einfacher) Satz aus der Graphentheorie
WennG = (V,E)zusammenh¨angend, dann|E| ≥ |V| −1. Ergo: Dien−1Vergleiche sind bereits bestm¨oglich
EA/WS 2019 Kapitel 1: Suchprobleme 22/56
Maximum (3): Untere Schranke
Betrachte beliebigen AlgorithmusAf¨ur das Maximum Problem Konstruiere HilfsgraphenG = (V,E)mitV ={1,2, . . . ,n}
Am Anfang ist die KantenmengeE leer
Wenn AlgorithmusAdie Zahlenai und aj vergleicht, f¨ugen wir die Kante{i,j}ein
SolangeG = (V,E)nicht zusammenh¨angend ist,
hatAdas Maximum Problem noch nicht gel¨ost (Warum?)
(Einfacher) Satz aus der Graphentheorie
WennG = (V,E)zusammenh¨angend, dann|E| ≥ |V| −1. Ergo: Dien−1Vergleiche sind bereits bestm¨oglich
Maximum (3): Untere Schranke
Betrachte beliebigen AlgorithmusAf¨ur das Maximum Problem Konstruiere HilfsgraphenG = (V,E)mitV ={1,2, . . . ,n}
Am Anfang ist die KantenmengeE leer
Wenn AlgorithmusAdie Zahlenai und aj vergleicht, f¨ugen wir die Kante{i,j}ein
SolangeG = (V,E)nicht zusammenh¨angend ist,
hatAdas Maximum Problem noch nicht gel¨ost (Warum?)
(Einfacher) Satz aus der Graphentheorie
WennG = (V,E)zusammenh¨angend, dann|E| ≥ |V| −1.
Ergo: Dien−1Vergleiche sind bereits bestm¨oglich
EA/WS 2019 Kapitel 1: Suchprobleme 22/56
Maximum und Minimum
Max+Min (1): Problemstellung
Problem: Max+Min
Eingabe:Ganze Zahlena1,a2, . . . ,an
Gesucht:max{a1,a2, . . . ,an} undmin{a1,a2, . . . ,an} Wir nehmen an:nist eine gerade Zahl mitn=2q
Algorithmus:
Teile die Zahlen inq Paare auf
Bestimme in jedem Paar die gr¨ossere Zahl (Gewinner) und die kleinere Zahl (Verlierer)
Bestimme das Minimum der Verlierer Bestimme das Maximum der Gewinner Satz
Das Max+Min Problem kann mit3q−2Vergleichen gel¨ost werden.
EA/WS 2019 Kapitel 1: Suchprobleme 24/56
Max+Min (1): Problemstellung
Problem: Max+Min
Eingabe:Ganze Zahlena1,a2, . . . ,an
Gesucht:max{a1,a2, . . . ,an} undmin{a1,a2, . . . ,an} Wir nehmen an:nist eine gerade Zahl mitn=2q Algorithmus:
Teile die Zahlen inq Paare auf
Bestimme in jedem Paar die gr¨ossere Zahl (Gewinner) und die kleinere Zahl (Verlierer)
Bestimme das Minimum der Verlierer Bestimme das Maximum der Gewinner
Satz
Das Max+Min Problem kann mit3q−2Vergleichen gel¨ost werden.
Max+Min (1): Problemstellung
Problem: Max+Min
Eingabe:Ganze Zahlena1,a2, . . . ,an
Gesucht:max{a1,a2, . . . ,an} undmin{a1,a2, . . . ,an} Wir nehmen an:nist eine gerade Zahl mitn=2q Algorithmus:
Teile die Zahlen inq Paare auf
Bestimme in jedem Paar die gr¨ossere Zahl (Gewinner) und die kleinere Zahl (Verlierer)
Bestimme das Minimum der Verlierer Bestimme das Maximum der Gewinner Satz
Das Max+Min Problem kann mit3q−2Vergleichen gel¨ost werden.
EA/WS 2019 Kapitel 1: Suchprobleme 24/56
Max+Min (2a): Untere Schranke
Klassifikation der Zahlen in vier Typen:
U: unber¨uhrt; wurde noch nie verglichen
G: Gewinner; hat einen Vergleich gewonnen, noch nie verloren V: Verlierer; hat einen Vergleich verloren, noch nie gewonnen E: Eliminiert; hat Vergleich gewonnen und Vergleich verloren
Gewichte:
Jede Zahl inU hat Gewicht2 Jede Zahl inG hat Gewicht1 Jede Zahl inV hat Gewicht1 Jede Zahl inE hat Gewicht 0
Max+Min (2a): Untere Schranke
Klassifikation der Zahlen in vier Typen:
U: unber¨uhrt; wurde noch nie verglichen
G: Gewinner; hat einen Vergleich gewonnen, noch nie verloren V: Verlierer; hat einen Vergleich verloren, noch nie gewonnen E: Eliminiert; hat Vergleich gewonnen und Vergleich verloren Gewichte:
Jede Zahl inU hat Gewicht2 Jede Zahl inG hat Gewicht1 Jede Zahl inV hat Gewicht1 Jede Zahl inE hat Gewicht 0
EA/WS 2019 Kapitel 1: Suchprobleme 25/56
Max+Min (2b): Untere Schranke
Grundidee
Wir betrachten einen beliebigen AlgorithmusA, und
lassen einen b¨osartigen Gegenspieler (“Adversary”) gegen Aarbeiten.
Der Adversary beantwortet Vergleiche derart, dass m¨oglichst wenig Gewicht verloren geht (aber konsistent mit vorherigen Vergleichen)
U versusU: Gewichtsverlust =2 V versusV: Gewichtsverlust =1 G versusG: Gewichtsverlust =1 U versusG/V/E: Gewichtsverlust = 1 E versusG/V/E: Gewichtsverlust =0 G versusV: Gewichtsverlust =0
Max+Min (2b): Untere Schranke
Grundidee
Wir betrachten einen beliebigen AlgorithmusA, und
lassen einen b¨osartigen Gegenspieler (“Adversary”) gegen Aarbeiten.
Der Adversary beantwortet Vergleiche derart, dass m¨oglichst wenig Gewicht verloren geht (aber konsistent mit vorherigen Vergleichen)
U versusU: Gewichtsverlust =2 V versusV: Gewichtsverlust =1 G versusG: Gewichtsverlust =1 U versusG/V/E: Gewichtsverlust = 1 E versusG/V/E: Gewichtsverlust =0 G versusV: Gewichtsverlust =0
EA/WS 2019 Kapitel 1: Suchprobleme 26/56
Max+Min (2c): Untere Schranke
Definition
v0 := Anzahl der Vergleiche, die Gesamtgewicht nicht senken v1 := Anzahl der Vergleiche, die Gesamtgewicht um1senken v2 := Anzahl der Vergleiche, die Gesamtgewicht um2senken
Gesamtgewicht f¨allt von 2n(am Anfang) auf2(am Ende) Ergo: v1+2v2=2n−2=4q−2
Nur U versusU Vergleiche senken Gewicht um2 Ergo: v2≤n/2=q
Daher gilt:v1+v2 = 4q−2−v2 ≥ 4q−2−q Satz
Im Worst Case braucht man3q−2Vergleiche f¨ur Max+Min.
Max+Min (2c): Untere Schranke
Definition
v0 := Anzahl der Vergleiche, die Gesamtgewicht nicht senken v1 := Anzahl der Vergleiche, die Gesamtgewicht um1senken v2 := Anzahl der Vergleiche, die Gesamtgewicht um2senken
Gesamtgewicht f¨allt von 2n(am Anfang) auf2(am Ende) Ergo: v1+2v2=2n−2=4q−2
Nur U versusU Vergleiche senken Gewicht um2 Ergo: v2≤n/2=q
Daher gilt:v1+v2 = 4q−2−v2 ≥ 4q−2−q Satz
Im Worst Case braucht man3q−2Vergleiche f¨ur Max+Min.
EA/WS 2019 Kapitel 1: Suchprobleme 27/56
Max+Min (2c): Untere Schranke
Definition
v0 := Anzahl der Vergleiche, die Gesamtgewicht nicht senken v1 := Anzahl der Vergleiche, die Gesamtgewicht um1senken v2 := Anzahl der Vergleiche, die Gesamtgewicht um2senken
Gesamtgewicht f¨allt von 2n(am Anfang) auf2(am Ende) Ergo: v1+2v2=2n−2=4q−2
Nur U versusU Vergleiche senken Gewicht um2 Ergo: v2≤n/2=q
Daher gilt:v1+v2 = 4q−2−v2 ≥ 4q−2−q
Satz
Im Worst Case braucht man3q−2Vergleiche f¨ur Max+Min.
Max+Min (2c): Untere Schranke
Definition
v0 := Anzahl der Vergleiche, die Gesamtgewicht nicht senken v1 := Anzahl der Vergleiche, die Gesamtgewicht um1senken v2 := Anzahl der Vergleiche, die Gesamtgewicht um2senken
Gesamtgewicht f¨allt von 2n(am Anfang) auf2(am Ende) Ergo: v1+2v2=2n−2=4q−2
Nur U versusU Vergleiche senken Gewicht um2 Ergo: v2≤n/2=q
Daher gilt:v1+v2 = 4q−2−v2 ≥ 4q−2−q Satz
Im Worst Case braucht man3q−2Vergleiche f¨ur Max+Min.
EA/WS 2019 Kapitel 1: Suchprobleme 27/56
Zweitgr¨ osste Zahl
Zweitgr¨ osste Zahl (1): Problemstellung
Problem: Zweitgr¨osste Zahl
Eingabe:Ganze Zahlena1,a2, . . . ,an
Gesucht:Die gr¨osste und die zweitgr¨osste Zahl untera1,a2, . . . ,an
Wir nehmen an:nist eine Zweierpotenz mitn=2q
Algorithmus:
Wir schreibena1,a2, . . . ,an in die Bl¨atter eines Bin¨arbaumes Jeder Vaterknoten enth¨alt das Maximum der beiden S¨ohne Die gr¨osste Zahl steht in der Wurzel
Die zweitgr¨osste Zahl hat Vergleich gegen gr¨osste Zahl verloren Satz
Die zweitgr¨osste Zahl kann mit2q+q−2Vergleichen gefunden werden.
EA/WS 2019 Kapitel 1: Suchprobleme 29/56
Zweitgr¨ osste Zahl (1): Problemstellung
Problem: Zweitgr¨osste Zahl
Eingabe:Ganze Zahlena1,a2, . . . ,an
Gesucht:Die gr¨osste und die zweitgr¨osste Zahl untera1,a2, . . . ,an
Wir nehmen an:nist eine Zweierpotenz mitn=2q Algorithmus:
Wir schreibena1,a2, . . . ,an in die Bl¨atter eines Bin¨arbaumes Jeder Vaterknoten enth¨alt das Maximum der beiden S¨ohne Die gr¨osste Zahl steht in der Wurzel
Die zweitgr¨osste Zahl hat Vergleich gegen gr¨osste Zahl verloren Satz
Die zweitgr¨osste Zahl kann mit2q+q−2Vergleichen gefunden werden.
Zweitgr¨ osste Zahl (2a): Untere Schranke
Jede Zahlai wird als Partikel mit gewisser Energie angesehen Die Anfangsenergie jedes Partikels ist 1
Werden zwei Zahlen mit einander verglichen, so erh¨alt Gewinner gesamte Energie des Verlierers dazu (Verlierer hat dann Energie 0) Anmerkungen:
Die Gesamtenergie bleibt konstant.
Am Ende hat Maximum die gesamte Energie n=2q angesammelt;
alle anderen Partikel haben Energie0
Grundidee
Der Adversary beantwortet die Vergleiche immer derart,
dass der Partikel mit der h¨oheren Energie den Vergleich gewinnt. (Tiebreaking = beliebig; Partikel mit Energie0= konsistent)
EA/WS 2019 Kapitel 1: Suchprobleme 30/56
Zweitgr¨ osste Zahl (2a): Untere Schranke
Jede Zahlai wird als Partikel mit gewisser Energie angesehen Die Anfangsenergie jedes Partikels ist 1
Werden zwei Zahlen mit einander verglichen, so erh¨alt Gewinner gesamte Energie des Verlierers dazu (Verlierer hat dann Energie 0) Anmerkungen:
Die Gesamtenergie bleibt konstant.
Am Ende hat Maximum die gesamte Energie n=2q angesammelt;
alle anderen Partikel haben Energie0 Grundidee
Der Adversary beantwortet die Vergleiche immer derart,
dass der Partikel mit der h¨oheren Energie den Vergleich gewinnt.
(Tiebreaking = beliebig; Partikel mit Energie0= konsistent)
Zweitgr¨ osste Zahl (2b): Untere Schranke
Am Ende hat das Maximum an vielen Vergleichen teilgenommen:
Vor seinem letzten Vergleich hatte Maximum Energie ≥2q−1 Vor dem vorletzten Vergleich hatte Maximum Energie≥2q−2 Etc. Etc.
Ergo: Maximum hat mindestensq Vergleiche gewonnen
Analyse
Jedes Nicht-Maximum hat mindestens einen Vergleich verloren. Jede nicht-zweitgr¨osste Zahl, die gegen Maximum verloren hat, hat mindestens einen weiteren Vergleich verloren.
Ergo: Mindestens(2q−1) + (q−1)Vergleiche
EA/WS 2019 Kapitel 1: Suchprobleme 31/56
Zweitgr¨ osste Zahl (2b): Untere Schranke
Am Ende hat das Maximum an vielen Vergleichen teilgenommen:
Vor seinem letzten Vergleich hatte Maximum Energie ≥2q−1 Vor dem vorletzten Vergleich hatte Maximum Energie≥2q−2 Etc. Etc.
Ergo: Maximum hat mindestensq Vergleiche gewonnen
Analyse
Jedes Nicht-Maximum hat mindestens einen Vergleich verloren.
Jede nicht-zweitgr¨osste Zahl, die gegen Maximum verloren hat, hat mindestens einen weiteren Vergleich verloren.
Ergo: Mindestens(2q−1) + (q−1)Vergleiche
k -kleinste Zahl und Median
EA/WS 2019 Kapitel 1: Suchprobleme 32/56
k -kleinste Zahl: Problemstellung
Problem:k-kleinste Zahl
Eingabe:Ganze Zahlena1,a2, . . . ,an undk Gesucht:Die k-kleinste Zahl untera1,a2, . . . ,an
k =1: Minimum k =n: Maximum k =n/2: Median
Problem: Median
Eingabe:Ganze Zahlena1,a2, . . . ,an
Gesucht:Der Median der Zahlena1,a2, . . . ,an
k -kleinste Zahl: Ein schneller Algorithmus
Einfache Idee:
Sortiere die Zahlen a1,a2, . . . ,an Gib diek-te Zahl in der Sortierung aus
Satz
Diek-kleinste Zahl und der Median
k¨onnen mitO(nlogn)Vergleichen gefunden werden.
EA/WS 2019 Kapitel 1: Suchprobleme 34/56
Median: Untere Schranke (1)
Der Adversary h¨alt folgende Struktur aufrecht:
Die Zahlena1,a2, . . . ,an sind in drei Mengen aufgeteilt.
Die MengeG der grossen Zahlen ist total geordnet.
Die MengeK der kleinen Zahlen ist total geordnet.
Die MengeM der mittleren Zahlen besteht aus vergleichbaren Paaren und Einzelelementen.
F¨ur allek ∈K, m∈M,g∈G giltk <m<g
M
G K
Median: Untere Schranke (2a)
Angenommen, der Algorithmus m¨ochte wissen, wie sich die beiden Elementex undy zu einander verhalten:
Fallsx,y ∈K, oderx,y ∈G,
so antwortet der Adversary gem¨ass der totalen Ordnung.
Fallsx∈K undy ∈M∪G, oderx∈M undy ∈G, so antwortet der Adversary “x<y”.
In den verbleibenden F¨allen giltx,y∈M.
EA/WS 2019 Kapitel 1: Suchprobleme 36/56
Median: Untere Schranke (2b)
Wir definieren einen Hilfswertα(x)f¨ur jedesx ∈M:
α(x) =0, fallsx Einzelement
α(x) =−1, fallsx kleines Element in Paar α(x) = +1, fallsx grosses Element in Paar
Muss der Adversary zwei Elementex undy mitα(x)≤α(y)vergleichen, so antwortet er “x <y”.
Fallsα(x) =α(y) =0, so bleibenx undy inM und formen ein neues Paar.
Andernfalls: Wennα(x) =−1, so wirdx ausM entfernt und wandert als neues gr¨osstes Element nach K
Andernfalls: Wennα(x)∈ {0,1}, so wirdy ausM entfernt und wandert als neues keinstes Element nachG
Median: Untere Schranke (2b)
Wir definieren einen Hilfswertα(x)f¨ur jedesx ∈M:
α(x) =0, fallsx Einzelement
α(x) =−1, fallsx kleines Element in Paar α(x) = +1, fallsx grosses Element in Paar
Muss der Adversary zwei Elementex undy mitα(x)≤α(y)vergleichen, so antwortet er “x <y”.
Fallsα(x) =α(y) =0, so bleibenx undy inM und formen ein neues Paar.
Andernfalls: Wennα(x) =−1, so wirdx ausM entfernt und wandert als neues gr¨osstes Element nach K
Andernfalls: Wennα(x)∈ {0,1}, so wirdy aus M entfernt und wandert als neues keinstes Element nachG
EA/WS 2019 Kapitel 1: Suchprobleme 37/56
Median: Untere Schranke (3a)
Es seiv die Anzahl der bisher gemachten Vergleiche.
Es seipdie Anzahl der vergleichbaren Paare in M.
Lemma
Der Adversary h¨alt die Invariante v ≥2n+p−2|M| aufrecht.
Beweisskizze:
Fallsα(x) =α(y) =0: ein neues Paar entsteht
Andernfalls: Ein Element verschwindet ausM, ein Paar l¨ost sich auf
Median: Untere Schranke (3b)
Wir betrachten den Zeitpunktt,
wenn zum ersten Mal|G|=n/2−1oder|K|=n/2−1gilt.
Vor diesem Zeitpunktt steht es dem Adversary v¨ollig frei zu entscheiden, ob ein Element von M nachK oder nachG geh¨ort.
Zum Zeitpunktt kann dann aber nur noch das kleinste/gr¨osste Element von M nachK/G geh¨oren.
Lemma
Zum Zeitpunkttgilt die triviale Schranke |M| ≤n/2+1
EA/WS 2019 Kapitel 1: Suchprobleme 39/56
Median: Untere Schranke (4)
Zum Zeitpunkttgilt also:
Invariante v ≥2n+p−2|M|
Schranke |M| ≤n/2+1 Satz
Im Worst Case braucht man mindestens3n/2−2Vergleiche um den Median zu finden.
Beweisskizze:
Bis zum Zeitpunktt hat der Algorithmus mindestens2n+p−2|M| Vergleiche gemacht.
Nach dem Zeitpunktt muss der Algorithmus dann noch das Minimum/Maximum von M herausfinden. Dazu braucht er
|M| −p−1weitere Vergleiche.
Insgesamt braucht der Algorithmus also mindestens 2n− |M| −1 Vergleiche.
Median: Untere Schranke (4)
Zum Zeitpunkttgilt also:
Invariante v ≥2n+p−2|M|
Schranke |M| ≤n/2+1 Satz
Im Worst Case braucht man mindestens3n/2−2Vergleiche um den Median zu finden.
Beweisskizze:
Bis zum Zeitpunktt hat der Algorithmus mindestens2n+p−2|M| Vergleiche gemacht.
Nach dem Zeitpunktt muss der Algorithmus dann noch das Minimum/Maximum von M herausfinden. Dazu braucht er
|M| −p−1weitere Vergleiche.
Insgesamt braucht der Algorithmus also mindestens 2n− |M| −1 Vergleiche.
EA/WS 2019 Kapitel 1: Suchprobleme 40/56
k -kleinste Zahl (und Median)
in linearer Zeit
k -kleinste Zahl in linearer Zeit: Hilfsprozedur
Eingabe:Ein ArrayA[1. . .n]; eine Zahl x
Ausgabe:Eine Umsortierung der Zahlen inA, in der alle Zahlen≤x links von den Zahlen>x stehen
PARTITION (A,x) 1 i= 0
2 for j= 1 to n do 3 if A[j]¡=x then
4 –i= i+1;
5 exchange A[i] with A[j]˝
6 return i
Invariante: Jeder Indexpmit1≤p≤i erf¨ulltA[p]≤x Invariante: Jeder Indexpmiti+1≤p≤j−1erf¨ulltA[p]>x
EA/WS 2019 Kapitel 1: Suchprobleme 42/56
k -kleinste Zahl in linearer Zeit: Hauptprogramm
1 Fallsn≤20: Bestimmek-kleinste Zahl durch Sortieren. Stop.
2 Teile die nZahlen inbn/5cF¨unfergruppen auf
(und eine Restgruppe mit den restlichennmod 5Zahlen)
3 Sortiere in jeder dieser dn/5eGruppen die Zahlen, und bestimme den Median der Gruppe
4 Bestimme (rekursiv) den Medianx dieserdn/5eMediane
5 PARTITIONiere das Eingabearray um den Median-der-Mediane x. Danach sind die erstenqZahlen im Array ≤x,
und die restlichenn−qZahlen sind >x.
6 Wenn k =q: Gibx alsk-kleinste Zahl aus.
Wennk<q: Berechne rekursiv diek-kleinste Zahl inA[1. . .q−1]. Wennk >q: Berechne rekursiv die(k−q)-kleinste Zahl
inA[q+1. . .n].
k -kleinste Zahl in linearer Zeit: Hauptprogramm
1 Fallsn≤20: Bestimmek-kleinste Zahl durch Sortieren. Stop.
2 Teile die nZahlen inbn/5cF¨unfergruppen auf
(und eine Restgruppe mit den restlichennmod 5Zahlen)
3 Sortiere in jeder dieser dn/5eGruppen die Zahlen, und bestimme den Median der Gruppe
4 Bestimme (rekursiv) den Medianx dieserdn/5eMediane
5 PARTITIONiere das Eingabearray um den Median-der-Mediane x. Danach sind die erstenqZahlen im Array ≤x,
und die restlichenn−qZahlen sind >x.
6 Wenn k =q: Gibx alsk-kleinste Zahl aus.
Wennk<q: Berechne rekursiv diek-kleinste Zahl inA[1. . .q−1]. Wennk >q: Berechne rekursiv die(k−q)-kleinste Zahl
inA[q+1. . .n].
EA/WS 2019 Kapitel 1: Suchprobleme 43/56
k -kleinste Zahl in linearer Zeit: Hauptprogramm
1 Fallsn≤20: Bestimmek-kleinste Zahl durch Sortieren. Stop.
2 Teile die nZahlen inbn/5cF¨unfergruppen auf
(und eine Restgruppe mit den restlichennmod 5Zahlen)
3 Sortiere in jeder dieser dn/5eGruppen die Zahlen, und bestimme den Median der Gruppe
4 Bestimme (rekursiv) den Medianx dieserdn/5eMediane
5 PARTITIONiere das Eingabearray um den Median-der-Mediane x. Danach sind die erstenqZahlen im Array ≤x,
und die restlichenn−qZahlen sind >x.
6 Wenn k =q: Gibx alsk-kleinste Zahl aus.
Wennk<q: Berechne rekursiv diek-kleinste Zahl inA[1. . .q−1]. Wennk >q: Berechne rekursiv die(k−q)-kleinste Zahl
inA[q+1. . .n].
k -kleinste Zahl in linearer Zeit: Hauptprogramm
1 Fallsn≤20: Bestimmek-kleinste Zahl durch Sortieren. Stop.
2 Teile die nZahlen inbn/5cF¨unfergruppen auf
(und eine Restgruppe mit den restlichennmod 5Zahlen)
3 Sortiere in jeder dieser dn/5eGruppen die Zahlen, und bestimme den Median der Gruppe
4 Bestimme (rekursiv) den Medianx dieser dn/5eMediane
5 PARTITIONiere das Eingabearray um den Median-der-Mediane x. Danach sind die erstenqZahlen im Array ≤x,
und die restlichenn−qZahlen sind >x.
6 Wenn k =q: Gibx alsk-kleinste Zahl aus.
Wennk<q: Berechne rekursiv diek-kleinste Zahl inA[1. . .q−1]. Wennk >q: Berechne rekursiv die(k−q)-kleinste Zahl
inA[q+1. . .n].
EA/WS 2019 Kapitel 1: Suchprobleme 43/56
k -kleinste Zahl in linearer Zeit: Hauptprogramm
1 Fallsn≤20: Bestimmek-kleinste Zahl durch Sortieren. Stop.
2 Teile die nZahlen inbn/5cF¨unfergruppen auf
(und eine Restgruppe mit den restlichennmod 5Zahlen)
3 Sortiere in jeder dieser dn/5eGruppen die Zahlen, und bestimme den Median der Gruppe
4 Bestimme (rekursiv) den Medianx dieser dn/5eMediane
5 PARTITIONiere das Eingabearray um den Median-der-Mediane x.
Danach sind die erstenqZahlen im Array ≤x, und die restlichenn−qZahlen sind>x.
6 Wenn k =q: Gibx alsk-kleinste Zahl aus.
Wennk<q: Berechne rekursiv diek-kleinste Zahl inA[1. . .q−1]. Wennk >q: Berechne rekursiv die(k−q)-kleinste Zahl
inA[q+1. . .n].
k -kleinste Zahl in linearer Zeit: Hauptprogramm
1 Fallsn≤20: Bestimmek-kleinste Zahl durch Sortieren. Stop.
2 Teile die nZahlen inbn/5cF¨unfergruppen auf
(und eine Restgruppe mit den restlichennmod 5Zahlen)
3 Sortiere in jeder dieser dn/5eGruppen die Zahlen, und bestimme den Median der Gruppe
4 Bestimme (rekursiv) den Medianx dieser dn/5eMediane
5 PARTITIONiere das Eingabearray um den Median-der-Mediane x.
Danach sind die erstenqZahlen im Array ≤x, und die restlichenn−qZahlen sind>x.
6 Wenn k =q: Gibx alsk-kleinste Zahl aus.
Wennk<q: Berechne rekursiv die k-kleinste Zahl inA[1. . .q−1].
Wennk >q: Berechne rekursiv die(k−q)-kleinste Zahl
inA[q+1. . .n].
EA/WS 2019 Kapitel 1: Suchprobleme 43/56
k -kleinste Zahl in linearer Zeit: Analyse (1)
Aufteilung in F¨unfergruppen: in linearer ZeitO(n)
Sortieren der f¨unf Zahlen in jeder Gruppe: in linearer ZeitO(n) Bestimmung des Medians-der-Mediane: in Zeit T(n/5)
PARTITION in Teil≤x und Teil >x: in linearer ZeitO(n) Rekursion: in ZeitO(1)oderT(q)oderT(n−q)
Wir erhalten die Zeitgleichung
T(n) = T(n/5) +max{T(q), T(n−q)}+O(n)
k -kleinste Zahl in linearer Zeit: Analyse (2)
EA/WS 2019 Kapitel 1: Suchprobleme 45/56
k -kleinste Zahl in linearer Zeit: Analyse (2)
k -kleinste Zahl in linearer Zeit: Analyse (2)
EA/WS 2019 Kapitel 1: Suchprobleme 47/56
k -kleinste Zahl in linearer Zeit: Analyse (2)
k -kleinste Zahl in linearer Zeit: Analyse (3)
Zusammenfassende Beobachtung
Von dennZahlen sind≈3n/10garantiert>Median-der-Mediane.
Von dennZahlen sind≈3n/10garantiert≤Median-der-Mediane.
Ergo: 3n/10≤q≤7n/10
Die alte Zeitgleichung mitq
T(n) = T(n/5) +max{T(q), T(n−q)}+O(n) liefert uns nun
T(n) ≤ T(n/5) +T(7n/10) +O(n).
EA/WS 2019 Kapitel 1: Suchprobleme 49/56
k -kleinste Zahl in linearer Zeit: Analyse (3)
Zusammenfassende Beobachtung
Von dennZahlen sind≈3n/10garantiert>Median-der-Mediane.
Von dennZahlen sind≈3n/10garantiert≤Median-der-Mediane.
Ergo: 3n/10≤q≤7n/10
Die alte Zeitgleichung mitq
T(n) = T(n/5) +max{T(q), T(n−q)}+O(n) liefert uns nun
T(n) ≤ T(n/5) +T(7n/10) +O(n).
k -kleinste Zahl in linearer Zeit: Analyse (4)
Satz
Diek-kleinste Zahl und der Median
k¨onnen in linearer ZeitO(n)berechnet werden.
Zur Erinnerung: Wenn f¨ur ein reellesc>0 T(n) ≤ T(n/5) +T(7n/10) +cn
gilt, so kann man daraus mit vollst¨andiger Induktion T(n) ≤ d·n
f¨ur jedes reelled ≥10c herleiten.
EA/WS 2019 Kapitel 1: Suchprobleme 50/56
Anmerkungen
DerO(n)Algorithmus stammt von Manuel Blum, Robert Floyd, Vaughan Pratt, Ron Rivest und Robert Tarjan, und ist aus dem Jahr 1973.
Haus¨ubung
(a) Zeige: Nimmt man Dreiergruppen statt F¨unfergruppen, so erh¨alt man keine lineare Laufzeit.
(b) Zeige: Nimmt man Siebenergruppen statt F¨unfergruppen, so erh¨alt man ebenfalls eine lineare Laufzeit.
Satz (Dorit Dor & Uri Zwick, 2001)
Der Median kann mit2.95nVergleichen gefunden werden.
Der Median kann nicht mit(2+2−80)nVergleichen gefunden werden.
k -kleinste Zahl (und Median) randomisiert
EA/WS 2019 Kapitel 1: Suchprobleme 52/56
Randomisierter Algorithmus
In der Praxis wird das Split-Elementx einfach zuf¨allig gew¨ahlt (und nicht in einer teuren Rekursion als Median-der-Mediane berechnet).
Intuition: Mit hoher Wahrscheinlichkeit liegt der resultierende Wertq weit weg von0und weit weg vonn.
Die Worst Case Laufzeit dieses randomisierten Algorithmus ist quadratisch.
Wir werden zeigen: Satz
Die erwartete Laufzeit dieses randomisierten Algorithmus istO(n).
Randomisierter Algorithmus
In der Praxis wird das Split-Elementx einfach zuf¨allig gew¨ahlt (und nicht in einer teuren Rekursion als Median-der-Mediane berechnet).
Intuition: Mit hoher Wahrscheinlichkeit liegt der resultierende Wertq weit weg von0und weit weg vonn.
Die Worst Case Laufzeit dieses randomisierten Algorithmus ist quadratisch.
Wir werden zeigen:
Satz
Die erwartete Laufzeit dieses randomisierten Algorithmus istO(n).
EA/WS 2019 Kapitel 1: Suchprobleme 53/56
Hilfsresultat
Fragestellung
Ein Experiment ist mit Wahrscheinlichkeitperfolgreich.
Wie gross ist die erwartete Anzahl an Wiederholungen, bis dass das Experiment einmal erfolgreich ausgeht?
Es seiX die Zufallsvariable, die die Anzahl der Durchf¨uhrungen z¨ahlt Dann gilt Pr[X =k] = (1−p)k−1p
Antwort
E[X] =
∞
X
k=1
k·Pr[X =k] =
∞
X
k=1
k(1−p)k−1p = 1 p Ergo: F¨urp=1/2giltE[X] =2
Hilfsresultat
Fragestellung
Ein Experiment ist mit Wahrscheinlichkeitperfolgreich.
Wie gross ist die erwartete Anzahl an Wiederholungen, bis dass das Experiment einmal erfolgreich ausgeht?
Es seiX die Zufallsvariable, die die Anzahl der Durchf¨uhrungen z¨ahlt Dann gilt Pr[X =k] = (1−p)k−1p
Antwort
E[X] =
∞
X
k=1
k·Pr[X =k] =
∞
X
k=1
k(1−p)k−1p = 1 p Ergo: F¨urp=1/2giltE[X] =2
EA/WS 2019 Kapitel 1: Suchprobleme 54/56
Analyse (1)
Wir sagen, dass der randomisierte Algorithmus in Phasek ist, falls die Anzahl der aktiven Zahlen kleiner gleich (3/4)kn und strikt gr¨osser als(3/4)k+1nist.
Am Anfang ist der Algorithmus in Phase0
Eine Zahl x heisst zentral, wenn mindestens ein Viertel der aktiven Zahlen kleiner als x oder mindestens ein Viertel gr¨osser alsx ist Ist das Split-Element x zentral, dann wird mindestens ein Viertel der aktiven Zahlen weggeworfen
Die H¨alfte aller aktiven Zahlen ist zentral
Die Wahrscheinlichkeit, dass das Split-Element zentral ist, betr¨agt p=1/2
Die erwartete Anzahl von Iterationen in Phase k ist h¨ochstens2
Analyse (1)
Wir sagen, dass der randomisierte Algorithmus in Phasek ist, falls die Anzahl der aktiven Zahlen kleiner gleich (3/4)kn und strikt gr¨osser als(3/4)k+1nist.
Am Anfang ist der Algorithmus in Phase0
Eine Zahl x heisst zentral, wenn mindestens ein Viertel der aktiven Zahlen kleiner als x oder mindestens ein Viertel gr¨osser alsx ist Ist das Split-Elementx zentral, dann wird mindestens ein Viertel der aktiven Zahlen weggeworfen
Die H¨alfte aller aktiven Zahlen ist zentral
Die Wahrscheinlichkeit, dass das Split-Element zentral ist, betr¨agt p=1/2
Die erwartete Anzahl von Iterationen in Phase k ist h¨ochstens2
EA/WS 2019 Kapitel 1: Suchprobleme 55/56
Analyse (1)
Wir sagen, dass der randomisierte Algorithmus in Phasek ist, falls die Anzahl der aktiven Zahlen kleiner gleich (3/4)kn und strikt gr¨osser als(3/4)k+1nist.
Am Anfang ist der Algorithmus in Phase0
Eine Zahl x heisst zentral, wenn mindestens ein Viertel der aktiven Zahlen kleiner als x oder mindestens ein Viertel gr¨osser alsx ist Ist das Split-Elementx zentral, dann wird mindestens ein Viertel der aktiven Zahlen weggeworfen
Die H¨alfte aller aktiven Zahlen ist zentral
Die Wahrscheinlichkeit, dass das Split-Element zentral ist, betr¨agt p=1/2
Die erwartete Anzahl von Iterationen in Phase k ist h¨ochstens2
Analyse (2)
Die Zufallsvariable Xk z¨ahlt die Anzahl der Vergleiche in Phasek In Phasek arbeitet der Algorithmus mit≤(3/4)knElementen In Phasek wird im Erwartungswert h¨ochstens zweimal partitioniert Zusammenfassend: E[Xk]≤2cn(3/4)k
Erwartete Laufzeit = X
k≥0
E[Xk] ≤ X
k≥0
2cn(3/4)k
= 2cnX
k≥0
(3/4)k = 8cn ∈ O(n)
EA/WS 2019 Kapitel 1: Suchprobleme 56/56
Analyse (2)
Die Zufallsvariable Xk z¨ahlt die Anzahl der Vergleiche in Phasek In Phasek arbeitet der Algorithmus mit≤(3/4)knElementen In Phasek wird im Erwartungswert h¨ochstens zweimal partitioniert Zusammenfassend: E[Xk]≤2cn(3/4)k
Erwartete Laufzeit = X
k≥0
E[Xk] ≤ X
k≥0
2cn(3/4)k
= 2cnX
k≥0
(3/4)k = 8cn ∈ O(n)