Section 13 - Cornell Computer Science

Section 13
Questions
Questions
Graphs
Graphs
A graph representation:
– Adjacency matrix.
• Pros:?
• Cons:?
– Neighbor lists.
• Pros:?
• Cons:?
Graphs
A graph representation:
– Adjacency matrix.
• Pros: O(1) check if u is a neighbor
of v.
• Cons:Consumes lots of memory for
sparse graphs. Slow in finding all
neighbors.
– Neighbor lists.
• Pros:Consume little memory, easy
to find all neighbors.
• Cons:Check if u is a neighbor of v
can be expensive.
Graphs
In practice, usually neighbor
lists are used.
Some graphs we often
meet.
Acyclic - no cycles.
Directed, undirected.
Directed, acyclic graph = dag.
Topological sorting
A problem: Given a dag G
determine the ordering of the
vertices such that v precedes u
iff there is an edge (v, u) in G.
Algorithm: Take out the vertice
with no incoming edges along
with its edges, put in the
beginning of a list, repeat while
necessary.
Implementation?
Topological sorting
More descriptive description:
1. For each vertice v compute
count[v] - the number of
incoming edges.
2. Put all the vertices with
count[v] = 0 to the stack
3. repeat: Take top element v
from the stack, decrease
count[u] for its neighbors u.
Topological sorting
Implementation:
1. Use DFS/BFS to compute
count.
2. Complexity?
O(E + V) - 1. takes E, the loop
is executed V times, the
number of operations inside
loop sums up to E.
Topological sorting
Applications:
– Job scheduling.
The bridges of
Konigsberg
The bridges of
Konigsberg
In 1735 Leonard Euler asked
himself a question.
Is it possible to walk around
Konigsberg walking through
each bridge exactly once?
The brid(g)es of
Konigsberg
The bridges of
Konigsberg
It’s not possible!
It’s a graph problem!
Euler’s theorem
The Euler circuit passes
through each edge in the graph
only once and returns to the
starting point.
Theorem: The graph has an
Euler circuit iff every vertice
has even degree. (the number
of adjacent vertices)
Euler’s circuit
How to check if there’s one?
Hamiltonian’s circuit
A cycle which passes through
vertice only once.
How to find one efficiently?
Hamiltonian’s cycle
Nobody knows!!!
REWARD!!!
$1000000
is offered to anyone who finds an
efficient algorithm for finding
Hamiltonian cycle in a graph.
DEAD OR ALIVE