Sie sind auf Seite 1von 21

Graph Algorithms

Kasun Ranga Wijeweera (Email: krw19870829@gmail.com)

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 function f: 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

1; if there exists an edge(vivj)

a ij 0; otherwise

Incidence Matrix
An incidence matrix of graph G = (V, E) is a |V|*|E| matrix such that each entry of this matrix

1; if edge ej is incident with vertex vi

a ij 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 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;

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);

Reference

Any Questions?

Thank You!

Das könnte Ihnen auch gefallen