Graph Theory Lecture 2:
Isomorphisms
Isomorphisms
When are two graphs
"the same"?
Definition of an isomorphism
An isomorphism φ:G→H of graphs is:
- A bijection φV:V(G)→V(H)
- A bijection φE:E(G)→E(H)
That "play nicely together", i.e.:
If e∈E(G) connects u and v, then φE(e)∈E(H) connects φV(u) and φV(v).
- We say G and H are isomorphic if there is an isomorphism between them.
- If G and H are simple, then G and H are isomorphic if and only if there is a bijection φ that preserves the number of edges between vertices; that is, so that φ(v) and φ(w) are adjacent if and only if v and w were adjacent.
- This breaks down if G and/or H have multiple edges. (why?)
- Our original definition of isomorphism is arguably slightly wrong if G and H have loops. (Why?)
The isomorphism problem:
Given two graphs G and H, either find an isomorphism φ:G→H, or prove such an isomorphism doesn't exist.
In general, this is a very important, deep and difficult question. In practice, it's not too bad for small graphs, and you will need to be able to do this for the exam.
A little mathematical culture
The isomorphism problem is of fundamental importance to theoretical computer science.
- Practical applications
- It's in NP, but not known to be NP complete or in P
How to prove two graphs are isomorphic?
Write down an isomorphism!
An obvious question...
How to write down an isomorphism?
- Usually not best to write down φV as list
- Depends on how graphs are given to you
- If given as unlabeled drawings, easiest to redraw as given and record φV by labeling graphs with same symbols
How to find an isomorphism?
One useful method -- expanding "local" isomorphisms.
- Find a part A⊂G that (would have to / could) map to a part B⊂H
- Things adjacent to A need to map to things adjacent to B
- Continue expanding what we know of bijection
If graphs are symmetric, need to make an arbitrary choice to break the symmetry