Finding your way around the world of Graph Traversal
What is a Graph?
A graph consists of some points and some lines between them
A graph with three vertices and three edges.
Okay, so why should I study graphs?
Lots of things IRL make sense to be represented as graphs
Networks
Navigation (Shortest path)
Search
Artificial Intelligence (Game AI)
Web crawling
Also, it's a common interview question
Important Graph Terminology
Nodes
Also known as vertices, or points
A graph consists of two or more nodes
Pretty simple ...
Edges
Also known as arcs, or lines
Edges connect nodes together on a graph
Graphs may also associate to each edge value, such as cost, capacity, length, etc.
Edges can be directed or undirected
Graph Traversal
is the process of visiting (checking and/or updating) each vertex in a graph.
There are two main ways of traversing a Graph
Depth-first
Breath-first
So what's the difference?
This picture should give you the idea about the context in which the words breadth and depth are used.
Depth-first search
Acts as if it wants to get as far away from the starting point as quickly as possible.
Breadth-first search
Likes to stay as close as possible to the starting point.
Depth-first Search
Rules to follow: Push first vertex A on to the Stack
If possible, visit an adjacent unvisited vertex, mark it as visited, and push it on the stack.
If you can’t follow Rule 1, then, if possible, pop a vertex off the stack.
If you can’t follow Rule 1 or Rule 2, you’re done.
1
Breadth-first Search
Rules to follow: Make starting Vertex A the current vertex
Visit the next unvisited vertex (if there is one) that’s adjacent to the current vertex, mark it, and insert it into the queue.
If you can’t carry out Rule 1 because there are no more unvisited vertices, remove a vertex from the queue (if possible) and make it the current vertex.
If you can’t carry out Rule 2 because the queue is empty, you’re done.