Springe zu einem wichtigen Kapitel
Das ist im realen Leben natürlich nicht so einfach möglich – anders sieht es jedoch aus, wenn Du z. B. Dateien auf Deinem Computer oder Laptop suchst. In solchen Fällen können Suchalgorithmen Deine Rettung sein. Wie die funktionieren und was es für Unterschiede gibt, erfährst Du in dieser Erklärung.
Suchalgorithmen Informatik
Die wichtigste Frage zuerst: Was ist überhaupt ein Suchalgorithmus?
Ein Suchalgorithmus ist ein Verfahren, bei dem Schritt für Schritt Daten innerhalb einer Datensammlung ausfindig gemacht werden.
Suchalgorithmen gehören zu den grundlegenden Methoden in der Informatik – genau wie die Sortieralgorithmen. Bei beiden ist die Laufzeit – also die Schnelligkeit des Algorithmus – ein wichtiger Faktor. Neben der Effizienz unterscheiden sich Suchalgorithmen auch anhand ihres Aufbaus, also der Art und Weise, wie sie implementiert werden können.
Was sich mit Sortieralgorithmen alles sortieren lässt sowie mehr zu den einzelnen Verfahren und Vorgehensweisen findest Du in der gleichnamigen Erklärung auf StudySmarter.
Suchalgorithmen Anwendung
Doch wofür werden Suchalgorithmen genau angewendet? Wie es der Name bereits verrät, werden mithilfe von Suchalgorithmen Daten, Listen oder Baumstrukturen durchsucht. Wann welcher Algorithmus verwendet wird, kannst Du den folgenden Abschnitten entnehmen.
Suchalgorithmen Arten
Es existiert eine Reihe verschiedener Arten von Suchalgorithmen:
Einfache Suchalgorithmen
Heuristische Suchalgorithmen
Weitere Suchverfahren
In den nachfolgenden Abschnitten werden die drei Kategorien genauer beschrieben.
Einfache Suchalgorithmen
Der Hintergrund von einfachen Suchalgorithmen ist, dass sie meist abstrakter implementiert werden können. Außerdem können sie für eine Vielzahl von Problemen eingesetzt werden. Ein Nachteil ist jedoch, dass diese Algorithmen bei der Suche kein gutes Kosten-Nutzen-Verhältnis haben und meistens eine relativ lange Laufzeit besitzen.
Zu den einfachen Suchalgorithmen gehören das Suchen in Listen oder auch die Suche in Bäumen.
Heuristische Suchalgorithmen
Im Gegensatz zu den einfachen Suchalgorithmen besitzen heuristische Verfahren genauere Informationen über die zu durchsuchende Datenmenge wie z. B. über die Verteilung der Daten. Bei den heuristischen Suchalgorithmen kann zusätzlich zwischen informierten und uninformierten Suchalgorithmen unterschieden werden.
Informierte Suchalgorithmen
Die informierte Suche besucht zunächst "vielversprechende" Knoten in einem Baum. Dafür werden entsprechende Zusatzinformationen benötigt, damit der Algorithmus weiß, welche Knoten zuerst durchlaufen werden sollten.
Informierte Suchverfahren gehören zu den sogenannten "heuristischen Suchalgorithmen". Verwendet werden diese Algorithmen vor allem dann, wenn die Komplexität und die Rechenleistung eines Algorithmus verringert werden soll.
Unter einer Heuristik versteht man ein Vorgehen, mit der Lösungsstrategien für ein Problem schneller gefunden werden können.
Uninformierte Suchalgorithmen
Bei der uniformierten Suche werden Knoten in einem Baum einfach der Reihe nach durchlaufen.
Uniformierte Suchverfahren werden umgangssprachlich auch als "blinde Suche" bezeichnet.
Weitere Suchverfahren
Neben den beiden bereits genannten Kategorien gibt es noch weitere Suchverfahren, dazu gehören z. B.:
Optimierende Suche
Suchverfahren für Zeichenketten
Optimierende Suche
Bei der optimierenden Suche werden Werte bestimmten vorher definierten Variablen zugeordnet. Dazu gehört z. B. das Backtracking.
Suchverfahren für Zeichenketten
Ein Suchverfahren für eine Zeichenkette sucht innerhalb einer solchen nach einem bestimmten Schlüssel. Diese Art von Verfahren zählen zu den sogenannten "String-Matching-Algorithmen", dazu zählen z. B.:
- Knuth-Morris-Pratt Algorithmus
- Boyer-Moore Algorithmus
- Karp-Rabin Algorithmus
Suchalgorithmen Beispiele
Weitere Beispiele für Suchalgorithmen findest Du in den nachfolgenden Abschnitten.
Lineare Suche
Zu den einfachen Suchalgorithmen gehört die lineare oder auch sequentielle Suche. Sie wird in der Regel bei ungeordneten Arrays verwendet und eignet sich vor allem bei eher kleineren Datenmengen.
Ein einfaches Beispiel für eine lineare Suche: Durchsuche eine Datenmenge nach dem kleinsten oder größten Element. Dabei musst Du die Daten durchgehen und alle Elemente miteinander vergleichen. Dadurch steigt die benötigte Anzahl an Vergleichen ebenfalls linear an – was die lineare Suche meist nicht besonders schnell macht.
Binäre Suche
Eine effektivere Variante ist die binäre Suche. Die Voraussetzung bei einer binären Suche ist allerdings, dass die Datenmenge vorher sortiert wurde. Bei der binären Suche wird nach dem "Teile-und-Herrsche-Prinzip" vorgegangen.
Die Vorgehensweise bei der binären Suche ist folgende:
Mittleres Element suchen und mit gesuchtem Element vergleichen
Ist es kleiner, suche in der rechten Hälfte weiter
Ist es größer, suche in der linken Hälfte
"Neue" Datenmenge erneut halbieren und das gesuchte Element mit dem mittleren Element vergleichen
Das ganze so lange weiter durchführen, bis das gesuchte Element gefunden wurde
Interpolationssuche
Die Interpolationssuche ist eine Modifizierung der binären Suche. Der Unterschied liegt darin, dass die Interpolationssuche Daten nicht in der Mitte unterteilt, sondern die Größe der Teilmengen dynamisch gewählt werden können.
Das hat den Vorteil, dass Du die Trennung anhand des gesuchten Wertes wählen kannst. Suchst Du z. B. einen niedrigen Wert, kannst Du die Datenmenge in einem entsprechend niedrigen Bereich trennen und musst im Zweifelsfalls weniger Daten nach Deinem gesuchten Wert durchsuchen.
Binäre (Such-)Bäume
Eine weitere Möglichkeit um zu Suchen sind binäre und nicht binäre Suchbäume. Dabei ist das Prinzip ein ähnliches: Bei Suchen in Bäumen werden die einzelnen Knoten nacheinander durchgegangen. Die Vorgehensweise ist folgende:
- Entnehme einen Knoten aus einem Suchbaum
- Untersuche seine Kindknoten
In welcher Reihenfolge Du einen Baum durchsuchst, hängt vor verwendeten Verfahren ab. Dabei kannst Du z. B. die Breitensuche und die Tiefensuche unterscheiden. Auch Suchbäume enthalten bereits sortierte Datensätze, die je nach Art des Baumes aufsteigend oder absteigend sortiert sein können.
Sowohl die Breitensuche (breadth-first search) als auch die Tiefensuche (depth-first search) sind Methoden, um Knoten in einem Graphen zu finden. Bei der Breitensuche werden zunächst alle Nachbarn bearbeitet, die am nächsten zum aktuellen Knoten sind. Die Tiefensuche geht stattdessen zuerst alle Kindknoten eines Knotens durch. Beide Verfahren gehören zu den uninformierten Suchalgorithmen.
Mehr Informationen erhältst Du in den Erklärungen zu "Suchbäume" und dem "Binärbaum" auf StudySmarter.
Suche in Graphen
Auch Suchen in Graphen können durch verschiedene Suchalgorithmen gelöst werden. Algorithmen, die Du dafür verwenden kannst, sind:
Zu allen drei Algorithmen findest Du jeweils eine eigenständige Erklärung auf StudySmarter.
Hash-Suche/Hash-basierte Suche
Außerdem gibt es noch die Möglichkeit, mittels Hashverfahren zu suchen. Die Idee dahinter ist mithilfe eines Schlüssels, einer Hashfunktion und einer dazugehörigen Hashadresse eine sogenannte Hashtabelle zu erzeugen. Die Hashadresse gibt dabei genau an, an welcher Stelle, bzw. in welchem Feld sich der Datensatz befindet. In einer solchen Hashtabelle ist es nun möglich, Datensätze zu suchen.
Mehr zu diesen Prinzipien kannst Du in den Erklärungen zum Datenmapping und zum Hashing auf StudySmarter nachlesen.
Suchalgorithmen Übersicht
Nachfolgend findest Du eine Übersicht verschiedener Suchverfahren und ihrer wichtigsten Vor- und Nachteile:
Suchalgorithmen | Vorteile | Nachteile |
Lineare Suche | Einfach zu implementieren. | Dauert bei großen Datenmengen sehr lange. |
Kann auch in nicht sortierten Datenmengen verwendet werden. | ||
Sortierte Daten bleiben sortiert, auch wenn ein neues Element eingefügt wird. | ||
Binäre Suche | Eignet sich auch bei etwas größeren Datenmengen. | Die binäre Suche funktioniert nur in sortierten Datenmengen. Sollen neue Elemente eingefügt werden, müssen die Daten zunächst neu sortiert werden. |
Eignet sich besonders gut für bereits sortierte, kleine Datensätze. | ||
Interpolationssuche | Ist als Modifizierung der binären Suche schneller als diese, da durch die dynamische Wahl der Trennung meist weniger Werte durchsucht werden müssen. | Funktioniert ebenfalls nur in sortierten Datenmengen. |
Suchalgorithmen Vergleich
Die Kriterien zum Vergleich von Suchalgorithmen sind vergleichbar mit denen für Sortieralgorithmen. Dazu gehören z. B.:
Laufzeit / Komplexität
Zusätzlicher Speicherbedarf / Platzkomplexität
Stabilität
Intern vs. extern / in-place vs. out-of-place
Rekursiv vs. iterativ
Ein genauer Vergleich muss dabei immer spezifisch für das jeweilige Suchverfahren betrachtet werden. Mehr Informationen zu den einzelnen Kriterien findest Du in der Erklärung zu den Sortieralgorithmen auf StudySmarter.
Suchalgorithmen Laufzeit
Die Laufzeit von Suchalgorithmen wird in den Best-Case, Average-Case und den Worst-Case unterschieden. Angegeben wird die Laufzeit mithilfe der sogenannten O-Notation.
Die O-Notation ist eine Methode in der Informatik, um den Aufwand von Algorithmen bzw. die Komplexität von Funktionen in Abhängigkeit ihrer Eingabegröße einzuordnen. Sie macht dadurch die Effizienz von Algorithmen vergleichbar.
Weitere Informationen zur O-Notation findest Du in der gleichnamigen Erklärung auf StudySmarter.
In der folgenden Übersicht sind die Laufzeiten von verschiedenen Suchalgorithmen auf einem Blick zusammengefasst. Steht nichts explizit dabei, ist der Average-Case angegeben.
Suchalgorithmus | Laufzeit |
Lineare Suche | O(n) |
Binäre Suche | O(log n) |
Interpolationssuche | Best-Case: O(log(log(n)))Worst-Case: O(n) |
Breitensuche | Bei Verwendung einer Adjazenzliste: O(|V| + |E|)Bei Verwendung einer Adjazenzmatrix: O(|V2|) oder O(n2) |
Tiefensuche | O(|V| + |E|) |
Dijkstra Algorithmus | Bei Verwendung in Arrays: O(n2 + m)Bei Verwendung in einer PriorityQueue: O(n · log n + m · n) |
Boyer-Moore Algorithmus | O(n/m) |
Knuth-Morris-Pratt Algorithmus | O(n + m) |
Suchalgorithmen – Das Wichtigste
- Suchalgorithmen Informatik: Ein Suchalgorithmus ist ein Verfahren, bei dem Schritt-für-Schritt Daten innerhalb einer Datensammlung ausfindig gemacht werden.
- Suchalgorithmen Anwendung: Suchalgorithmen können verwendet werden, um Daten, Listen oder Baumstrukturen zu durchsuchen.
- Die Suchalgorithmen können in verschiedene Arten unterschieden werden:
- Einfache Suchalgorithmen
- Heuristische Suchalgorithmen
- Weitere Suchalgorithmen
- Beispiele für Suchalgorithmen sind: lineare Suche, binäre Suche, Interpolationssuche, Suche in Bäumen, Suchen in Graphen, Hash-Suche etc.
- Suchalgorithmen Vergleich: Verglichen werden können Suchalgorithmen durch Kriterien wie die Laufzeit, den Speicherbedarf oder die Stabilität.
Nachweise
- betriebswirtschaft-lernen.net: Suchalgorithmus. (29.11.2022)
- javabeginners.de: Interpolationssuche. (29.11.2022)
- alexanderthamm.com: Suchalgorithmus. (29.11.2022)
- ionos.de: Die Hashtabelle – der schnelle Datenbankzugriff auf Hashwerte. (29.11.2022)
Lerne mit 5 Suchalgorithmen Karteikarten in der kostenlosen StudySmarter App
Wir haben 14,000 Karteikarten über dynamische Landschaften.
Du hast bereits ein Konto? Anmelden
Häufig gestellte Fragen zum Thema Suchalgorithmen
Was ist ein Suchalgorithmus?
Ein Suchalgorithmus ist ein Verfahren, bei dem Schritt-für-Schritt Daten innerhalb einer Datensammlung ausfindig gemacht werden.
Welche Suchalgorithmen gibt es?
Suchalgorithmen können in einfache und heuristische Verfahren unterschieden werden. Heuristische Algorithmen berücksichtigen dabei genauere Informationen über die zu durchsuchende Datenmenge, wie die Datenverteilung.
Wie funktionieren Suchalgorithmen?
Suchalgorithmen sind dafür da, um aus einer Datenmenge bestimmte Daten zu ermitteln. Wie genau ein Suchalgorithmus funktioniert, hängt dabei vom Verfahren ab.
Über StudySmarter
StudySmarter ist ein weltweit anerkanntes Bildungstechnologie-Unternehmen, das eine ganzheitliche Lernplattform für Schüler und Studenten aller Altersstufen und Bildungsniveaus bietet. Unsere Plattform unterstützt das Lernen in einer breiten Palette von Fächern, einschließlich MINT, Sozialwissenschaften und Sprachen, und hilft den Schülern auch, weltweit verschiedene Tests und Prüfungen wie GCSE, A Level, SAT, ACT, Abitur und mehr erfolgreich zu meistern. Wir bieten eine umfangreiche Bibliothek von Lernmaterialien, einschließlich interaktiver Karteikarten, umfassender Lehrbuchlösungen und detaillierter Erklärungen. Die fortschrittliche Technologie und Werkzeuge, die wir zur Verfügung stellen, helfen Schülern, ihre eigenen Lernmaterialien zu erstellen. Die Inhalte von StudySmarter sind nicht nur von Experten geprüft, sondern werden auch regelmäßig aktualisiert, um Genauigkeit und Relevanz zu gewährleisten.
Erfahre mehr