Geometrische Suche

From Gyaanipedia

Vorlage:Löschantragstext


Vorlage:Belege fehlen Die geometrische Suche ist ein Suchalgorithmus, der in einem sortierten Array die Position eines gesuchten Wertes ermittelt bzw. feststellt, dass der Wert nicht im Array enthalten ist. Die geometrische Suche wird vor allem dann eingesetzt, wenn man davon ausgeht, dass sich der gesuchte Wert eher im vorderen Teil des Arrays befindet. Der Name ergibt sich aus der verwendeten geometrischen Folge.

Beschreibung[edit | edit source]

Die Funktionsweise der geometrischen Suche wird durch folgenden Algorithmus skizziert:

Eingabe: Array <math>a</math>, gesuchtes Element <math>x</math>

Sei <math>n</math> dazu die Länge des Arrays <math>a</math>:

  1. Setze <math>i:=0</math>.
  2. Falls <math>n < 2^i</math>, durchsuche den Bereich von <math>2^{i-1} + 1</math> bis <math>n</math> mit binärer Suche.
  3. Falls <math>x\leq a[2^i]</math>: Durchsuche den Bereich <math>2^{i-1} + 1</math> bis <math>2^i</math> mit binärer Suche.
  4. Falls <math>x > a[2^i]</math>: Setze <math>i:=i+1</math> und fahre mit 2. fort.

Der Suchraum wird also verkleinert, indem nacheinander die Positionen <math>2^0,2^1,2^2,\dots</math> betrachtet werden. Auf dem verkleinerten Suchraum wird die gesuchte Position dann mit binärer Suche ermittelt.

Im Worst Case befindet sich das gesuchte Element an der letzten Arrayposition. Im ersten Teil des Algorithmus (Vergleiche mit <math>2^0,2^1,2^2,\dots</math>) werden dann <math>\log n</math> wesentliche Vergleiche benötigt, genauso wie im zweiten Teil (binäre Suche). Zusammen ergibt sich eine Worst-Case-Rechenzeit von <math>\mathcal{O}(\log n)</math>.