University of Central Florida Algorithms & Data Structures for Road Routes Project
I'm working on a algorithms & data structures project and need a reference to help me learn.The language used for this project is C++Also
I thank anyone attempting this, this is the reality of inexperienced
professors that put us students through so much. Please help me if you
can. Thank you so much, very much appreciated.you
will develop algorithms that find road routes through the bridges to
travel between islands.The input is a text file containing data about
the given map. Each file begins with the number of rows and columns in
the map considered as maximum latitudes and maximum longitudes
respectively on the map. The character "X" in the file represents the
water that means if a cell contains "X" then the traveler is not allowed
to occupy that cell as this car is not drivable on water. The character
"0" in the file represents the road connected island. That means if a
cell contains "0" then the traveler is allowed to occupy that cell as
this car can drive on roads. The traveler starts at the island
located at latitude = 0 and longitude = 0 (i.e., (0,0)) in the upper
left corner, and the goal is to drive to the island located at
(MaxLattitude-1, MaxLongitudes-1) in the lower right corner. A legal
move from an island is to move left, right, up, or down to an
immediately adjacent cell that has road connectivity which means a cell
that contains "0". Moving off any edge of the map is not allowed.Print paths as explicitly specified for all the functions in Part A, Part B, and extra credit on the console. Input: The map filesOutput: Print paths as explicitly specified for all the functions in Part A, Part B, and extra credit on the console. Part AConsider the following class map,class map{public:map(ifstream &fin);void print(int,int,int,int);bool isLegal(int i, int j);void setMap(int i, int j, int n);int getMap(int i, int j) const;int getReverseMapI(int n) const;int getReverseMapJ(int n) const;void mapToGraph(graph &g);bool findPathRecursive(graph &g, stack<int> &moves);bool findPathNonRecursive1(graph &g, stack<int> &moves);bool findPathNonRecursive2(graph &g, queue<int> &moves);bool findShortestPath1(graph &g, stack<int> &bestMoves);bool findShortestPath2(graph &, vector<int> &bestMoves);void map::printPath(stack<int> &s);int numRows(){return rows;};int numCols(){return cols;};private:int rows; // number of latitudes/rows in the mapint cols; // number of longitudes/columns in the mapmatrix<bool> value;matrix<int> mapping; // Mapping from latitude and longitude co-ordinates (i,j) values to node index valuesvector<int> reverseMapI; // Mapping from node index values to map latitude i valuevector<int> reverseMapJ; // Mapping from node index values to map longitude j value};1.
Using the above class map, write function void map::mapToGraph(graph
&g){...} to createe a graph g that represents the legal moves in the
map m. Each vertex should represent a cell, and each edge should
represent a legal move between adjacent cells.2. Writee a
recursive function findPathRecursive(graph &g, stack<int>
&moves) that looks for a path from the start island to the
destination island. If a path from the start to the destination exists,
your function should call the map::printPath() function that should
print a sequence of correct moves (Go left, Go right, Go down, Go up,
etc.). If no path from the start to the destination exists, the program
should print, "No path exists". If a solution exists the solver should
also simulate the solution to each map by calling the map::print()
function. Hint: consider recursive-DFS.3. Writee a function
findPathNonRecursive1(graph &g, stack<int> &moves) that
does the same thing as in 2, but by using stack and without using
recursion. If a path from the start to the destination exists, your
function should call the map::printPath() function that should print a
sequence of correct moves (Go left, Go right, Go down, Go up, etc.). If
no path from the start to the destination exists, the program should
print, "No path exists". If a solution exists the solver should also
simulate the solution to each map by calling the map::print() function.
Hint: consider stack-based DFS.4. Writee a function
findPathNonRecursive2(graph &g, queue<int> &moves) that
does the same thing as in 2, but by using queue and without using
recursion. If a path from the start to the destination exists, your
function should call the map::printPath() function that should print a
sequence of correct moves (Go left, Go right, Go down, Go up, etc.). If
no path from the start to the destination exists, the program should
print, "No path exists". If a solution exists the solver should also
simulate the solution to each map by calling the map::print() function.
Hint: consider queue-based BFS.Part BThe shortest path on a
map is a path from the start to the destination with the smallest
number of intermediate islands, that is the path with the least number
of intermediate "0".1. Write two functions
findShortestPath1(graph &g, stack<int> &bestMoves) and
findShortestPath2(graph &g, stack<int> &bestMoves) that
each finds the shortest path on a map if a path from the start to the
destination exists. The first algorithm should use Dijkstra algorithm
and the second algorithm should use Bellman-Ford algorithm to find the
shortest paths. In each case, if a solution exists the solver should
call the map::printPath() function that should print a sequence of
correct moves (Go left, Go right, Go down, Go up, etc.). If no path from
the start to the destination exists, the program should print, "No path
exists". If a solution exists the solver should also simulate the
solution to each map by calling the map::print() function. Each function
should return true if any paths are found, and false otherwise..pdf file | C++-