Suchalgorithmus

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:
- Probleme in Kombinatorische Optimierung, wie zum Beispiel:
- Das Fahrzeugroutingproblem, eine Form von kürzestes Pfadproblem
- Das Rucksackproblem: Bestimmen Sie bei einem Satz von Elementen mit jeweils einem Gewicht und einem Wert die Anzahl jedes Elements, das in eine Sammlung einbezogen werden soll, damit das Gesamtgewicht geringer oder gleich einer bestimmten Grenze ist und der Gesamtwert so groß wie möglich ist.
- Das Schwesterplanungsproblem
- Probleme in Einschränkung Zufriedenheit, wie zum Beispiel:
- Das MAP -Färbungsproblem
- Ausfüllen von a Sudoku oder Kreuzworträtsel
- Im Spieltheorie und speziell Kombinatorische Spieltheoriedie beste Bewegung, um als nächstes zu machen (wie mit dem Minimal Maximal Algorithmus)
- Finden einer Kombination oder eines Passworts aus den gesamten Möglichkeiten von Möglichkeiten
- Factoring eine Ganzzahl (ein wichtiges Problem in Kryptographie)
- Optimierung eines industriellen Prozesses wie a chemische Reaktion, durch Ändern der Parameter des Prozesses (wie Temperatur, Druck und pH)
- Einen Rekord von a abrufen Datenbank
- Finden des maximalen oder minimalen Wertes in a aufführen oder Array
- Überprüfen Sie, ob ein gegebener Wert in einer Reihe von Werten vorhanden ist
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
- Rückwirkende Induktion
- Inhaltsadressible Speicher-Spezielle Art des Computerspeichers, der in bestimmten Suchanwendungen mit sehr hoher Geschwindigkeit verwendet wird, Hardware
- Dual-Phasen-Evolution-Prozess, der die Selbstorganisation in komplexen adaptiven Systemen antreibt
- Lineares Suchproblem
- Kein kostenloses Mittagessen bei der Suche und Optimierung- Durchschnittliche Lösungskosten sind bei jeder Methode gleich
- Empfehlungssystem- Informationsfilterungssystem zur Vorhersage von Benutzernpräferenzen und verwenden statistische Methoden, um die Ergebnisse in sehr großen Datensätzen zu bewerten
- Suchmaschine (Computing)- System zur Suche nach Informationen
- Suchspiel-Zwei-Personen-Nullsummenspiel
- Auswahlalgorithmus- Ein Algorithmus zum Finden der kleinsten KTH -Nummer in einer Liste oder einem Array
- Löser- Software für eine Klasse mathematischer Probleme
- Sortieren von Algorithmus- Algorithmus, der die Listen in der Reihenfolge der Reihenfolge der Ausführung bestimmter Suchalgorithmen ordnet
- Internet Suchmaschine
Kategorien:
- Kategorie: Suchalgorithmen
Verweise
Zitate
- ^ 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) - ^ Beam & Fich 2002, p. 39.
- ^ Knuth 1998§6.5 ("Abrufen auf Sekundärschlüssel").
- ^ Knuth 1998§6.1 ("sequentielle Suche").
- ^ Knuth 1998§6.2 ("Suche nach Tastenvergleich").
- ^ Knuth 1998§6.3 (digitale Suche).
- ^ Knuth 1998, §6.4, (Hashing).
- ^ Hunter, A.H.; Penpfenger, Nicholas (4. Juli 2013). "Lokale versus globale Suche in Kanalgraphen". Netzwerke: Eine internationale Reise. Arxiv:1004.2526.
- ^ 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.
- ^ 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
- Knuth, Donald (1998). Sortieren und Suchen. Die Kunst der Computerprogrammierung. Vol. 3 (2. Aufl.). Lesen, MA: Addison-Wesley Professional.
Artikel
- Schmittou, Thomas; Schmittou, Faith E. (2002-08-01). "Optimale Grenzen für das Vorgängerproblem und damit verbundene Probleme". Journal of Computer and System Sciences. 65 (1): 38–72. doi:10.1006/jcs.2002.1822.
Externe Links
- Uninformiertes Suchprojekt Bei der Wikiversität.