This document provides an overview of graph algorithms and graph theory concepts. It defines different types of graphs including simple graphs, directed graphs, multi graphs, pseudo graphs, and weighted graphs. It also defines graph concepts such as paths, circuits, cycles, degrees of vertices, adjacency matrices, incidence matrices, and graph traversals. Finally, it provides an explanation of the depth-first search algorithm for traversing graphs.
2. What is a Graph?
• Intuitively, a graph is a collection of vertices (or nodes) and
the connections between them
• Generally, no restriction is imposed on the number of vertices
in the graph or on the number of connections one vertex can
have to other vertices
3. A Simple Graph
• A simple graph G = (V, E) consists of a nonempty set V of
vertices and a possibly empty set E of edges, each edge being a
set of two vertices from V
• |V| = Number of vertices
• |E| = Number of edges
4. A Directed Graph
• A directed graph, or digraph, G = (V, E) consists of a
nonempty set V of vertices and a set E of edges (also called
arcs), where each edge is pair of vertices from V
• The difference is that one edge of a simple graph is of the
form {vi, vj}, and in this case, (vi, vj) != (vj , vi)
5. A Multi Graph
• Above definitions are restrictive in that they do not allow for
two vertices to have more than one edge
• A multi graph is graph in which two vertices can be joined by
multiple edges
• Formal Definition: A multi graph G = (V, E, f) is composed of
a set of vertices V, a set of edges E, and a function
f: E{(vi, vj): (vi, vj in V) and (vi != vj)}
6. A Pseudo Graph
• A pseudo graph is a multi graph with the condition vi != vj
removed, which allows for loops to occur
• In a pseudo graph, a vertex can be joined with itself by an edge
7. A Path
• A path from v1 to vn is a sequence of edges edge(v1v2),
edge(v2v3), . . . , edge(vn-1vn) and is denoted as path v1, v2, v3, .
. . , vn-1, vn
• If v1 = v2 and no edge is repeated, then the path is called a
circuit
• If all vertices in a circuit are different, then it is called a cycle
8. A Weighted Graph
• A graph is called a weighted graph if each edge has an
assigned number
• Depending on the context in which such graphs are used, the
number assigned to an edge is called it weight, cost, distance,
length, or some other name
9. A Complete Graph
• A graph with n vertices is called complete and is denoted K n if
for each pair of distinct vertices there is exactly one edge
connecting them
• The number of edges in such a graph
|E| = |V|*(|V| - 1)*0.5
10. A Sub Graph
• A sub graph G’ of graph G = (V, E) is a graph (V’, E’) such
that V’ is a subset of V and E’ is a subset of E
• A sub graph induced by vertices V’ is a graph (V’, E’) such
that and edge e in E if e in E’
11. Adjacent? Incident?
• Two vertices vi and vj are called adjacent if the edge(vivj) is in
E
• Such an edge is called incident with the vertices vi and vj
12. The Degree of a Vertex
• The degree of a vertex v, deg(v), is the number of edges
incident with v
• If deg(v) = 0, then v is called an isolated vertex
13. Adjacency Matrix
• An adjacency matrix of graph G = (V, E) is a binary |V|*|V|
matrix such that each entry of this matrix
a ij
1; if there exists an edge(vivj)
0; otherwise
14. Incidence Matrix
• An incidence matrix of graph G = (V, E) is a |V|*|E| matrix
such that each entry of this matrix
a ij
1; if edge ej is incident with vertex vi
0; otherwise
15. Graph Traversals
• Traversing a graph consists of visiting each vertex only one
time
• Graphs may include cycles that can cause infinite loops
• To prevent infinite loops each visited vertex can be marked to
avoid revisiting it
• Graphs can have isolated vertices
• To visit those isolated vertices special mechanisms are needed
• The Depth First Search algorithm is a well known algorithm
for traversing graphs
16. Depth First Search Algorithm
• Each vertex v is visited and then each unvisited vertex
adjacent to v is visited
• If a vertex v has no adjacent vertices or all of its adjacent
vertices have been visited, we backtrack to the predecessor of
v
• The traversal is finished if this visiting and backtracking
process leads to the first vertex where the traversal started
• If there is still some unvisited vertices in the graph, the
traversal continues restarting for one of the unvisited vertices
• The algorithm assigns a unique number to each accessed
vertex so that vertices are now renumbered
17. Depth First Search Algorithm
depthFirstSearch()
for all vertices v
num(v) = 0;
edges = null;
i = 1;
while there is a vertex v such that num(v) is 0
DFS(v);
output edges;
18. Depth First Search Algorithm
DFS(v)
num(v) = i++;
for all vertices u adjacent to v
if num(u) is 0
attach edge(uv) to edges;
DFS(u);