The BFS is used to find a shortest path between 2 points of the graph. The C++ STL queue. Consider these steps for the BFS algorithm. Suppose we want to find the distance between nodes X and Y.
We need to use a pair, the first element will show the current node and the second element will show the distance between the nodes X and the node we are currently in.
Step 1 . Add the first pait to the queue . The first element of the pair is X and the second element of the pair is 0. (The distance between X and X is 0 : ) ).
Step 2 On every step check all the nodes which are neghbours with node X . If the node we are checking is not visited ( every time we add a node to our queue , we mark it as visited so that we won't have to visist it again) we add that node to the queue and the distance equals to the distance which is required to reach teh neghbour of that node + 1.
Step.3 Do the second step until you reach the node Y (note that whenever you reach the node Y you should stop the process because the found distance is the shortest).
The pseudocde
Suppose we have queue q;
q.push(x,0);
while( q is not empty)
{
take the first element of the queue.
node=the first elemnet of q.top()
distnace = the second element of the q.top()
for(i=0; i< neighboursnumberl i++)
If ( neighbour is not visited )
q. add element( neighbour, distance+1)
remove the first element of queue
}
And also check if you reached the Y node or not. If you reached it there is not point in continuing our loop,
We need to use a pair, the first element will show the current node and the second element will show the distance between the nodes X and the node we are currently in.
Step 1 . Add the first pait to the queue . The first element of the pair is X and the second element of the pair is 0. (The distance between X and X is 0 : ) ).
Step 2 On every step check all the nodes which are neghbours with node X . If the node we are checking is not visited ( every time we add a node to our queue , we mark it as visited so that we won't have to visist it again) we add that node to the queue and the distance equals to the distance which is required to reach teh neghbour of that node + 1.
Step.3 Do the second step until you reach the node Y (note that whenever you reach the node Y you should stop the process because the found distance is the shortest).
The pseudocde
Suppose we have queue q;
q.push(x,0);
while( q is not empty)
{
take the first element of the queue.
node=the first elemnet of q.top()
distnace = the second element of the q.top()
for(i=0; i< neighboursnumberl i++)
If ( neighbour is not visited )
q. add element( neighbour, distance+1)
remove the first element of queue
}
And also check if you reached the Y node or not. If you reached it there is not point in continuing our loop,
No comments:
Post a Comment