BFS+DFS+Astar Program
BFS+DFS+Astar Program
import collections
# BFS algorithm
def bfs(graph, root):
while queue:
if __name__ == '__main__':
graph = {0: [1, 2], 1: [2], 2: [3], 3: [1, 2]}
print("Following is Breadth First Traversal: ")
bfs(graph, 0)
output
Following is Breadth First Traversal:
0 1 2 3
DFS
graph = {
visited =set()
def dfs(visited,graph,root):
print(root)
visited.add(root)
for neighbour in graph[root]:
dfs(visited,graph,neighbour)
dfs(visited,graph,'0')
OUTPUT :
0
1
3
4
2
A* Program
Graph_nodes = {
def get_neighbors(v):
if v in Graph_nodes:
return Graph_nodes[v]
else:
return None
def h(n):
H_dist = {
'A': 10,
'B': 8,
'C': 5,
'D': 7,
'E': 3,
'F': 6,
'G': 5,
'H': 3,
'I': 1,
'J': 0
return H_dist[n]
open_set = set(start_node)
closed_set = set()
g = {}
parents = {}
g[start_node] = 0
parents[start_node] = start_node
n = None
for v in open_set:
n = v
pass
else:
open_set.add(m)
parents[m] = n
else:
parents[m] = n
if m in closed_set:
closed_set.remove(m)
open_set.add(m)
if n == None:
return None
if n == stop_node:
path = []
while parents[n] != n:
path.append(n)
n = parents[n]
path.append(start_node)
path.reverse()
return path
open_set.remove(n)
closed_set.add(n)
return None
aStarAlgo('A', 'J')
Output
Path found: ['A', 'F', 'G', 'I', 'J']