<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Suchverfahren</id>
	<title>Suchverfahren - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Suchverfahren"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Suchverfahren&amp;action=history"/>
	<updated>2026-06-07T20:21:21Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=Suchverfahren&amp;diff=153985&amp;oldid=prev</id>
		<title>imported&gt;Acky69: zus. Link</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Suchverfahren&amp;diff=153985&amp;oldid=prev"/>
		<updated>2024-11-17T11:43:20Z</updated>

		<summary type="html">&lt;p&gt;zus. Link&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Dieser Artikel|beschreibt die Suche nach Daten im Kontext der Informatik. Für die Suche nach vermissten Personen und Schiffen siehe [[Suchmuster]].}}&lt;br /&gt;
{{Belege fehlen}}&lt;br /&gt;
Die [[Informatik]] bezeichnet mit &amp;#039;&amp;#039;&amp;#039;Suchverfahren&amp;#039;&amp;#039;&amp;#039; oder &amp;#039;&amp;#039;&amp;#039;Suchalgorithmus&amp;#039;&amp;#039;&amp;#039; einen [[Algorithmus]], der in einem [[Suchraum]] nach Mustern oder Objekten mit bestimmten Eigenschaften sucht. Man unterscheidet einfache und heuristische Suchalgorithmen. Einfache Suchalgorithmen benutzen intuitive Methoden für das Durchsuchen des Suchraumes, während [[Heuristik|heuristische]] Suchalgorithmen Wissen über den Suchraum (beispielsweise die Datenverteilung) miteinbeziehen, um die benötigte Suchzeit zu reduzieren.&lt;br /&gt;
&lt;br /&gt;
Die [[Problemlösen|Lösung]] eines algorithmischen Problems kann allgemein als &amp;#039;&amp;#039;Suche&amp;#039;&amp;#039; nach der Lösung in einer Menge von möglichen Lösungen (dem &amp;#039;&amp;#039;[[Lösungsraum]]&amp;#039;&amp;#039;) verstanden werden. Als Lösung kann der Zielzustand gelten, aber auch der Pfad zum Ziel oder die Reihenfolge von entsprechenden Aktionen. Ist der Suchraum endlich, kann die Suche mit einer geeigneten Suchstrategie immer zu einem Ergebnis führen. Bei &amp;#039;&amp;#039;unendlichen (Lösungs-)Mengen&amp;#039;&amp;#039; muss die Suche nach gewissen Kriterien (z.&amp;amp;nbsp;B. nach einer bestimmten Zeit) abgebrochen werden.&lt;br /&gt;
&lt;br /&gt;
Wiederholte Suche in einer &amp;#039;&amp;#039;[[Endliche Menge|endlichen Menge]]&amp;#039;&amp;#039; kann dadurch effizient gestaltet werden, dass über den Daten eine [[Indexstruktur]] (z.&amp;amp;nbsp;B. in Form eines [[Suchbaum]]s) erstellt wird, die nach einem bestimmten Kriterium sortiert ist. Dann müssen bei einer Suche nicht mehr alle Einträge betrachtet werden (z.&amp;amp;nbsp;B. beginnt man die Suche in einem [[Telefonbuch]] bei dem Buchstaben, mit dem der Name anfängt).&lt;br /&gt;
&lt;br /&gt;
== Einfache Suchalgorithmen ==&lt;br /&gt;
Einfache Suchalgorithmen vernachlässigen die spezielle Natur des jeweiligen Problems. Deshalb können sie allgemeiner und [[Abstraktion|abstrakter]] [[Implementation|implementiert]] werden, wodurch dieselbe Implementierung für eine große Auswahl von Problemen verwendet werden kann. Der Nachteil einfacher Suchalgorithmen sind die entstehenden Kosten: Der Suchraum von [[Suchproblem]]en ist im Allgemeinen sehr groß, einfaches Suchen läuft jedoch nur in kleinen Suchräumen in annehmbarer Zeit ab.&lt;br /&gt;
&lt;br /&gt;
=== Suche in Listen ===&lt;br /&gt;
Algorithmen zur Suche in Listen sind die einfachsten Suchalgorithmen überhaupt. Das Ziel der Suche in Listen ist es, ein bestimmtes Element einer Liste zu finden, von dem der zugehörige [[Suchschlüssel]] bekannt ist. Da dieses Problem in der Informatik oft anzutreffen ist, sind die verwendeten Algorithmen – sowie deren [[Komplexitätstheorie|Komplexität]] – sehr gut untersucht.&lt;br /&gt;
[[Datei:Skip list.svg|mini|Suche in einer [[Liste (Datenstruktur)#Skip-Liste|Skip-Liste]]]]&lt;br /&gt;
&lt;br /&gt;
Der einfachste Suchalgorithmus für Listen ist die [[lineare Suche]]. Bei ihr wird solange ein Element nach dem anderen durchlaufen, bis ein Element mit dem gesuchten Schlüssel angetroffen wird. Die lineare Suche hat eine Laufzeit von [[Landau-Notation|&amp;lt;math&amp;gt;\mathcal{O}( n )&amp;lt;/math&amp;gt;]] (&amp;#039;&amp;#039;n&amp;#039;&amp;#039; ist die Anzahl der Elemente der Liste) und kann sowohl auf sortierte als auch unsortierte Listen angewendet werden. Ein fortgeschrittenes Verfahren ist die [[binäre Suche]] mit einer Laufzeit von &amp;lt;math&amp;gt;\mathcal{O}( \log n )&amp;lt;/math&amp;gt;. Für große Listen ist sie viel effizienter als die lineare Suche, setzt jedoch voraus, dass die Liste vorher [[Sortierverfahren|sortiert]] wurde und ein [[wahlfreier Zugriff]] auf die Elemente möglich ist. Die [[Interpolationssuche]], auch Intervallsuche genannt, ist eine Verbesserung der binären Suche, die eine Gleichverteilung der Daten voraussetzt. Die Laufzeit &amp;lt;math&amp;gt;\mathcal{O}( \log ( \log n ))&amp;lt;/math&amp;gt; ist nur für sehr große Datenmengen besser als die der binären Suche. Ein weiterer Suchalgorithmus für Listen ist der [[Grover-Algorithmus]], der auf [[Quantencomputer]]n zum Einsatz kommt und quadratisch schneller als die klassische lineare Suche für unsortierte Listen abläuft. Für die Suche in Listen kann auch [[Hash-Funktion|Hashing]] verwendet werden, das im Durchschnitt eine konstante Zeit &amp;lt;math&amp;gt;\mathcal{O}( 1 )&amp;lt;/math&amp;gt;, im [[Worst Case|schlechtesten Fall]] jedoch lineare Zeit benötigt.&lt;br /&gt;
&lt;br /&gt;
=== Suche in Bäumen ===&lt;br /&gt;
[[Datei:Binary search tree.svg|mini|Ein [[binärer Suchbaum]] der Größe neun und der Tiefe drei]]&lt;br /&gt;
Die Suche in Bäumen ist die Königsdisziplin unter den Suchalgorithmen. Sie durchsucht [[Knoten (Graphentheorie)|Knoten]] von [[Baum (Graphentheorie)|Bäumen]], unabhängig davon, ob der Baum explizit oder implizit (während der Suche generiert) ist. Dabei wird folgendes Prinzip angewendet: Ein Knoten wird aus einer [[Datenstruktur]] entnommen. Seine Kindknoten werden untersucht und gegebenenfalls der Datenstruktur hinzugefügt. Je nach Auswahl der Datenstruktur kann der Baum in verschiedenen Reihenfolgen durchsucht werden. Die Verwendung einer [[Warteschlange (Datenstruktur)|Warteschlange]] führt so zu einer [[Breitensuche]], bei der der Baum Ebene für Ebene durchlaufen wird. Bei Verwendung eines [[Stapelspeicher|Stacks]] hingegen wird jeweils bis zu einem Blatt gesucht und erst anschließend mit dem nächsten Kindknoten fortgefahren. Dies wird als [[Tiefensuche]] bezeichnet.&lt;br /&gt;
&lt;br /&gt;
=== Suche in Graphen ===&lt;br /&gt;
Viele Probleme der [[Graphentheorie]] können mit Hilfe von Suchalgorithmen gelöst werden. Beispiele für diese Probleme sind das [[Problem des Handlungsreisenden]], die Berechnung [[Kürzester Pfad|kürzester Pfade]] und die Konstruktion eines [[Spannbaum|minimalen Spannbaums]]. Die entsprechenden Algorithmen sind zum Beispiel [[Algorithmus von Kruskal|Kruskals Algorithmus]], [[Algorithmus von Dijkstra|Dijkstras Algorithmus]] oder [[Algorithmus von Prim|Prims Algorithmus]], die als Erweiterungen der Algorithmen für die Suche in Bäumen gesehen werden können.&lt;br /&gt;
&lt;br /&gt;
== Heuristische (Informierte) Suchalgorithmen ==&lt;br /&gt;
Strategien, die das Auffinden von Lösungen beschleunigen können, bezeichnet man als [[Heuristik]]en. Typische Heuristiken sind Faustregeln, die Orientierung an Beispielen und die Nachbildung des menschlichen Problemlöseprozesses. Demnach können die Verfahren in uninformierte (auch blinde Suche genannt) und informierte (Nutzung von Heuristiken) unterschieden werden. Das Studium verschiedener Verfahren zur heuristischen Suche, die Entwicklung und Implementation neuer Verfahren und ihre Anwendung auf verschiedene Problembereiche rechnet man üblicherweise zum algorithmischen Kern der Künstlichen Intelligenz. Dazu gehören z. B. das automatische Beweisen, die Steuerung von Robotern und, als typische Vertreter, insbesondere Spiele. Gemeint sind sowohl Zwei-Personen-Spiele (Nullsummenspiele mit vollständiger Information) wie z. B. [[Schach]], [[Dame (Spiel)|Dame]], [[Mühle (Spiel)|Mühle]] als auch Ein-Personen-Spiele wie Schiebepuzzles oder Solitaire. Die klassischen Verfahren zur heuristischen Suche sind [[A*-Algorithmus|A*]], [[IDA*]], [[Bidirektionale Suche|bidirektionale Suchschemata]], das [[Minimax-Algorithmus|Minimax-Verfahren]], [[Alpha-Beta-Suche]].&lt;br /&gt;
&lt;br /&gt;
Heuristische Suchalgorithmen kommen auch dann zum Einsatz, wenn ein Algorithmus zur Problemlösung zu rechenintensiv ist. In diesem Fall wird ein gewisser Fehler in Kauf genommen – also auch eine nicht optimale Lösung akzeptiert – wenn dafür die eingesetzte Rechenzeit deutlich reduziert werden kann.&lt;br /&gt;
&lt;br /&gt;
== Optimierende Suche ==&lt;br /&gt;
Diese Art der Suche  löst Optimierungsaufgaben, bei der eine Reihe von Variablen mit Werten belegt werden muss. Da es sich dabei um sehr viele Variablen mit sehr großem Wertebereich handeln kann, ist der Suchbereich sehr groß und herkömmliche Suchverfahren versagen.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;Kombinatorische Suche&amp;#039;&amp;#039; und [[Backtracking]] sind Verfahren, die bei der optimierenden Suche zum Einsatz kommen, vor allem bei diskreten Variablen.&lt;br /&gt;
&lt;br /&gt;
Zur analogen Suche nach Minima oder Maxima von mehrdimensionalen Funktionen gibt es eine ganze Anzahl an numerischen [[Optimierung (Mathematik)|Optimierungsverfahren]], die je nach den jeweiligen Ausgangsbedingungen eingesetzt werden.&lt;br /&gt;
&lt;br /&gt;
Ein anderes Vorgehen beruht auf dem [[Feedback (Kommunikation)|Feedback]] durch den Nutzer, der die [[Relevanz]] der Ergebnisse zu bewerten hat, siehe [[Relevanz-Feedback]].&lt;br /&gt;
&lt;br /&gt;
== Andere Suchverfahren ==&lt;br /&gt;
Suchverfahren für [[Zeichenkette]]n suchen in Zeichenketten nach dem Auftreten eines Schlüssels. Bekannte Vertreter sind der [[Algorithmus von Knuth-Morris-Pratt]], der [[Boyer-Moore-Algorithmus|Algorithmus von Boyer-Moore]] sowie der [[Karp-Rabin-Algorithmus]]. Siehe dazu: [[String-Matching-Algorithmus]].&lt;br /&gt;
&lt;br /&gt;
[[Evolutionärer Algorithmus|Evolutionäre Algorithmen]] benutzen Ideen aus der [[Evolutionstheorie]] als Heuristiken, um schneller gute Ergebnisse zu bekommen.&lt;br /&gt;
&lt;br /&gt;
[[Simulierte Abkühlung]] (&amp;#039;&amp;#039;simulated annealing&amp;#039;&amp;#039;) ist ein auf Wahrscheinlichkeit beruhender Suchalgorithmus.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;Adversarial Search&amp;#039;&amp;#039; wird im Bereich der [[künstliche Intelligenz|künstlichen Intelligenz]] eingesetzt.&lt;br /&gt;
&lt;br /&gt;
== Leistungsunterschiede der Suchverfahren ==&lt;br /&gt;
In den [[No-Free-Lunch-Theoreme]]n wurde gezeigt, dass – gemittelt über alle mathematisch formulierbaren Probleme – alle Suchverfahren gleich gut sind. Einen Leistungsvorsprung zeigt ein Suchverfahren jeweils nur auf einer speziellen Klasse von Problemen.&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
* [[Fuzzy-Suche]]&lt;br /&gt;
* [[Phonetische Suche]]&lt;br /&gt;
* [[Recherche]]&lt;br /&gt;
* [[Pattern Matching]]&lt;br /&gt;
* [[Regulärer Ausdruck]]&lt;br /&gt;
* [[Data-Mining]]&lt;br /&gt;
* [[Suchmaschine]]&lt;br /&gt;
* [[Suchfunktion]]&lt;br /&gt;
* [[Liste von Algorithmen]]&lt;br /&gt;
* [[Rosettenabtastung]]&lt;br /&gt;
* [[Thematische Suche]]&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* R. Poli, W. B. Langdon, N. F. McPhee: &amp;#039;&amp;#039;A Field Guide to Genetic Programming.&amp;#039;&amp;#039; Lulu.com, 2008, ISBN 978-1-4092-0073-4. [https://www.researchgate.net/publication/216301261_A_Field_Guide_to_Genetic_Programming (researchgate.net)]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Suchalgorithmus| ]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Acky69</name></author>
	</entry>
</feed>