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
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
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)
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 functionf: E{(vi, vj): (vi, vj in V) and (vi != vj)}
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
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
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
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
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’
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
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
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
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
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
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
Depth First Search AlgorithmdepthFirstSearch()for all vertices vnum(v) = 0;edges = null;i = 1;while there is a vertex v such that num(v) is 0DFS(v);output edges;
Depth First Search AlgorithmDFS(v)num(v) = i++;for all vertices u adjacent to v
if num(u) is 0attach edge(uv) to edges;DFS(u);