KI mit Python - Heuristische Suche
Die heuristische Suche spielt eine Schlüsselrolle in der künstlichen Intelligenz. In diesem Kapitel erfahren Sie mehr darüber.
Konzept der heuristischen Suche in der KI
Heuristik ist eine Faustregel, die uns zur wahrscheinlichen Lösung führt. Die meisten Probleme in der künstlichen Intelligenz sind exponentieller Natur und haben viele mögliche Lösungen. Sie wissen nicht genau, welche Lösungen korrekt sind, und die Überprüfung aller Lösungen wäre sehr teuer.
Die Verwendung von Heuristik schränkt somit die Suche nach einer Lösung ein und eliminiert die falschen Optionen. Die Methode zur Verwendung der Heuristik zum Führen der Suche im Suchraum wird als heuristische Suche bezeichnet. Heuristische Techniken sind sehr nützlich, da die Suche bei Verwendung verbessert werden kann.
Unterschied zwischen nicht informierter und informierter Suche
Es gibt zwei Arten von Kontrollstrategien oder Suchtechniken: uninformiert und informiert. Sie werden im Detail wie hier angegeben erklärt -
Nicht informierte Suche
Es wird auch als Blind Search- oder Blind Control-Strategie bezeichnet. Es wird so benannt, weil nur Informationen zur Problemdefinition vorhanden sind und keine weiteren zusätzlichen Informationen zu den Zuständen verfügbar sind. Diese Art von Suchtechniken würde den gesamten Zustandsraum durchsuchen, um die Lösung zu erhalten. Breadth First Search (BFS) und Depth First Search (DFS) sind Beispiele für nicht informierte Suche.
Informierte Suche
Es wird auch als heuristische Suche oder heuristische Kontrollstrategie bezeichnet. Es wird so benannt, weil es einige zusätzliche Informationen über die Zustände gibt. Diese zusätzlichen Informationen sind nützlich, um die Präferenz unter den untergeordneten Knoten zu berechnen, die untersucht und erweitert werden sollen. Jedem Knoten wäre eine heuristische Funktion zugeordnet. Best First Search (BFS), A *, Mittelwert und Analyse sind Beispiele für eine informierte Suche.
Constraint Satisfaction Problems (CSPs)
Einschränkung bedeutet Einschränkung oder Einschränkung. In der KI sind Probleme mit der Einschränkungszufriedenheit die Probleme, die unter bestimmten Einschränkungen gelöst werden müssen. Der Fokus muss darauf liegen, die Einschränkung bei der Lösung solcher Probleme nicht zu verletzen. Wenn wir die endgültige Lösung erreichen, muss CSP die Einschränkung einhalten.
Problem der realen Welt durch Zufriedenheit mit Einschränkungen gelöst
In den vorherigen Abschnitten wurde das Erstellen von Problemen mit der Zufriedenheit mit Einschränkungen behandelt. Wenden wir dies nun auch auf Probleme der realen Welt an. Einige Beispiele für Probleme der realen Welt, die durch die Erfüllung von Einschränkungen gelöst werden, sind wie folgt:
Algebraische Beziehung lösen
Mit Hilfe des Constraint-Zufriedenheitsproblems können wir algebraische Beziehungen lösen. In diesem Beispiel werden wir versuchen, eine einfache algebraische Beziehung zu lösena*2 = b. Es wird der Wert von zurückgegebena und b innerhalb des Bereichs, den wir definieren würden.
Nach Abschluss dieses Python-Programms können Sie die Grundlagen zum Lösen von Problemen mit der Erfüllung von Einschränkungen verstehen.
Beachten Sie, dass wir vor dem Schreiben des Programms das Python-Paket namens python-Constraint installieren müssen. Sie können es mit Hilfe des folgenden Befehls installieren:
pip install python-constraint
Die folgenden Schritte zeigen Ihnen ein Python-Programm zum Lösen algebraischer Beziehungen unter Verwendung der Einschränkungserfüllung -
Importieren Sie die constraint Paket mit dem folgenden Befehl -
from constraint import *
Erstellen Sie nun ein Objekt des Moduls mit dem Namen problem() wie unten gezeigt -
problem = Problem()
Definieren Sie nun Variablen. Beachten Sie, dass wir hier zwei Variablen a und b haben und 10 als ihren Bereich definieren, was bedeutet, dass wir die Lösung innerhalb der ersten 10 Zahlen erhalten haben.
problem.addVariable('a', range(10))
problem.addVariable('b', range(10))
Definieren Sie als Nächstes die bestimmte Einschränkung, die wir auf dieses Problem anwenden möchten. Beachten Sie, dass wir hier die Einschränkung verwendena*2 = b.
problem.addConstraint(lambda a, b: a * 2 == b)
Erstellen Sie nun das Objekt von getSolution() Modul mit dem folgenden Befehl -
solutions = problem.getSolutions()
Zuletzt drucken Sie die Ausgabe mit dem folgenden Befehl:
print (solutions)
Sie können die Ausgabe des obigen Programms wie folgt beobachten:
[{'a': 4, 'b': 8}, {'a': 3, 'b': 6}, {'a': 2, 'b': 4}, {'a': 1, 'b': 2}, {'a': 0, 'b': 0}]
Magisches Quadrat
Ein magisches Quadrat ist eine Anordnung unterschiedlicher Zahlen, im Allgemeinen ganze Zahlen, in einem quadratischen Raster, wobei sich die Zahlen in jeder Zeile und in jeder Spalte sowie die Zahlen in der Diagonale zu derselben Zahl addieren, die als „magische Konstante“ bezeichnet wird. .
Das Folgende ist eine schrittweise Ausführung von einfachem Python-Code zum Generieren von magischen Quadraten -
Definieren Sie eine Funktion mit dem Namen magic_square, wie unten gezeigt -
def magic_square(matrix_ms):
iSize = len(matrix_ms[0])
sum_list = []
Der folgende Code zeigt den Code für die Vertikale von Quadraten -
for col in range(iSize):
sum_list.append(sum(row[col] for row in matrix_ms))
Der folgende Code zeigt den Code für die Horizontierung von Quadraten -
sum_list.extend([sum (lines) for lines in matrix_ms])
Der folgende Code zeigt den Code für die Horizontale der Quadrate -
dlResult = 0
for i in range(0,iSize):
dlResult +=matrix_ms[i][i]
sum_list.append(dlResult)
drResult = 0
for i in range(iSize-1,-1,-1):
drResult +=matrix_ms[i][i]
sum_list.append(drResult)
if len(set(sum_list))>1:
return False
return True
Geben Sie nun den Wert der Matrix an und überprüfen Sie die Ausgabe -
print(magic_square([[1,2,3], [4,5,6], [7,8,9]]))
Sie können beobachten, dass die Ausgabe wäre False da die Summe nicht bis zur gleichen Zahl ist.
print(magic_square([[3,9,2], [3,5,7], [9,1,6]]))
Sie können beobachten, dass die Ausgabe wäre True da die Summe die gleiche Zahl ist, das heißt 15 Hier.