Please implement the A* search algorithm in Python for the problem scenario below. Please explain your code and your approach.    PROBLEM SCENARIO  On holiday, a flight currently wants to travel to Bucharest from Arad. But there is no direct way to Bucharest from Arad. However, the cities are connected with each other like a graph. The distance between the connected cities are given. The flight wants to travel through the most optimal way. To find the optimal path to travel, another information is provided: the straight line distance between any city and the final destination (Bucharest). Now apply A* search to determine the most optimal value for the route Arad to Bucharest and help the flight. You have to use the straight line distance as the heuristic value for the cities. City    Heuristic value    City            Heuristic value Arad     366                    Mehadia       241 Bucharest    0                   Neamt          234 Craiova     160                  Oradea        380 Eforie         161                 Pitesti          100 Fagaras      176                 Rimnicu Vilcea 193 Dobreta      242                Timisoara      329 Hirsova      151                 Urziceni         80 lasi             226                  Vaslui          199 Lugoj         244                 Zerind            374   For simplicity, assume these notations Arad  A  Neamt  F Bucharest Z  Oradea B Craiova S  Pitesti P Eforie T  Rimnicu Vilcea R Fagaras O  Timisoara C Dobreta V  Urziceni D Hirsova N  Vaslui H lasi Q  Zerind E Lugoj G Mehadia L INPUTS Your txt file should take each node followed by each destination it can reach and their corresponding distance and heuristics. You are to read the file then ask the user to input the starting and the destination point. OUTPUTS The output will contain the total distance from the starting point to the destination followed by printing the nodes it followed to calculate the distance. SAMPLE INPUT In the text file: Arad 366 Zerind 75 Sibiu 140 Timisoara 118 Zerind 374 Arad 75 Oradea 71 Oradea 380 Zerind 71 Sibiu 151 ... ... ... ... ... ... Bucharest 0 Pitesti 101 Fagaras 211 Giurgiu 90 Urziceni 85 Giurgiu 77 Bucharest 90 ... ... ... ... ... … The text file is arranged as follows: Each line starts with a node followed by the heuristic of that node Then the neighboring nodes and the distance from the parent node is given as a pair All neighboring city-distance pairs are listed after the heuristic. For example, the text file starts with Arad which has a heuristic of 366. It is the parent node to Zerind, Sibiu and Timisoara which are 75, 140 and 118 km away from Arad. Notice that since Bucharest is the End node which is why it has a heuristic of 0. In console: Start node: Arad Destination: Bucharest Sample output: Path: Arad -> Sibiu -> Rimnicu -> Pitesti -> Bucharest Total distance: 418 km If there is no path found from the Start node to the End node, simply print “NO PATH FOUND

icon
Related questions
Question
100%

Please implement the A* search algorithm in Python for the problem scenario below. Please explain your code and your approach. 

 

PROBLEM SCENARIO 


On holiday, a flight currently wants to travel to Bucharest from Arad. But there is
no direct way to Bucharest from Arad. However, the cities are connected with
each other like a graph. The distance between the connected cities are given. The
flight wants to travel through the most optimal way. To find the optimal path to
travel, another information is provided: the straight line distance between any city
and the final destination (Bucharest).

Now apply A* search to determine the most optimal value for the route Arad to
Bucharest and help the flight. You have to use the straight line distance as the
heuristic value for the cities.


City    Heuristic value    City            Heuristic value
Arad     366                    Mehadia       241
Bucharest    0                   Neamt          234
Craiova     160                  Oradea        380
Eforie         161                 Pitesti          100
Fagaras      176                 Rimnicu Vilcea 193
Dobreta      242                Timisoara      329
Hirsova      151                 Urziceni         80
lasi             226                  Vaslui          199
Lugoj         244                 Zerind            374

 

For simplicity, assume these notations
Arad  A  Neamt  F
Bucharest Z  Oradea B
Craiova S  Pitesti P
Eforie T  Rimnicu Vilcea R
Fagaras O  Timisoara C
Dobreta V  Urziceni D
Hirsova N  Vaslui H
lasi Q  Zerind E
Lugoj G
Mehadia L

INPUTS
Your txt file should take each node followed by each destination it can reach and
their corresponding distance and heuristics. You are to read the file then ask the
user to input the starting and the destination point.
OUTPUTS
The output will contain the total distance from the starting point to the
destination followed by printing the nodes it followed to calculate the distance.
SAMPLE INPUT
In the text file:
Arad 366 Zerind 75 Sibiu 140 Timisoara 118
Zerind 374 Arad 75 Oradea 71
Oradea 380 Zerind 71 Sibiu 151
... ... ... ... ... ...
Bucharest 0 Pitesti 101 Fagaras 211 Giurgiu 90 Urziceni 85
Giurgiu 77 Bucharest 90
... ... ... ... ... …
The text file is arranged as follows:
Each line starts with a node followed by the heuristic of that node
Then the neighboring nodes and the distance from the parent node is given as a pair
All neighboring city-distance pairs are listed after the heuristic.
For example, the text file starts with Arad which has a heuristic of 366. It is the parent
node to Zerind, Sibiu and Timisoara which are 75, 140 and 118 km away from Arad.
Notice that since Bucharest is the End node which is why it has a heuristic of 0.

In console:


Start node: Arad
Destination: Bucharest


Sample output:


Path: Arad -> Sibiu -> Rimnicu -> Pitesti -> Bucharest
Total distance: 418 km
If there is no path found from the Start node to the End node, simply print “NO
PATH FOUND

Arad
75
118
71
Oradea
Zerind 151
140
Timisoara
111
70
75
Dobreta
Romania with step costs in km
Lugoj
Sibiu
Mehadia
120
80
99 Fagaras
Rimnicu Vilcea
97
146
Pitesti
138
Craiova
211
101
Neamt
0
O
85
87
90
Giurgiu
Bucharest
lasi
92
/142
Urziceni
98
Vaslui
Hirsova
86
Eforie
Straight-line distance
to Bucharest
Arad
Bucharest
Craiova
Dobreta
Eforie
Fagaras
Giurgiu
Hirsova
Iasi
Lugoj
Mehadia
Neamt
Oradea
Pitesti
Rimnicu Vilcea
Sibiu
Timisoara
Urziceni
Vaslui
Zerind
366
0
160
242
161
178
77
151
226
244
241
234
380
98
193
253
329
80
199
374
Transcribed Image Text:Arad 75 118 71 Oradea Zerind 151 140 Timisoara 111 70 75 Dobreta Romania with step costs in km Lugoj Sibiu Mehadia 120 80 99 Fagaras Rimnicu Vilcea 97 146 Pitesti 138 Craiova 211 101 Neamt 0 O 85 87 90 Giurgiu Bucharest lasi 92 /142 Urziceni 98 Vaslui Hirsova 86 Eforie Straight-line distance to Bucharest Arad Bucharest Craiova Dobreta Eforie Fagaras Giurgiu Hirsova Iasi Lugoj Mehadia Neamt Oradea Pitesti Rimnicu Vilcea Sibiu Timisoara Urziceni Vaslui Zerind 366 0 160 242 161 178 77 151 226 244 241 234 380 98 193 253 329 80 199 374
Expert Solution
trending now

Trending now

This is a popular solution!

steps

Step by step

Solved in 3 steps with 2 images

Blurred answer