Grundidee

Stell dir vor, Roger Federer kommt zu einer ETH-Vorlesung.
Alle erkennen ihn – aber er kennt niemanden im Saal.
→ Roger ist der „Star“.

Definition:
In einer Gruppe von Personen ist eine Person ein Star, wenn:

  • Alle anderen (für ) kennen .

  • Der Star kennt niemanden der anderen.


Ziel der Star-Suche

Wir wollen herausfinden, ob es in einer Gruppe einen Star gibt – und falls ja, wer das ist.
Wir dürfen nur Fragen der Form stellen:

„Kennt Person A die Person B?“


Naiver Ansatz

Idee:

Wir fragen alles ab.

Für jede Person prüfen wir, ob sie jede andere kennt.

Das sind insgesamt Fragen.

Beispiel: Bei 4 Personen = 12 Fragen.

So wissen wir am Ende genau, wer wen kennt – aber das ist sehr ineffizient.


Rekursiver Ansatz

Bildliche Vorstellung:

Wir lassen die Personen nacheinander aus dem Raum gehen und behalten nur mögliche Stars zurück.

Vorgehen:

  1. Finde den Star unter den ersten Personen.
    (Also wir lassen eine Person raus und suchen dort den Star.)

  2. Prüfe, ob diese gefundene Person auch in der ganzen Gruppe (mit der letzten Person ) ein Star ist:

    • Kennt der Star die neue Person? (→ dürfte er nicht)

    • Kennt die neue Person den Star? (→ muss sie)

  3. Falls der Kandidat kein Star ist, teste die neue Person .
    Dazu fragen wir:

    • Kennt (alle anderen) ?

    • Kennt (die anderen) ?

Wenn alle kennen und niemanden kennt, ist der Star.


Best Case

Wenn der Star immer sofort gefunden wird (also keine extra Tests nötig sind):

Es werden 2(n – 1) Fragen gestellt.

Beispiel:
Bei 5 Personen = Fragen
(statt 20 beim naiven Ansatz)


Worst Case

Wenn es ganz schlecht läuft – also jedes Mal die falsche Person aus dem Raum geht, und der echte Star erst am Ende erkannt wird –
dann brauchen wir wieder genauso viele Fragen wie beim naiven Ansatz:

Fragen


Verbesserter Algorithmus

Der Trick: Bevor wir jemanden aus dem Raum „werfen“, prüfen wir kurz, ob diese Person überhaupt ein Star sein kann.

Neuer Schritt:

Bevor wir rekursiv weitermachen:

Wenn die zweitletzte Person die letzte kennt,
dann tauschen wir sie – und wissen sicher: ist kein Star.

Warum?
Weil ein Star niemanden kennen darf.

So sparen wir unnötige Tests in späteren Schritten.


Ergebnis

Mit dieser Verbesserung brauchen wir im Worst Case nur noch:

3n – 4 Fragen

Das ist deutlich besser als .


Zusammenfassung

AlgorithmusIdeeMax. Fragen
NaivAlle fragen alles
RekursivSuche schrittweise mit Ausschlussbis
VerbessertSchließe Nicht-Stars vorher aus3n – 4