


Lernen Sie die detaillierten Schritte zum Implementieren des A*-Algorithmus in Python kennen
以此加权图为例,用Python实现A*算法。加权图中的节点用粉红色圆圈表示,并且给出了沿节点的路径的权重。节点上方的数字代表节点的启发式值。

首先为算法创建类。一个用于存储与起始节点的距离,另一个用于存储父节点。并将它们初始化为0,以及起始节点。
def aStarAlgo(start_node,stop_node): open_set=set(start_node) closed_set=set() g={} parents={} g[start_node]=0 parents[start_node]=start_node
找到具有最低f(n)值的相邻节点,针对到达目标节点的条件进行编码。如果不是这种情况,则将当前节点放入打开列表中,并设置其父节点。
While len(open_set)>0: n=None for v in open_set: if n==None or g[v]+heuristic(v)<g[n]+heuristic(n): n=v if n==stop_node or Graph_nodes[n]==None: pass else: for(m,weight)in get_neighbors(n): if m not in open_set and m not in closed_set: open_set.add(m) parents[m]=n g[m]=g[n]+weight
如果相邻的g值低于当前节点并且在封闭列表中,则将其替换为这个新节点作为父节点。
else: if g[m]>g[n]+weight: g[m]=g[n]+weight parents[m]=n if m in closed_set: closed_set.remove(m) open_set.add(m)
如果当前g低于前一个g,并且其相邻在open list中,则将其替换为较低的g值,并将相邻的parent更改为当前节点。
如果不在两个列表中,则将其添加到打开列表并设置其g值。
if n==None: print('Path does not exist!') return None if n==stop_node: path=[] while parents[n]!=n: path.append(n) n=parents[n] path.append(start_node) path.reverse() print('Path found:{}'.format(path)) return path open_set.remove(n) closed_set.add(n) print('Path does not exist!') return None
现在,定义一个函数来返回相邻节点及其距离。
def get_neighbors(v): if v in Graph_nodes: return Graph_nodes[v] else: return None
此外,创建一个函数来检查启发式值。
def heuristic(n): H_dist={ 'A':11, 'B':6, 'C':99, 'D':1, 'E':7, 'G':0, } return H_dist[n]
描述一下图表并调用A*函数。
Graph_nodes={ 'A':[('B',2),('E',3)], 'B':[('C',1),('G',9)], 'C':Node, 'E':[('D',6)], 'D':[('G',1)], } aStarAlgo('A','G')
算法遍历图,找到代价最小的路径。
这是通过E => D => G。
Das obige ist der detaillierte Inhalt vonLernen Sie die detaillierten Schritte zum Implementieren des A*-Algorithmus in Python kennen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Lösung für Erlaubnisprobleme beim Betrachten der Python -Version in Linux Terminal Wenn Sie versuchen, die Python -Version in Linux Terminal anzuzeigen, geben Sie Python ein ...

Bei der Verwendung von Pythons Pandas -Bibliothek ist das Kopieren von ganzen Spalten zwischen zwei Datenrahmen mit unterschiedlichen Strukturen ein häufiges Problem. Angenommen, wir haben zwei Daten ...

In dem Artikel werden beliebte Python-Bibliotheken wie Numpy, Pandas, Matplotlib, Scikit-Learn, TensorFlow, Django, Flask und Anfragen erörtert, die ihre Verwendung in wissenschaftlichen Computing, Datenanalyse, Visualisierung, maschinellem Lernen, Webentwicklung und h beschreiben

Regelmäßige Ausdrücke sind leistungsstarke Tools für Musteranpassung und Textmanipulation in der Programmierung, wodurch die Effizienz bei der Textverarbeitung in verschiedenen Anwendungen verbessert wird.

Wie hört Uvicorn kontinuierlich auf HTTP -Anfragen an? Uvicorn ist ein leichter Webserver, der auf ASGI basiert. Eine seiner Kernfunktionen ist es, auf HTTP -Anfragen zu hören und weiterzumachen ...

Der Artikel erörtert die Rolle virtueller Umgebungen in Python und konzentriert sich auf die Verwaltung von Projektabhängigkeiten und die Vermeidung von Konflikten. Es beschreibt ihre Erstellung, Aktivierung und Vorteile bei der Verbesserung des Projektmanagements und zur Verringerung der Abhängigkeitsprobleme.

Fastapi ...

Wie erstellt in Python ein Objekt dynamisch über eine Zeichenfolge und ruft seine Methoden auf? Dies ist eine häufige Programmieranforderung, insbesondere wenn sie konfiguriert oder ausgeführt werden muss ...
