www.wikidata.de-de.nina.az
Die Interpolationssuche auch Intervallsuche genannt ist ein von der binaren Suche abgeleitetes Suchverfahren das auf Listen und Feldern zum Einsatz kommt Wahrend der Algorithmus der binaren Suche stets das mittlere Element des Suchraums uberpruft versucht der Algorithmus der Interpolationssuche im Suchraum einen gunstigeren Teilungspunkt als die Mitte zu erraten Die Arbeitsweise ist mit der eines Menschen vergleichbar der ein Wort in einem Worterbuch sucht Die Suche nach Zylinder wird ublicherweise am Ende des Worterbuches begonnen wahrend die Suche nach Aal im vorderen Bereich begonnen werden durfte Inhaltsverzeichnis 1 Der Algorithmus 2 Beispiel 3 Komplexitat 4 Beispielimplementierungen 4 1 Delphi 5 Siehe auch 6 Literatur 7 EinzelnachweiseDer Algorithmus BearbeitenDie Interpolationssuche geht von sortierten Daten aus Sie eignet sich am besten fur gleichverteilte Daten Des Weiteren wird ein wahlfreier Zugriff auf die Elemente vorausgesetzt Die Daten werden bei der Interpolationssuche in Abhangigkeit vom Schlussel geteilt Hat dieser einen grossen Wert befindet sich das gesuchte Element aufgrund der Vorsortierung im hinteren Teil der Daten Dementsprechend wird auch im hinteren Teil der Daten die Teilung vorgenommen Bei einem kleinen Schlussel wird das Feld entsprechend im vorderen Teil gespalten Fur alle Daten lasst sich die Teilungsposition berechnen indem zunachst die Anzahl aller Elemente durch die Anzahl verschiedener Elemente dividiert wird und anschliessend mit dem gesuchten Schlussel multipliziert wird Position Anzahl der Elemente Anzahl verschiedener Elemente gesuchter Wert displaystyle text Position frac text Anzahl der Elemente text Anzahl verschiedener Elemente cdot text gesuchter Wert nbsp Die Position des gesuchten Elementes wird somit interpoliert indem die Gleichverteilung der Daten fur eine Abbildung des Schlussels auf die Liste bzw das Feld genutzt wird Nun kann uberpruft werden ob der Schlussel des teilenden Elementes einen grosseren oder kleineren Wert als der Schlussel des gesuchten Elementes hat Bei identischen Schlusseln ist die Suche bereits beendet Wenn das teilende Element einen kleineren Wert hat wird der rechte Teilbereich weiteruntersucht andernfalls der linke Teilbereich Die Zahl der Elemente sowie die Zahl der verschiedenen Schlussel wird fur den neuen Bereich ermittelt und anschliessend eine neue Teilungsposition interpoliert Beispiel BearbeitenGegeben ist ein Array A displaystyle A nbsp 2 4 7 9 12 21 26 31 37In diesem Array soll der Wert w 7 displaystyle w 7 nbsp gesucht werden Anfangs werden die linke und rechte Grenze auf die Grenzen des Arrays gesetzt also l 0 displaystyle l 0 nbsp und r 8 displaystyle r 8 nbsp Dann wird die Position p displaystyle p nbsp des Teilungselements mit Hilfe der folgenden Formel berechnet p l w A l A r A l r l displaystyle p l frac w A l A r A l cdot r l nbsp In diesem Fall ergibt das rot Suchbereich blau x fett gesucht p 0 7 2 37 2 8 0 1 1 7 1 displaystyle p 0 frac 7 2 37 2 cdot 8 0 1 frac 1 7 to 1 nbsp 2 4 7 9 12 21 26 31 37Daraufhin wird geschaut ob das gefundene Element das gesuchte ist Ist dies der Fall wird abgebrochen andernfalls wird der Suchbereich eingeschrankt Wenn das p displaystyle p nbsp zu klein gewahlt ist man also rechts suchen muss wird die linke Grenze auf p 1 displaystyle p 1 nbsp gesetzt und darin gesucht Ansonsten ist das x zu gross und man muss links suchen die rechte Grenze wird daher auf p 1 displaystyle p 1 nbsp gesetzt und jetzt im linken Bereich gesucht Da der Wert A 1 4 displaystyle A 1 4 nbsp kleiner als das gesuchte Element ist wird die linke Grenze auf l p 1 2 displaystyle l p 1 2 nbsp gesetzt Die rechte Grenze bleibt und es ergibt sich folgende Formel p 2 7 7 37 7 8 2 2 2 displaystyle p 2 frac 7 7 37 7 cdot 8 2 2 to 2 nbsp Das Array sieht nun so aus 2 4 7 9 12 21 26 31 37Da nun A x A 2 7 w displaystyle A x A 2 7 w nbsp ist also das Element gefunden wurde wird die Suche beendet Sie hat 2 Schritte benotigt Komplexitat BearbeitenEine Untersuchung der Interpolationssuche erweist sich als sehr komplex als Laufzeit kann jedoch O log log n displaystyle mathcal O log log n nbsp n ist die Anzahl der Elemente im durchschnittlichen Fall angenommen werden Im ungunstigsten Fall die interpolierte erwartete Position ist immer am Rand betragt die Laufzeit allerdings O n displaystyle mathcal O n nbsp 1 Diese Beeintrachtigung lost die Quadratische Binarsuche Beispielimplementierungen BearbeitenDelphi Bearbeiten type TIntArray array of integer function interpolierteSuche schluessel integer var daten TIntArray integer var links rechts versch aPos integer begin links 0 rechts high daten versch 0 aPos 0 while schluessel gt daten links and schluessel lt daten rechts do begin versch daten rechts daten links aPos links round rechts links schluessel daten links versch if schluessel gt daten aPos then links aPos 1 else if schluessel lt daten aPos then rechts aPos 1 else begin result aPos exit end end result 1 end Siehe auch BearbeitenIntervallschachtelung Komplexitatstheorie Landau SymboleLiteratur BearbeitenRobert Sedgewick Algorithmen in C Addison Wesley Bonn 1992 ISBN 3 89319 376 6 S 239 241 Einzelnachweise Bearbeiten Prof Dr Thomas Seidl Dr Marcus Gossler Algorithmen und Datenstrukturen Kapitel 4 Suchen Hrsg Ludwig Maximilians Universitat Munchen Lehrstuhl fur Datenbanksysteme und Datamining lmu de PDF Abgerufen von https de wikipedia org w index php title Interpolationssuche amp oldid 239217918