Izomorfismus obecných grafů a stromů
LAB 05
B4M33PAL - Ing. David Pařil
Příklad
Izomorfizmus Cyklu
Máme dvě neorientované kružnice stejné délky \(k > 2\).
Kolik mezi nimi existuje izomorfismů?
Řešení
Pro kružnici (cyklus) s \(k>2\) obsahuje grupa automorgismů:
1) \(k\) rotací
2) \(k\) zrcadlení (reverzí)
Příklad
Izomorfizmy grafů
Určete počet izomorfismů mezi grafy \(G_1\) a \(G_2\).
Graf \(G_1\)
Graf \(G_2\)
Určete počet izomorfismů mezi grafy \(G_1\) a \(G_2\).
Určete počet izomorfismů mezi grafy \(G_1\) a \(G_2\).
Máme 4 vrcholy stupně 2 a 4 vrcholy stupně 3.
Zvolíme obraz jednoho koncového vrcholu v \(G_2\) - jsou 4 možnosti. Jakmile je zvolen, obraz jeho partnera v páru i všech dalších vrcholů je už jednoznačně určen.
Tedy počet izomorfizmů = 4.
Izomorfizmus
Příklad
Neizomorfní bijekce - Část 1
Kolik je takových bijekcí mezi uzly grafů \(G_1\) a \(G_2\) na obrázku níže, které nejsou izomorfismy?
5
1
2
3
4
a
b
c
d
e
\(G_1\)
\(G_2\)
Řešení
Oba grafy mají stejnou stupňovou posloupnost \(3, 3, 2, 2, 2,\).
Střecha (stupeň 2 sousedící s dvěmi stupni 3) určuje zobrazení \(4 \rightarrow e\).
Vrcholy stupně 3 lze vzájemně zobrazit 2 způsoby (prohození).
Vrcholy stupně 2 se pak jednoznačně přizpůsobí.
5
1
2
3
4
a
b
c
d
e
5
1
2
3
4
a
b
c
d
e
Počet izomorfismů:
Počet bijekcí:
Počet neizomorfismů:
\(2\)
\(5! = 120\)
\(120 - 2 = 118\)
Příklad
Neizomorfní bijekce - Část 2
Kolik je takových bijekcí mezi uzly grafů \(G_1\) a \(G_2\) na obrázku níže, které nejsou izomorfizmy?
3
5
6
8
4
7
1
2
\(G_1\)
e
a
b
c
d
f
g
h
\(G_2\)
Jediný vrchol stupně 7 je pevný.
Tři listy stupně 1 lze libovolně permutovat \(\rightarrow 3! = 6\) možností.
Čtyři vrcholy stupně 2 tvoří dvě nerozlišitelné hrany:
- 4 volby pro první node (např. \(5 \rightarrow g/h/a/b\))
- 2 možnosti prohození druhé hrany
Celkem tedy \(8! - 6 \times 8 = 40320 - 48 = 40272\)
3
5
6
8
4
7
1
2
e
a
b
c
d
f
g
h
Příklad
Neizomorfní bijekce - Část 3
Kolik je takových bijekcí mezi uzly grafů \(G_1\) a \(G_2\) na obrázku níže, které nejsou izomorfizmy?
e
a
b
f
d
c
3
5
4
2
1
6
\(G_1\)
\(G_2\)
Řešení
Oba grafy jsou obyčejný cyklus \(C_6\) \(\rightarrow\) každý vrchol má stupeň 2
Z prvního příkladu již víme, že izomorfismů tedy máme \(2 \cdot 6 = 12\)
Počet bijekcí, které nejsou izomorfismy je tedy \(720-12 = \textbf{708}\)
e
a
b
f
d
c
3
5
4
2
1
6
Příklad
Neizomorfní bijekce - Část 4
Kolik je takových bijekcí mezi uzly grafů \(G_1\) a \(G_2\) na obrázku níže, které nejsou izomorfizmy?
1
2
3
4
5
8
7
6
e
d
b
g
a
c
h
f
\(G_1\)
\(G_2\)
Řešení
Oba grafy jsou izomorfní. Mají stupně:
- \(2\times\) stupeň 5
- \(2\times\) stupeň 2 sousedící s oběma stupni 5
- \(2\times\) stupeň 2 tvořící hrany připojené na jeden ze stupňů 5
1
2
3
4
5
8
7
6
e
d
b
g
a
c
h
f
Oba grafy jsou izomorfní. Mají stupně:
- \(2\times\) stupeň 5
- \(2\times\) stupeň 2 sousedící s oběma stupni 5
- \(2\times\) stupeň 2 tvořící hrany připojené na jeden ze stupňů 5
1
2
3
4
5
8
7
6
e
d
b
g
a
c
h
f
Automorfismus musí zachovat tyto třídy, máme následující možnosti:
- 2️⃣ prohodit či neprohodit \(\textcolor{red}4 \leftrightarrow \textcolor{red}5\)
- 2️⃣ prohodit či neprohodit \(2 \leftrightarrow 7\)
- 2️⃣ prohodit či neprohodit \(1 \leftrightarrow 6\)
- 2️⃣ prohodit či neprohodit \(3 \leftrightarrow 8\)
1
2
3
4
5
8
7
6
e
d
b
g
a
c
h
f
Automorfismus musí zachovat tyto třídy, máme následující možnosti:
- 2️⃣ prohodit či neprohodit \(\textcolor{red}4 \leftrightarrow \textcolor{red}5\)
- 2️⃣ prohodit či neprohodit \(2 \leftrightarrow 7\)
- 2️⃣ prohodit či neprohodit \(1 \leftrightarrow 6\)
- 2️⃣ prohodit či neprohodit \(3 \leftrightarrow 8\)
Neizomorfismů je tedy: \(8! - 2 \cdot 2 \cdot 2 \cdot 2 = 40320 - 16 = \textbf{40304} \)
Příklad
Asymptotická složitost speciálního izomorfismu
Máme dány dva neorientované grafy, každý obsahuje právě \(n\) uzlů a oba grafy mají skóre
$$(n─1, n─2, n─3, n─4, ..., \frac n 2+1, \frac n 2, \frac n 2, \frac n 2─1, \frac n 2─2, ..., 3, 2, 1)$$
to jest skoro všechny uzly grafu mají navzájem různý stupeň, s výjimkou dvou uzlů, které mají stejný stupeň \(\frac n 2\).
Jaká bude asymptotická složitost ověření izomorfizmu těchto dvou grafů v závislosti na hodnotě \(n\)?
Řešení
Stupně jsou téměř všechny různé, takže korespondence vrcholů je daná jednoznačně pro \(n−2\) vrcholů. Nejednoznačné zůstávají jen dva vrcholy.
Pro jednoznačné přiřazení stačí ověřit, že se každá hrana \(G_1\) promítá na hranu \(G_2\):
$$m = \frac 1 2 \sum deg = \frac 1 2 \left( \sum_{k=1}^{n-1} k + \frac n 2 \right) = \frac 1 2 \left(\frac{n(n-1)}{2} + \frac n 2 \right) = \frac{n^2}{4} = O(n^2)$$
Dvě možnosti přiřazení jsou jen konstantní faktor \(\rightarrow\) asymptotická složitost testu izomorfismu je \(O(n^2)\)
Příklad
počet izomorfizmů s využitím deskriptorů
Předveďte postup určování počtu izomorfizmů pro následující dvojice grafů s využitím deskriptorů:
$$\begin{aligned} D_1(G,x) &= \deg_G(x),\\[2pt] D_2(G,x) &= \bigl[d_j(x) :\; j=1,2,\ldots,\max\{\deg_G(x): x\in V(G)\}\bigr],\\ &\quad \text{kde } d_j(x)=\bigl|\{\, y : y \text{ sousedí s } x \text{ a } \deg_G(y)=j \,\}\bigr|. \end{aligned}$$
Předveďte postup určování počtu izomorfizmů pro následující dvojice grafů s využitím deskriptorů:
$$\begin{aligned} D_1(G,x) &= \deg_G(x),\\[2pt] D_2(G,x) &= \bigl[d_j(x) :\; j=1,2,\ldots,\max\{\deg_G(x): x\in V(G)\}\bigr],\\ &\quad \text{kde } d_j(x)=\bigl|\{\, y : y \text{ sousedí s } x \text{ a } \deg_G(y)=j \,\}\bigr|. \end{aligned}$$
5
1
2
3
4
a
b
c
d
e
\(G_1\)
\(G_2\)
5
1
2
3
4
a
b
c
d
e
| x | D1(G1,x) | D2(G1,x) |
|---|---|---|
| 1 | 2 | [0,1,1] |
| 2 | 2 | [0,1,1] |
| 3 | 3 | [0,2,1] |
| 4 | 2 | [0,0,2] |
| 5 | 3 | [0,2,1] |
| x | D1(G1,x) | D2(G1,x) |
|---|---|---|
| a | 3 | [0,2,1] |
| b | 2 | [0,1,1] |
| c | 2 | [0,1,1] |
| d | 3 | [0,2,1] |
| e | 2 | [0,0,2] |
| x | D1(G1,x) | D2(G1,x) |
|---|---|---|
| 1 | 2 | [0,1,1] |
| 2 | 2 | [0,1,1] |
| 3 | 3 | [0,2,1] |
| 4 | 2 | [0,0,2] |
| 5 | 3 | [0,2,1] |
| x | D1(G1,x) | D2(G1,x) |
|---|---|---|
| a | 3 | [0,2,1] |
| b | 2 | [0,1,1] |
| c | 2 | [0,1,1] |
| d | 3 | [0,2,1] |
| e | 2 | [0,0,2] |
1) Z našich tabulek vyjdou shodné třídy:
-
{4}↔{e} \{4\}\leftrightarrow\{e\}\(\lbrace 4 \rbrace \leftrightarrow \lbrace e \rbrace \) (vektor [0,0,2][0,0,2][0,0,2]),
-
\(\lbrace 3,5 \rbrace \leftrightarrow \lbrace a,d \rbrace \) (vektor [0,2,1][0,2,1][0,2,1]),
-
{3,5}↔{a,d} \{3,5\}\leftrightar
-
{1,2}↔{b,c} \{1,2\}\leftrightarrow\{b,c\}\(\lbrace 1,2 \rbrace \leftrightarrow \lbrace b,c \rbrace \) (vektor [0,1,1][0,1,1][0,1,1]).
2) Dopočítej počet izomorfismů:
- 1️⃣ \(\lbrace 4 \rbrace \rightarrow \lbrace e \rbrace \)
- 2️⃣\(\lbrace 3,5 \rbrace \rightarrow \lbrace a,d \rbrace \) lze prohodit
- 1️⃣\(\lbrace 1,2 \rbrace \rightarrow \lbrace b,c \rbrace \) jednoznačné
Příklad
Izomorfní iluze
Popište, jak budete co nejefektivněji rozhodovat, zda dva uvedené grafy jsou nebo nejsou izomorfní.
Rozložme podle \(D_1\) i podle \(D_2\) (počty vrcholů ve vzdálenostech 1–3)
| x | D1(G1,x) | D2(G1,x) |
|---|---|---|
| 1 |
4 | 4,6,4 |
| 2 | 4 | 4,6,4 |
| 3 | 4 | 4,6,4 |
| 4 | 6 | 6,8,0 |
| 5 | 6 | 6,8,0 |
| 6 | 6 | 6,8,0 |
| 7 | 2 | 2,6,6 |
| 8 | 2 | 2,6,6 |
| 9 | 2 | 2,6,6 |
| 10 | 4 | 4,6,4 |
| 11 | 4 | 4,6,4 |
| 12 | 4 | 4,6,4 |
| 13 | 2 | 2,6,6 |
| 14 | 2 | 2,6,6 |
| 15 | 2 | 2,6,6 |
| x | D1(G2,x) | D2(G2,x) |
|---|---|---|
| 1 | 4 | 4,6,4 |
| 2 | 4 | 4,6,4 |
| 3 | 4 | 4,6,4 |
| 4 | 6 | 6,8,0 |
| 5 | 6 | 6,8,0 |
| 6 | 6 | 6,8,0 |
| 7 | 2 | 2,6,6 |
| 8 | 2 | 2,6,6 |
| 9 | 2 | 2,6,6 |
| 10 | 4 | 4,6,4 |
| 11 | 4 | 4,6,4 |
| 12 | 4 | 4,6,4 |
| 13 | 2 | 2,6,6 |
| 14 | 2 | 2,6,6 |
| 15 | 2 | 2,6,6 |


Všechno je stejný 😎👍
Přesto grafy nejsou izomorfní 😭
Vpravo existuje 6-cyklus obsahující dva vrcholy stupně 2 ve vzdálenosti 2
Vlevo existuje 6-cyklus obsahující dva vrcholy stupně 2 ve vzdálenosti 3
Grafy nemohou být izomorfní!
Nyní bychom mohli vyzkoušet některé další invariantní indukující funkce, jako např. stupně uzlů v určité vzdálenosti od x, excentricitu x, excentricitu sousedů x, počet trojúhelníků incidentních s x, počet cyklů o délce 4 incidentních s x atd...
Žádná z nich by významně nezvýšila počet různých rodin uzlů v grafech.
Tento příklad byl vybrán k demonstraci obtížnosti posouzení izomorfismu.
Příklad
Certifikovaný Graf
Po sestavení certifikátu stromu odpovídá každému uzlu stromu určitý podřetězec konečného certifikátu.
Sestavte certifikát každého ze 4 stromů a určete, které jeho podřetězce odpovídají jednotlivým uzlům stromu.
a)
01
01
01
01
01
01
0011
01
01
0011
000111
000111
b)
01
01
01
01
01
01
01
01
0010101010101011
c)
01
01
01
01
01
01
01
0011
0011
001011
00010110011011
d)
01
01
01
01
01
01
01
01
01
01
01
0001010110010101100111
01
00101011
0011
00101011
Příklad
De-Certifikovaný Graf
Rekonstruujte strom z certifikátu:
a) 0011 b) 0001 0110 0101 0111 c) 0001 0110 0101 1001 0111 d) 0000 0101 1100 1110 0001 0111 0111
(mezery a barvy jsou pouze pro zvýšení čitelnosti)

a) 0011
Nevalidní certifikát 😭
Existuje jenom jeden strom s 2 uzly a jeho certifikát je 0101.
b) 0001 0110 0101 0111
Nevalidní certifikát 😭
c) 0001 0110 0101 1001 0111
d) 0000 0101 1100 1110 0001 0111 0111
Příklad
Listí z Certifikátu 🍃
Je dán certifikát stromu.
Vysvětlete, jak určíme počet listů tohoto stromu (bez kompletní rekonstrukce stromu).
0101011010110100100101010100101010010010100101010010101001001010010100101010010100110010101001010010010100101010010100101010010100010010100101010010100101001010100101001010010100101001010100100101010010101010101001010010100101010100101010101010101010110101010101100101011010010101010101001010110100101001010011010010101010101010010100101010100101010010101001010100101010011011010100101010010010100101010010100101011001010010101010100101010010101010010101010010101010010101010100101010101010010101010010100101010100101010010101001010101001010101001010101010010100101001001010101010101010101010101010101101010101101010101010101010101010101001010100101010010101010010110101100110010100101101001010101001010110110101001010101001101001010101011010101010010011010101010010101101010011101010101001
Podle algoritmu pro konstrukci certifikátu jsou všechny listy označeny řetězcem 01.
Popisky interních uzlů se skládají z alespoň 4 symbolů a tento popisek obsahuje jako podřetězce všechny popisky podstromů s kořeny v X.
Proto je korespondence mezi podřetězci 01 v certifikátu stromu a listy stromu bijekcí.
Počet podřetězců 01 v certifikátu se rovná počtu listů ve stromu.
Řešení
Příklad
Maximální Stupeň Uzlu z Certifikátu
Je dán certifikát stromu.
Vysvětlete, jak určíme maximální stupeň uzlu tohoto stromu (bez kompletní rekonstrukce stromu).
Co je certifikát: Řetězec z nul a jedniček, který kóduje průchod stromem do hloubky (DFS).
0 znamená „jdu po nové hraně k dítěti“
1 znamená „vracím se o jednu hranu zpět“
Řešení
Dekódování (rekonstrukce stromu z certifikátu):
Pořadí dětí nemusíme znát (narozdíl od kódování).
Stačí postupovat sekvenčně:
-
když čtu 0, nakreslím novou hranu od aktuálního uzlu k novému vrcholu a přesunu se do něj;
-
když čtu 1, vrátím se po jedné hraně zpět směrem ke středu (k rodiči).
Řešení
Dekódování (rekonstrukce stromu z certifikátu):
Pořadí dětí nemusíme znát (narozdíl od kódování).
Stačí postupovat sekvenčně:
-
když čtu 0, nakreslím novou hranu od aktuálního uzlu k novému vrcholu a přesunu se do něj;
-
když čtu 1, vrátím se po jedné hraně zpět směrem ke středu (k rodiči).
Zásobník (stack):
Během dekódování si vedeme zásobník navštívených uzlů.
Když z uzlu odcházíme naposledy (přečtu 1 a už pro něj není další 0), uzel „zavřeme“ a odebereme ho ze zásobníku.
Stupeň (degree) uzlu:
Stačí si u každého uzlu počítat, kolikrát jsme v něm byli, zatímco je na zásobníku.
Ve chvíli, kdy se uzel zavře, je počet těchto návštěv rovný jeho stupni.
Příklad
Certifikát T(1,3)
Strom typu \(T(1,3)\) obsahuje uzly pouze stupně \(1\) nebo \(3\).
Popište neformálně jak bude vypadat certifikát takového stromu a navrhněte algoritmus, který pomocí certifikátu ověří, zda strom je skutečně typu \(T(1,3)\).
Kořen:
-
je-li centroid jeden, kořen má 3 děti ⇒ celý certifikát je
0 S S S 1 -
jsou-li centroidy dva, certifikát je konkatenace dvou top-bloků S S, přičemž každý z nich je typu 0 S S 1.
Řešení
Sleaf -> 01
Sint -> 0 S S 1
R1 -> 0 S S S 1 (jediný centroid)
R2 -> Sint Sint (dva centroidy)
CERT -> R1 | R2