Suchalgorithmus

Visuelle Darstellung von a Hash-tabelle, a Datenstruktur Dies ermöglicht das schnelle Abrufen von Informationen.

Im Informatik, a Suchalgorithmus ist ein Algorithmus (wenn mehr als einer, Algorithmen[1]) entwickelt, um a zu lösen Suchproblem. Suchalgorithmen arbeiten, um Informationen abzurufen, die in einem Besonderen gespeichert sind Datenstruktur, oder berechnet in der Suchraum einer Problemdomäne mit entweder diskrete oder kontinuierliche Werte.

Während die oben beschriebenen Suchprobleme und Web-Suche sind beide Probleme beim Abrufen von Informationen, sie werden im Allgemeinen als separate Unterfelder untersucht und unterschiedlich gelöst und unterschiedlich bewertet. Die Probleme mit der Websuche konzentrieren sich im Allgemeinen auf die Filterung und Suche nach Dokumenten für menschliche Fragen. Klassische Suchalgorithmen werden bewertet, wie schnell sie eine Lösung finden und ob die gefundene Lösung optimal ist. Obwohl Informationsabrufalgorithmen schnell sein müssen, die Qualität von Rangfolgeund ob gute Ergebnisse ausgelassen wurden und schlechte Ergebnisse enthalten sind, ist wichtiger.

Der entsprechende Suchalgorithmus hängt häufig von der gesuchten Datenstruktur ab und kann auch Vorkenntnisse über die Daten enthalten. Suchalgorithmen können durch speziell konstruierte Datenbankstrukturen schneller oder effizienter gemacht werden, wie z. Bäume suchen, Hash -Karten, und Datenbankindizes.[2][Vollständiges Zitat benötigt][3]

Suchalgorithmen können basierend auf ihrem Mechanismus der Suche nach drei Arten von Algorithmen klassifiziert werden: linear, binär und Hashing. Lineare Suche Algorithmen prüfen jeden Datensatz für denjenigen, der linear mit einem Zielschlüssel zugeordnet ist.[4] Binäre oder halbe Interval-Suchanfragen Zielen Sie wiederholt auf die Mitte der Suchstruktur und teilen Sie den Suchraum in zwei Hälften auf. Vergleichssuchealgorithmen verbessern die lineare Suche, indem sie auf der Grundlage von Vergleiche der Tasten nacheinander eliminieren, bis der Zieldatensatz gefunden wurde, und können auf Datenstrukturen mit einer definierten Reihenfolge angewendet werden.[5] Digitale Suchalgorithmen funktionieren basierend auf den Eigenschaften von Ziffern in Datenstrukturen unter Verwendung numerischer Schlüssel.[6] Endlich, Hashing Karten Sie Schlüssel direkt auf Datensätze basierend auf einem Hash-Funktion.[7]

Algorithmen werden häufig von ihren bewertet Rechenkomplexität, oder maximale theoretische Laufzeit. Binäre Suchfunktionen haben beispielsweise eine maximale Komplexität von O(Protokoll n)oder logarithmische Zeit. In einfachen Worten ist die maximale Anzahl von Vorgängen, die zum Ermitteln des Suchziels erforderlich sind, eine logarithmische Funktion der Größe des Suchraums.

Anwendungen von Suchalgorithmen

Zu den spezifischen Anwendungen von Suchalgorithmen gehören:

Klassen

Für virtuelle Suchräume

Algorithmen zum Durchsuchen virtueller Räume werden in der verwendet Einschränkungszufriedenheitsproblem, wo das Ziel ist, eine Reihe von Wertzuständen für bestimmte Variablen zu finden, die bestimmte mathematische Erfüllung erfüllen Gleichungen und Ungleichungen / Gleichheiten. Sie werden auch verwendet, wenn das Ziel darin besteht, eine variable Zuordnung zu finden, die wird maximieren oder minimieren eine bestimmte Funktion dieser Variablen. Algorithmen für diese Probleme umfassen die Basis Brute-Force-Suche (auch als "naive" oder "nicht informierte" Suche bezeichnet) und eine Vielzahl von Heuristik Das versucht, teilweise Wissen über die Struktur dieses Raums wie linearer Entspannung, Einschränkungserzeugung und auszunutzen Einschränkungsausbreitung.

Eine wichtige Unterklasse sind die lokale Suche Methoden, die die Elemente des Suchraums als die betrachten Eckpunkte einer Grafik mit Kanten, die durch eine Reihe von Heuristiken definiert sind, die für den Fall anwendbar sind; und scannen Sie den Speicherplatz, indem Sie sich entlang der Kanten vom Gegenstand zu Element bewegen, zum Beispiel gemäß dem steilster Abstieg oder Best-First Kriterium oder in a Stochastische Suche. Diese Kategorie enthält eine große Vielfalt von General metaheuristisch Methoden wie z. simuliertes Glühen, Tabu -Suche, A-Teams und Genetische ProgrammierungDas kombinieren willkürliche Heuristiken auf bestimmte Weise. Das Gegenteil der lokalen Suche wären globale Suchmethoden. Diese Methode ist anwendbar, wenn der Suchraum nicht begrenzt ist und allen Aspekten des angegebenen Netzwerks dem Entität zur Verfügung steht, die den Suchalgorithmus ausführen.[8]

Diese Klasse enthält auch verschiedene verschiedene Baumsuchalgorithmen, diese betrachten die Elemente als Eckpunkt von a Baumund durchqueren diesen Baum in einer besonderen Reihenfolge. Beispiele für letztere sind die erschöpfenden Methoden wie z. Tiefe-First-Suche und Breite-First-Suchesowie verschiedene heuristische Basis Suchbaumanschnitte Methoden wie Backtracking und Zweig und gebunden. Im Gegensatz zu allgemeinen Metaheuristiken, die bestenfalls nur in einem probabilistischen Sinne funktionieren, finden viele dieser Baumsuchmethoden garantiert die genaue oder optimale Lösung, wenn er genügend Zeit verabreicht. Das nennt man "Vollständigkeit".

Eine andere wichtige Unterklasse besteht aus Algorithmen zur Erforschung der Spielbaum von mehreren Spielern, wie z. Schach oder Backgammon, deren Knoten aus allen möglichen Spielsituationen bestehen, die sich aus der aktuellen Situation ergeben könnten. Das Ziel dieser Probleme ist es, den Umzug zu finden, der die beste Chance auf einen Sieg bietet, unter Berücksichtigung aller möglichen Bewegungen der Gegner (en) zu berücksichtigen. Ähnliche Probleme treten auf, wenn Menschen oder Maschinen aufeinanderfolgende Entscheidungen treffen müssen, deren Ergebnisse nicht vollständig unter der Kontrolle stehen, wie in Roboter Anleitung oder in Marketing, finanziell, oder Militär- Strategieplanung. Diese Art von Problem - Kombinatorische Suche - wurde im Kontext von ausführlich untersucht künstliche Intelligenz. Beispiele für Algorithmen für diese Klasse sind die Minimax -Algorithmus, Alpha -Beta -Beschneidung, und die A* Algorithmus und seine Varianten.

Für Unterstrukturen einer bestimmten Struktur

Der Name "Kombinatorische Suche" wird im Allgemeinen für Algorithmen verwendet, die nach einer bestimmten Unterstruktur eines gegebenen Diskrete Strukturwie eine Grafik, a Saite, eine endliche Gruppe, usw. Der Begriff Kombinatorische Optimierung wird normalerweise verwendet, wenn das Ziel darin besteht, eine Substruktur mit einem maximalen (oder minimalen) Wert eines Parameters zu finden. (Da die Unterstruktur normalerweise im Computer durch eine Reihe von Ganzzahlvariablen mit Einschränkungen dargestellt wird, können diese Probleme als besondere Fälle von Einschränkungszufriedenheit oder diskrete Optimierung angesehen werden. Sie werden jedoch normalerweise in einer abstrakteren Einstellung formuliert und gelöst, wo die Die interne Darstellung wird nicht ausdrücklich erwähnt.)

Eine wichtige und ausführlich untersuchte Unterklasse sind die Graphalgorithmen, im Speziellen Graph Traversal Algorithmen zum Auffinden spezifischer Substrukturen in einem bestimmten Diagramm-wie z. Subgraphen, Wege, Schaltungen und so weiter. Beispiele beinhalten Dijkstra -Algorithmus, Kruskals Algorithmus, das Nächster Nachbaralgorithmus, und Prims Algorithmus.

Eine weitere wichtige Unterklasse dieser Kategorie sind die String -Suche Algorithmen, diese Suche nach Mustern innerhalb von Saiten. Zwei berühmte Beispiele sind die Boyer -Moore und Knuth -Morris -Pratt -Algorithmenund mehrere Algorithmen basierend auf der Suffixbaum Datenstruktur.

Suche nach dem Maximum einer Funktion

Im Jahr 1953 Amerikaner Statistiker Jack Kiefer entwickelt Fibonacci -Suche Dies kann verwendet werden, um das Maximum einer unimodalen Funktion zu finden, und hat viele andere Anwendungen in der Informatik.

Für Quantencomputer

Es gibt auch Suchmethoden für Quantencomputer, wie Grovers Algorithmus, die theoretisch schneller sind als lineare oder brutaler Suche, auch ohne die Hilfe von Datenstrukturen oder Heuristiken. Während die Ideen und Anwendungen hinter Quantencomputern immer noch vollständig theoretisch sind, wurden Studien mit Algorithmen wie Grovers durchgeführt, die die hypothetischen physikalischen Versionen von Quantencomputersystemen genau replizieren.[9]

Suchmaschinenoptimierung

Suchalgorithmen, die in einer Suchmaschine wie Google verwendet werden, bestellen die entsprechenden Suchergebnisse auf der Grundlage einer Vielzahl wichtiger Faktoren.[10] Suchmaschinenoptimierung (SEO) ist der Prozess, bei dem ein bestimmtes Suchergebnis in Verbindung mit dem Suchalgorithmus funktioniert, um mehr Traktion, Aufmerksamkeit und Klicks auf ihre Website zu erlangen. Dies kann so weit gehen, den Suchmaschinenalgorithmus anzupassen, um ein bestimmtes Suchergebnis stärker zu bevorzugen, aber die Strategie, die sich um SEO dreht, ist in der Geschäftswelt unglaublich wichtig und relevant geworden.[10]

Siehe auch

Kategorien:

  • Kategorie: Suchalgorithmen

Verweise

Zitate

  1. ^ Davies, Dave (25. Mai 2020). "Wie Suchmaschinenalgorithmen funktionieren: Alles, was Sie wissen müssen". Suchmaschinenjournal. Abgerufen 27. März 2021.{{}}: CS1 Wartung: URL-Status (Link)
  2. ^ Beam & Fich 2002, p. 39.
  3. ^ Knuth 1998§6.5 ("Abrufen auf Sekundärschlüssel").
  4. ^ Knuth 1998§6.1 ("sequentielle Suche").
  5. ^ Knuth 1998§6.2 ("Suche nach Tastenvergleich").
  6. ^ Knuth 1998§6.3 (digitale Suche).
  7. ^ Knuth 1998, §6.4, (Hashing).
  8. ^ Hunter, A.H.; Penpfenger, Nicholas (4. Juli 2013). "Lokale versus globale Suche in Kanalgraphen". Netzwerke: Eine internationale Reise. Arxiv:1004.2526.
  9. ^ López, G V; Gorin, t; Lara, L (26. Februar 2008). "Simulation des Quantensuchalgorithmus von Grover in einem Quantencomputer mit Ising-Nuklear-Spin-Ketten mit Erst- und zweitneusten-neuesten Kupplungen". Journal of Physics B: Atomic, Molekular und optische Physik. 41 (5): 055504. Arxiv:0710.3196. Bibcode:2008JPHB ... 41E5504L. doi:10.1088/0953-4075/41/5/055504. S2CID 18796310.
  10. ^ a b Baye, Michael; De Los Santos, Barbur; Walenbeest, Matthijs (2016). "Suchmaschinenoptimierung: Was treibt den Bio -Verkehr zu Einzelhandelsstandorten an?" Journal of Economics & Management Strategie. 25: 6–31. doi:10.1111/jems.12141. S2CID 156960693.

Literaturverzeichnis

Bücher

Artikel

Externe Links