In this project, 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.
Input: The map files
Output: Print paths as explicitly specified for all the functions in Part A
You should have single main function that calls all the required functions for Part A for all the 3 given input map files one by one.
Please use the graph.h file provided in this module for this project rather than the standard library file downloaded online as it is specially modified to ease you work in this project. You do not have to use this file mandatory, but if you are struggling to even start the project then this should definitely make your life much easier.
Part A
Consider 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
bool findPathNonRecursive1(graph &g, stack
bool findPathNonRecursive2(graph &g, queue
bool findShortestPath1(graph &g, stack
bool findShortestPath2(graph &, vector
void map::printPath(stack
int numRows(){return rows;};
int numCols(){return cols;};
private:
int rows; // number of latitudes/rows in the map
int cols; // number of longitudes/columns in the map
matrix
matrix
vector
vector
};
1. Using the above class map, write function void map::mapToGraph(graph &g){…} to create 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. Write a recursive function findPathRecursive(graph &g, stack
3. Write a function findPathNonRecursive1(graph &g, stack
4. Write a function findPathNonRecursive2(graph &g, queue
NB: Please Zip all documents