Advertisement
FaisalAhemdBijoy

Best First Search BFS

Feb 22nd, 2020
237
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.84 KB | None | 0 0
  1. # -*- coding: utf-8 -*-
  2. """
  3. Created on Sun Feb 23 00:23:50 2020
  4.  
  5. @author: Faisal Ahmed
  6. """
  7.  
  8. graph = {"Oradea":{"Zerind":71,"Sibiu":151},
  9.          "Zerind":{"Oradea":71,"Arad":75},
  10.          "Arad":{"Zerind":75,"Timisoara":118,"Sibiu":140},
  11.          "Timisoara":{"Arad":118,"Lugoj":111},
  12.          "Lugoj":{"Timisoara":111,"Mehadia":70},
  13.          "Mehadia":{"Lugoj":70,"Dobreta":75},
  14.          "Dobreta":{"Mehadia":75,"Craiova":120},
  15.          "Craiova":{"Dobreta":120,"Rimnicu Vilcea":146,"Pitesti":138},
  16.          "Sibiu":{"Arad":140,"Oradea":151,"Rimnicu Vilcea":80,"Fagaras":99},
  17.          "Rimnicu Vilcea":{"Sibiu":80,"Craiova":146,"Pitesti":97},
  18.          "Fagaras":{"Sibiu":99,"Bucharest":211},
  19.          "Pitesti":{"Bucharest":101,"Rimnicu Vilcea":97,"Craiova":138},
  20.          "Bucharest":{"Fagaras":211,"Pitesti":101,"Giurgiu":90,"Urziceni":85},
  21.          "Giurgiu":{"Bucharest":90},"Urziceni":{"Bucharest":85,"Hirsova":98,"Vaslui":142},
  22.          "Hirsova":{"Urziceni":98,"Eforie":86},
  23.          "Eforie":{"Hirsova":86},
  24.          "Vaslui":{"Urziceni":142,"Iasi":92},
  25.          "Iasi":{"Vaslui":92,"Neamt":87},
  26.          "Neamt":{"Iasi":87}
  27. }
  28.  
  29. start='Arad'
  30. goal='Bucharest'
  31. fringe=[]
  32. parent={}
  33. visited=[]
  34.  
  35. fringe.append(start)
  36. visited.append(start)
  37. parent[start]=None
  38. found=False
  39.  
  40. while len(fringe)>0:
  41.     u=fringe[0]
  42.     del fringe[0]
  43.     adjDict=graph[u]
  44.    
  45.     for v in adjDict.keys():
  46.         if v not in parent:
  47.             parent[v]=u
  48.             if v==goal:
  49.                 found=True
  50.                 break
  51.         fringe.append(v)
  52.     if found:
  53.         break
  54.  
  55.        
  56. current=goal
  57. path=[]
  58. distance=0
  59.  
  60. path.append(current)
  61. while parent[current]!=None:
  62.     path.append(parent[current])
  63.     distance=distance+graph[current][parent[current]]
  64.     current=parent[current]
  65.  
  66. path.reverse()
  67.  
  68. print("Path : ")
  69. for i in path:
  70.     print(i,end=" ")
  71.    
  72. print("\nDistance : ",distance)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement