Top Banner
Graph Algorithms Kasun Ranga Wijeweera (Email: [email protected])
21

Graph Algorithms

Dec 16, 2022

Download

Documents

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Graph Algorithms

Graph Algorithms

Kasun Ranga Wijeweera(Email:

[email protected])

Page 2: Graph Algorithms

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

Page 3: Graph Algorithms

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

Page 4: Graph Algorithms

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)

Page 5: Graph Algorithms

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

Page 6: Graph Algorithms

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

Page 7: Graph Algorithms

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

Page 8: Graph Algorithms

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

Page 9: Graph Algorithms

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

Page 10: Graph Algorithms

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’

Page 11: Graph Algorithms

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

Page 12: Graph Algorithms

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

Page 13: Graph Algorithms

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

Page 14: Graph Algorithms

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

Page 15: Graph Algorithms

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

Page 16: Graph Algorithms

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

Page 17: Graph Algorithms

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;

Page 18: Graph Algorithms

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

Page 19: Graph Algorithms

Reference

Page 20: Graph Algorithms

Any Questions?

Page 21: Graph Algorithms

Thank You!