© 2006 pearson addison-wesley. all rights reserved14 a-1 chapter 14 graphs
Post on 19-Dec-2015
218 views
TRANSCRIPT
© 2006 Pearson Addison-Wesley. All rights reserved 14 A-1
Chapter 14
Graphs
© 2006 Pearson Addison-Wesley. All rights reserved 14 A-2
Terminology
• G = {V, E}• A graph G consists of two sets
– A set V of vertices, or nodes– A set E of edges
• A subgraph– Consists of a subset of a graph’s vertices and a subset
of its edges
• Adjacent vertices– Two vertices that are joined by an edge
© 2006 Pearson Addison-Wesley. All rights reserved 14 A-3
Terminology
Figure 14-2Figure 14-2
a) A campus map as a graph; b) a subgraph
© 2006 Pearson Addison-Wesley. All rights reserved 14 A-4
Terminology
• A path between two vertices– A sequence of edges that begins at one vertex and ends at
another vertex– May pass through the same vertex more than once
• A simple path– A path that passes through a vertex only once
• A cycle– A path that begins and ends at the same vertex
• A simple cycle– A cycle that does not pass through a vertex more than once
© 2006 Pearson Addison-Wesley. All rights reserved 14 A-5
Terminology
• A connected graph– A graph that has a path between each pair of distinct
vertices
• A disconnected graph– A graph that has at least one pair of vertices without a
path between them
• A complete graph– A graph that has an edge between each pair of distinct
vertices
© 2006 Pearson Addison-Wesley. All rights reserved 14 A-6
Terminology
Figure 14-3Figure 14-3
Graphs that are a) connected; b) disconnected; and c) complete
© 2006 Pearson Addison-Wesley. All rights reserved 14 A-7
Terminology
• Multigraph– Not a graph– Allows multiple edges between vertices
Figure 14-4Figure 14-4
a) A multigraph is not a graph;
b) a self edge is not allowed in a
graph
© 2006 Pearson Addison-Wesley. All rights reserved 14 A-8
Terminology
• Weighted graph– A graph whose edges have numeric labels
Figure 14-5aFigure 14-5a
a) A weighted graph
© 2006 Pearson Addison-Wesley. All rights reserved 14 A-9
Terminology
• Undirected graph– Edges do not indicate a direction
• Directed graph, or diagraph– Each edge is a directed edge
Figure 14-5bFigure 14-5b
b) A directed graph
© 2006 Pearson Addison-Wesley. All rights reserved 14 A-10
Terminology
• Directed graph– Can have two edges between a pair of vertices, one in
each direction
– Directed path
• A sequence of directed edges between two vertices
– Vertex y is adjacent to vertex x if
• There is a directed edge from x to y
© 2006 Pearson Addison-Wesley. All rights reserved 14 A-11
A Quick Tangent
The Traveling Salesperson
... and every other hard problem in computing...
© 2006 Pearson Addison-Wesley. All rights reserved 14 A-12
The Traveling Salesperson Problem
• A Hamilton circuit is a cycle that visits every vertex in a graph exactly once
• The T.S.P. asks us to find a minimal cost Hamilton circuit in a weighted, directed graph– idea: a salesperson trying to find the cheapest
route between all cities on a map
© 2006 Pearson Addison-Wesley. All rights reserved 14 A-14
How to solve it?
• The easiest solution is to simply try all possibilities.
• Problem:– Suppose there are N cities, all connected– Then there are N! possible paths– For 10 cities: about 3.5 million combinations– For 100 cities: 9.33262154 × 10157
© 2006 Pearson Addison-Wesley. All rights reserved 14 A-15
How to solve it?
• Branch and bound algorithms:– Divide and conquer principle– Partition cities into sub-regions (branch)– Find bounds on all the solutions contained in
each sub-region
• Exact solution is possible... for around 50-100 cities
© 2006 Pearson Addison-Wesley. All rights reserved 14 A-16
Can we solve it quickly?
• What do we mean by quickly?
• We know that about O(n), O(n2), ...
• A problem is solvable in polynomial time if it is in O(nk) for some k
• In theoretical computing science, polynomial time problems are considered “tractable”
© 2006 Pearson Addison-Wesley. All rights reserved 14 A-17
Can we solve it quickly?
• Quick answer: no
• More accurate answer: probably not
• Actual answer:– There is no known polynomial solution to TSP– But it is more interesting...
© 2006 Pearson Addison-Wesley. All rights reserved 14 A-18
Finding Versus Checking
• There is a difference between finding solutions and checking solutions
• Consider:– Find all students at SFU with green eyes– Take a random set of SFU students, check if
they all have green eyes
© 2006 Pearson Addison-Wesley. All rights reserved 14 A-19
P versus NP
• The set of problems solvable in polynomial time is called P
• The set of problems that are “verifiable” in polynomial time is called NP
• (this is skipping over A LOT of details)
© 2006 Pearson Addison-Wesley. All rights reserved 14 A-20
Is P=NP?
• This is unknown, but it is widely considered to be the most important problem in theoretical computer science
• Why so important?– Among other things... if P=NP... then virtually
all modern cryptosystems are “easily” breakable
© 2006 Pearson Addison-Wesley. All rights reserved 14 A-21
What about TSP?
• TSP is in NP... you can efficiently check if a solution is optimal
• What’s more: EVERY problem in NP is equivalent to TSP
• So: A polynomial time solution to TSP would prove that P=NP
© 2006 Pearson Addison-Wesley. All rights reserved 14 A-22
What does this mean for you?
• Fame and fortune?– Yes... see Andrew Wiles cover photo on Time
magazine for Fermat’s last theorem– Also there is a $1 million prize for a solution
• At this point, people take it for granted that the answer is “No”... but a proof is still a big, big deal to many people
© 2006 Pearson Addison-Wesley. All rights reserved 14 A-23
Graphs As ADTs
• Graphs can be used as abstract data types• Two options for defining graphs
– Vertices contain values– Vertices do not contain values
• Operations of the ADT graph– Create an empty graph– Determine whether a graph is empty– Determine the number of vertices in a graph– Determine the number of edges in a graph
© 2006 Pearson Addison-Wesley. All rights reserved 14 A-24
Graphs As ADTs
• Operations of the ADT graph (Continued)– Determine whether an edge exists between two given
vertices; for weighted graphs, return weight value– Insert a vertex in a graph whose vertices have distinct
search keys that differ from the new vertex’s search key– Insert an edge between two given vertices in a graph– Delete a particular vertex from a graph and any edges
between the vertex and other vertices– Delete the edge between two given vertices in a graph– Retrieve from a graph the vertex that contains a given
search key
© 2006 Pearson Addison-Wesley. All rights reserved 14 A-25
Implementing Graphs
• Most common implementations of a graph– Adjacency matrix– Adjacency list
• Adjacency matrix– Adjacency matrix for a graph with n vertices numbered
0, 1, …, n – 1• An n by n array matrix such that matrix[i][j] is
– 1 (or true) if there is an edge from vertex i to vertex j– 0 (or false) if there is no edge from vertex i to vertex j
© 2006 Pearson Addison-Wesley. All rights reserved 14 A-26
Implementing Graphs
Figure 14-6Figure 14-6
a) A directed graph and b) its adjacency matrix
© 2006 Pearson Addison-Wesley. All rights reserved 14 A-27
Implementing Graphs
• Adjacency matrix for a weighted graph with n vertices numbered 0, 1, …, n – 1– An n by n array matrix such that matrix[i][j] is
• The weight that labels the edge from vertex i to vertex j if there is an edge from i to j
if there is no edge from vertex i to vertex j
Figure 14-7Figure 14-7
a) A weighted undirected
graph and b) its
adjacency matrix
© 2006 Pearson Addison-Wesley. All rights reserved 14 A-28
Implementing Graphs
• Adjacency list– An adjacency list for a graph with n vertices numbered
0, 1, …, n – 1• Consists of n linked lists• The ith linked list has a node for vertex j if and only
if the graph contains an edge from vertex i to vertex j
– This node can contain either» Vertex j’s value, if any» An indication of vertex j’s identity
© 2006 Pearson Addison-Wesley. All rights reserved 14 A-29
Implementing Graphs
Figure 14-8Figure 14-8
a) A directed graph and
b) its adjacency list
© 2006 Pearson Addison-Wesley. All rights reserved 14 A-30
Implementing Graphs
• Adjacency list for an undirected graph– Treats each edge as if it were two directed edges in opposite
directions
Figure 14-9Figure 14-9
a) A weighted undirected graph and b) its adjacency list
© 2006 Pearson Addison-Wesley. All rights reserved 14 A-31
Implementing Graphs
• Adjacency matrix compared with adjacency list– Two common operations on graphs
• Determine whether there is an edge from vertex i to vertex j
• Find all vertices adjacent to a given vertex i
– Adjacency matrix• Supports operation 1 more efficiently
– Adjacency list• Supports operation 2 more efficiently
• Often requires less space than an adjacency matrix
© 2006 Pearson Addison-Wesley. All rights reserved 5 B-32
Implementing a Graph Class Using the JCF
• ADT graph not part of JCF• Can implement a graph using an adjacency list
consisting of a vector of maps• Implementation presented uses TreeSet class
© 2006 Pearson Addison-Wesley. All rights reserved 14 A-33
Graph Traversals
• A graph-traversal algorithm– Visits all the vertices that it can reach– Visits all vertices of the graph if and only if the graph is
connected• A connected component
– The subset of vertices visited during a traversal that begins at a given vertex
– Can loop indefinitely if a graph contains a loop• To prevent this, the algorithm must
– Mark each vertex during a visit, and – Never visit a vertex more than once
© 2006 Pearson Addison-Wesley. All rights reserved 14 A-34
Graph Traversals
Figure 14-10Figure 14-10
Visitation order for a) a depth-first search; b) a breadth-first search
© 2006 Pearson Addison-Wesley. All rights reserved 14 A-35
Exercise
• Give the adjacency matrix & list for this graph:
a
b
d
e
fc
© 2006 Pearson Addison-Wesley. All rights reserved 14 A-36
Adjacency Matrix
A B C D E F
A 0 1 1 0 0 0
B 1 0 1 0 0 0
C 1 1 0 1 1 1
D 0 0 1 0 0 1
E 0 0 1 0 0 0
F 0 0 1 1 0 0
© 2006 Pearson Addison-Wesley. All rights reserved 14 A-37
Adjacency List
B C
A C
A B D E F
C F
C
C D
A
B
C
D
E
F
© 2006 Pearson Addison-Wesley. All rights reserved 14 A-38
Exercise
• Consider the graph in figure 14-6 (and 14-8). Show that the adjacency matrix for this graph requires more memory than the adjacency list.
© 2006 Pearson Addison-Wesley. All rights reserved 14 A-39
Solution
Suppose each integer require m bytes and assume that addresses are stored as integers.
The size of the adjacency matrix is then: (9 * 9)m = 81m bytes.
The adjacency list requires an array of 9 addresses of size m plus ten nodes each composed of an integer for storing the vertex name and another integer for the address of the next node (if any):
9m + (10 * 2)m = 29m bytes.