Document 6591849
Transcription
Document 6591849
CSE 246
Data Structures and Algorithms
Graphs
Graph data structure
Graph is an ADT.
A graph is a set of vertices and edges
𝐺 = {𝑉, 𝐸}
𝑉={v1,v2,v3,…,vn},
𝐸={e1,e2,e3,…,en}
An Edge connects exactly two vertices.
A vertex can have any number of edges connected to it.
2
Quratulain
Graphs
Edge might be directed or undirected.
Weighted graphs. Additional information on edges.
3
Quratulain
Terms to remember
graph
path
vertex (pl vertices)
cycle
edge
Hamiltonian
edge cost
Eulerian
undirected graph
planar graph
directed graph
acyclic directed graph
simple graph
forest
loop
tree
Graph Applications
Modelling a road network with vertexes as towns and edge costs as
distances.
Modelling a water supply network. A cost might relate to current
or a function of capacity and length. As water flows in only 1 direction,
from higher to lower pressure connections or downhill, such a network
is inherently an acyclic directed graph.
Internet traffic modelling. Dynamically modelling the status of a
set of routes by which traffic might be directed over the Internet.
Flight scheduling. Minimising the cost and time taken for air travel
when direct flights don't exist between starting and ending airports.
Using a directed graph to map the links between pages within a
website and to analyse ease of navigation between different parts of the
site.
Graph Applications
The Seven Bridges of Königsberg is a problem inspired by an
actual place and situation.
The question is whether it is possible to walk with a route
that crosses each bridge exactly once, and return to the
starting point. In 1736, Leonhard Euler proved that it was
not possible."
Source: http://en.wikipedia.org/wiki/Seven_Bridges_of_Koenigsberg
6
Quratulain
Three cottage problem
Source: http://en.wikipedia.org/wiki/Three_cottage_problem
"The three cottage problem is a well-known mathematical
puzzle. It can be stated like this:
Suppose there are three cottages on a plane (or sphere) and
each needs to be connected to the gas, water, and electric
companies. Is there a way to do so without any of the lines
crossing each other?"
Three cottage problem
"The three cottage problem is a well-known mathematical
puzzle. It can be stated like this:
Suppose there are three cottages on a plane (or sphere) and
each needs to be connected to the gas, water, and electric
companies. Is there a way to do so without any of the lines
crossing each other?"
Source: http://en.wikipedia.org/wiki/Three_cottage_problem
8
Quratulain
Data structure to store Graphs
To select data structure for graph:
First programmer need to understand the application data.
Then construct a graph.
The choice and design of data structure(s) will influence and be
influenced by program performance and memory usage
requirements.
9
Quratulain
Data structures to store graph
Adjacency list
Adjacency matrix.
Incident list
Source:
http://interactivepython.org/courselib/static/pythonds/Graphs/graphintro.html
10
Quratulain
Adjacency matrix
implement a graph is to use a two-dimensional matrix.
11
Quratulain
Adjacency list
A more space-efficient way to implement a sparsely
connected graph is to use an adjacency list
12
Quratulain
Graph search algorithms
Breadth first search
Depth first search
13
Quratulain
Depth first search
The depth-first search uses a stack to remember where it
should go when it reaches a dead end.
14
Quratulain
Depth first search Example
Knight’s tour graph
15
Quratulain
Breadth first search
the algorithm likes to stay as close as possible to the starting
point. It visits all the vertices adjacent to the starting vertex,
and only then goes further. This kind of search is
implemented using a queue
16
Quratulain
Breadth first search Example
Word ladder graph
17
Quratulain
Graph Analysis
18
Quratulain