Advertisement
FaisalAhemdBijoy

A* Search

Feb 23rd, 2020
247
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.10 KB | None | 0 0
  1. import operator
  2. graph = {'Oradea':{'Zerind':71,'Sibiu':151},'Zerind':{'Oradea':71,'Arad':75},'Arad':{'Zerind':75,'Timisoara':118,'Sibiu':140},'Timisoara':{'Arad':118,'Lugoj':111},'Lugoj':{'Timisoara':111,'Mehadia':70},'Mehadia':{'Lugoj':70,'Dobreta':70},'Dobreta':{'Mehadia':75,'Craiova':120},'Craiova':{'Dobreta':120,'Rimnicu Vilcea':146,'Pitesti':138},'Sibiu':{'Arad':140,'Oradea':151,'Rimnicu Vilcea':80,'Fagaras':99},'Rimnicu Vilcea':{'Sibiu':80,'Craiova':146,'Pitesti':97},'Fagaras':{'Sibiu':99,'Bucharest':221},'Pitesti':{'Bucharest':101,'Rimnicu Vilcea':97,'Craiova':138},'Bucharest':{'Fagaras':211,'Pitesti':101,'Giurgiu':90,'Urziceni':85},'Giurgiu':{'Bucharest':90},'Urziceni':{'Bucharest':85,'Hirsova':98,'Vaslui':142},'Hirsova':{'Urziceni':98,'Eforie':86},'Eforie':{'Hirsova':86},'Vaslui':{'Urziceni':142,'Iasi':92},'Iasi':{'Neamt':87,'Vaslui':92},'Neamt':{'Iasi':87}}
  3. hsld = {'Arad':366, 'Bucharest':0, 'Craiova':160, 'Dobreta':242, 'Eforie':161, 'Fagaras':176, 'Giurgiu':77, 'Hirsova':151, 'Iasi':226, 'Lugoj':244, 'Mehadia':241, 'Neamt':234, 'Oradea':380, 'Pitesti':100, 'Rimnicu Vilcea':193, 'Sibiu':253, 'Timisoara':329, 'Urziceni':80, 'Vaslui':199, 'Zerind':374}
  4.  
  5. start = 'Arad'
  6. destination = 'Bucharest'
  7. gn = {}
  8. fn = {}
  9. route = []
  10. shortestDistance = 0
  11.  
  12.  
  13. def aStarSearch(start):
  14.     gn[start] = 0
  15.     global shortestDistance
  16.     fn[start] = gn[start] + hsld[start]
  17.     while True:
  18.         for i in graph[start]:
  19.             gn[i] = gn[start] + graph[start][i]
  20.             fn[i] = gn[i] + hsld[i]
  21.            
  22.        
  23.         print(fn)
  24.         fringe = sorted(fn.items(),key=operator.itemgetter(1))
  25.        # print(fringe)
  26.        
  27.         start = fringe[0][0]
  28.         print('select : ', start)
  29.         shortestDistance = fringe[0][1]
  30.         if fringe[0][0] == destination:
  31.             route.append(start)
  32.             break
  33.         fn.__delitem__(fringe[0][0])
  34.        
  35.         route.append(start)
  36.  
  37. aStarSearch(start)
  38. print ('')
  39. print ('Shortest path : ',route)
  40. print ('Shortest Distance = ',shortestDistance)
  41. """
  42. Shortest path :  ['Arad', 'Sibiu', 'Rimnicu Vilcea', 'Fagaras', 'Pitesti', 'Bucharest']
  43. Shortest Distance =  418
  44. """
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement