Graph Algorithms

Post on 16-Dec-2022

1 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

Transcript

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

Reference

Any Questions?

Thank You!

top related