This preview shows pages 1–3. Sign up to view the full content.
2/10/2009
1
COMPUTER SCIENCE 51
Spring 2009
cs51.seas.harvard.edu
Prof. Greg Morrisett
Prof. Ramin Zabih
Graph (undirected)
Graph (directed)
Google search:
Harvard
CS 51
harvard.edu
Greg
Morrisett
SEAS home
page
CS 51
Courses of
Instruction
Undirected
graph
Why care about graphs?
•
Graphs are everywhere
–
Clever solutions to computational
problems are often “find the graph”
•
Example: class scheduling w/o conflicts
–
Many programming contests!
•
Finding the graph problem can:
–
Give you a fast solution, or
–
Show there isn’t one
•
So you need to redefine your problem!
Basic graph terminology
•
Graph: set of nodes and edges
–
Aka vertices and links
•
Formally: a set plus a pairing relation
•
How it’s drawn doesn’t
matter!
•
Neighbors (friends), paths (chains of
friends), cycles (paths with repeats)
–
Two connected nodes have a path
•
Connected set: all pairs connected
–
Component if maximal
•
Clique: all pairs are neighbors
What can graphs represent
•
Almost anything!
•
Nodes can be:
–
Physical objects (people, circuits)
–
Computational objects (web pages)
–
Places (cities, buildings, rooms)
–
States of affairs (eating, sleeping)
–
ETC, ETC
This preview has intentionally blurred sections. Sign up to view the full version.
View Full Document2/10/2009
2
Example: class scheduling
•
Some pairs of classes meet at the
same time (ex: CS51, CS161)
–
Given a set of conflicting classes, how
many courses can you possibly take?
–
Is there a fast way to solve this problem?
•
An independent set is a set of nodes
where no pair is a neighbor
–
Sort of the “complement” of a clique
Scheduling via graphs
•
Each course is a node
–
An edge means the courses conflict
•
An independent set is a schedule
–
A set of nonconflicting classes
•
Could take K classes iff the graph has
This is the end of the preview. Sign up
to
access the rest of the document.
 Spring '09
 GREGMORRISETT

Click to edit the document details