• Keine Ergebnisse gefunden

Kapitel 1: Suchprobleme (Effiziente Algorithmen, WS 2019) Gerhard Woeginger

N/A
N/A
Protected

Academic year: 2022

Aktie "Kapitel 1: Suchprobleme (Effiziente Algorithmen, WS 2019) Gerhard Woeginger"

Copied!
103
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Kapitel 1: Suchprobleme

(Effiziente Algorithmen, WS 2019) Gerhard Woeginger

WS 2019, RWTH

(2)

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

(3)

Zum Aufw¨ armen:

Suche nach Bitmustern

(4)

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

(5)

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.

(6)

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

(7)

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?

(8)

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

(9)

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.

(10)

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

(11)

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.

(12)

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

(13)

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.

(14)

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

(15)

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.

(16)

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

(17)

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 ∈Σ: 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.

(18)

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 ∈Σ: 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

(19)

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 ∈Σ: 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.

(20)

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

(21)

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?)

(22)

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

(23)

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.

(24)

Graph-Zusammenhang

EA/WS 2019 Kapitel 1: Suchprobleme 12/56

(25)

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?

(26)

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

(27)

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?

(28)

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

(29)

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.

(30)

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

(31)

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.

(32)

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

(33)

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.

(34)

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

(35)

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?

(36)

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

(37)

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?

(38)

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

(39)

Zum Aufw¨ armen:

Gr¨ osste Zahl

(40)

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

(41)

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?

(42)

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

(43)

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?

(44)

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

(45)

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

(46)

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

(47)

Maximum und Minimum

(48)

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

(49)

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.

(50)

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

(51)

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

(52)

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

(53)

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

(54)

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

(55)

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.

(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.

EA/WS 2019 Kapitel 1: Suchprobleme 27/56

(57)

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.

(58)

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

(59)

Zweitgr¨ osste Zahl

(60)

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

(61)

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.

(62)

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

(63)

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)

(64)

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

(65)

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

(66)

k -kleinste Zahl und Median

EA/WS 2019 Kapitel 1: Suchprobleme 32/56

(67)

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

(68)

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

(69)

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

(70)

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

(71)

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

(72)

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

(73)

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

(74)

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

(75)

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.

(76)

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

(77)

k -kleinste Zahl (und Median)

in linearer Zeit

(78)

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

(79)

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].

(80)

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

(81)

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].

(82)

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

(83)

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].

(84)

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

(85)

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)

(86)

k -kleinste Zahl in linearer Zeit: Analyse (2)

EA/WS 2019 Kapitel 1: Suchprobleme 45/56

(87)

k -kleinste Zahl in linearer Zeit: Analyse (2)

(88)

k -kleinste Zahl in linearer Zeit: Analyse (2)

EA/WS 2019 Kapitel 1: Suchprobleme 47/56

(89)

k -kleinste Zahl in linearer Zeit: Analyse (2)

(90)

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

(91)

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).

(92)

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

(93)

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.

(94)

k -kleinste Zahl (und Median) randomisiert

EA/WS 2019 Kapitel 1: Suchprobleme 52/56

(95)

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).

(96)

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

(97)

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

(98)

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

(99)

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

(100)

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

(101)

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

(102)

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

(103)

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)

Referenzen

ÄHNLICHE DOKUMENTE

Wie sieht ein guter Algorithmus fuer dieses Problem aus, der auch im Worst Case nur wenige Bitabfragen macht?... Ein einzelnes Bit

Shmuel Winograd hat 1971 gezeigt, dass man zur Multiplikation von 2 × 2 Matrizen mindestens sieben Multiplikationen braucht (auch wenn man noch so viele Additionen und Subtraktionen

Shmuel Winograd hat 1971 gezeigt, dass man zur Multiplikation von 2 × 2 Matrizen mindestens sieben Multiplikationen braucht (auch wenn man noch so viele Additionen und Subtraktionen

, 1i endet mit 1, und das letzte Elemente 6= 1 ist ungleich ±1: Dann ist n keine Primzahl (laut Quadratwurzelsatz), und Miller-Rabin erkennt das korrekt... , 1i besteht nur aus

Eine ungerade, zusammengesetzte Zahl n ≥ 3 ist eine Carmichael Zahl, falls alle Basen a ∈ Z ∗ n Betr¨ uger f¨ ur n sind. Carmichael Zahlen sind t¨ odlich f¨ ur den

In einem linearen Matroid muß die Matrix A nicht ¨ uber den reellen Zahlen R definiert sein; jeder beliebige K¨ orper F ist erlaubt. Ein derartiges Matroid heisst dann repr¨

[r]

In der dritten Spalte haben wir (bis auf Vorzeichen) die Flächeninhalte der Fibonacci- Rechtecke gemäß Abbildung 1..