14.08.2013 Views

PUUDE LOENDAMINE - Cs.ioc.ee

PUUDE LOENDAMINE - Cs.ioc.ee

PUUDE LOENDAMINE - Cs.ioc.ee

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Märgendatud ja märgendamata puud<br />

Puude esitamine arvuti mälus<br />

Prüferi kood<br />

Märgendamata puude loendamine<br />

<strong>PUUDE</strong> <strong>LOENDAMINE</strong><br />

T<strong>ee</strong>ma 9<br />

Jaan Penjam, email: jaan@cs.<strong>ioc</strong>.<strong>ee</strong> Diskr<strong>ee</strong>tne Matemaatika II: Puude loendamine


Märgendatud ja märgendamata puud<br />

Puude esitamine arvuti mälus<br />

Prüferi kood<br />

Märgendamata puude loendamine<br />

Loengu kava<br />

1 Märgendatud ja märgendamata puud<br />

2 Puude esitamine arvuti mälus<br />

3 Prüferi kood<br />

4 Märgendamata puude loendamine<br />

Jaan Penjam, email: jaan@cs.<strong>ioc</strong>.<strong>ee</strong> Diskr<strong>ee</strong>tne Matemaatika II: Puude loendamine


Märgendatud ja märgendamata puud<br />

Puude esitamine arvuti mälus<br />

Prüferi kood<br />

Märgendamata puude loendamine<br />

Märgendatud graaf<br />

Olgu M ⊆ N lõplik hulk. Märgendatud graaf märgendite hulgaga M<br />

on kolmik GM = (V ,E, µ), kus<br />

G = (V ,E) on graaf<br />

µ : V → M on bijektiivne kujutus.<br />

Märgendatud graaf märgendite hulgaga {2,4,5,6}<br />

2 4<br />

5<br />

Jaan Penjam, email: jaan@cs.<strong>ioc</strong>.<strong>ee</strong> Diskr<strong>ee</strong>tne Matemaatika II: Puude loendamine<br />

6


Märgendatud ja märgendamata puud<br />

Puude esitamine arvuti mälus<br />

Prüferi kood<br />

Märgendamata puude loendamine<br />

(Märgendamata) graafide isomorfism<br />

Graafid G ja H on isomorfsed (tähist. G ∼ = H), kui nende tipuhulkade<br />

vahel leidub selline bijektsioon<br />

f : V (G) → V (H),<br />

et tipud u ja v on naabrid graafis G parajasti siis, kui tipud f (u) ja f (v)<br />

on naabrid graafis H.<br />

Näide: isomorfsed graafid Näide: mitte-isomorfsed graafid<br />

Jaan Penjam, email: jaan@cs.<strong>ioc</strong>.<strong>ee</strong> Diskr<strong>ee</strong>tne Matemaatika II: Puude loendamine


Märgendatud ja märgendamata puud<br />

Puude esitamine arvuti mälus<br />

Prüferi kood<br />

Märgendamata puude loendamine<br />

Märgendatud graafide isomorfism<br />

Märgendatud graafid GM = (V1,E1, µ1) ja HM = (V2,E2, µ2) on<br />

isomorfsed (tähist. GM ∼ = HM), kui leidub kujutus ϕ : V1 → V2, nii<br />

et<br />

ϕ on graafide G = (V1,E1) ja H = (V2,E2) isomorfism;<br />

iga v ∈ V1 korral µ1(v) = µ2(ϕ(v)).<br />

Näide: mitte-isomorfsed kolmetipulised märgendatud puud<br />

1 2 3 2 1 3 1 3 2<br />

Kui palju on neljatipulisi puid ja märgendatud puid (märgenditega<br />

{1,2,3,4})?<br />

Jaan Penjam, email: jaan@cs.<strong>ioc</strong>.<strong>ee</strong> Diskr<strong>ee</strong>tne Matemaatika II: Puude loendamine


Märgendatud ja märgendamata puud<br />

Puude esitamine arvuti mälus<br />

Prüferi kood<br />

Märgendamata puude loendamine<br />

Puude esitamine arvuti mälus<br />

A. Naabrusmaatriksina<br />

Näide (üldine m<strong>ee</strong>tod kõigi graafide jaoks)<br />

1<br />

4<br />

2<br />

3<br />

Näide: leida etteantud pikkusega t<strong>ee</strong>d<br />

1<br />

4<br />

2<br />

3<br />

⎛<br />

A 2 ⎜<br />

= ⎜<br />

⎝<br />

0 1 1 0<br />

1 0 1 1<br />

1 1 0 0<br />

0 1 0 0<br />

⎞⎛<br />

⎟⎜<br />

⎟⎜<br />

⎠⎝<br />

⎛<br />

⎜<br />

A = ⎜<br />

⎝<br />

0 1 1 0<br />

1 0 1 1<br />

1 1 0 0<br />

0 1 0 0<br />

0 1 1 0<br />

1 0 1 1<br />

1 1 0 0<br />

0 1 0 0<br />

⎞<br />

⎛<br />

⎟<br />

⎠ =<br />

⎜<br />

⎝<br />

⎞<br />

⎟<br />

⎠<br />

2 1 1 1<br />

1 3 1 0<br />

1 1 2 1<br />

1 0 1 1<br />

C = A · B ⇋ cij = ∑ aik bkj või cij = <br />

k<br />

<br />

aik ∧ bkj <br />

k<br />

Jaan Penjam, email: jaan@cs.<strong>ioc</strong>.<strong>ee</strong> Diskr<strong>ee</strong>tne Matemaatika II: Puude loendamine<br />

⎞<br />

⎟<br />


Märgendatud ja märgendamata puud<br />

Puude esitamine arvuti mälus<br />

Prüferi kood<br />

Märgendamata puude loendamine<br />

Puude esitamine arvuti mälus<br />

A. Naabrusmaatriksina<br />

Näide (üldine m<strong>ee</strong>tod kõigi graafide jaoks)<br />

1<br />

4<br />

2<br />

3<br />

Näide: leida etteantud pikkusega t<strong>ee</strong>d<br />

1<br />

4<br />

2<br />

3<br />

⎛<br />

A 2 ⎜<br />

= ⎜<br />

⎝<br />

0 1 1 0<br />

1 0 1 1<br />

1 1 0 0<br />

0 1 0 0<br />

⎞⎛<br />

⎟⎜<br />

⎟⎜<br />

⎠⎝<br />

⎛<br />

⎜<br />

A = ⎜<br />

⎝<br />

0 1 1 0<br />

1 0 1 1<br />

1 1 0 0<br />

0 1 0 0<br />

0 1 1 0<br />

1 0 1 1<br />

1 1 0 0<br />

0 1 0 0<br />

⎞<br />

⎛<br />

⎟<br />

⎠ =<br />

⎜<br />

⎝<br />

⎞<br />

⎟<br />

⎠<br />

2 1 1 1<br />

1 3 1 0<br />

1 1 2 1<br />

1 0 1 1<br />

C = A · B ⇋ cij = ∑ aik bkj või cij = <br />

k<br />

<br />

aik ∧ bkj <br />

k<br />

Jaan Penjam, email: jaan@cs.<strong>ioc</strong>.<strong>ee</strong> Diskr<strong>ee</strong>tne Matemaatika II: Puude loendamine<br />

⎞<br />

⎟<br />


Märgendatud ja märgendamata puud<br />

Puude esitamine arvuti mälus<br />

Prüferi kood<br />

Märgendamata puude loendamine<br />

Puude esitamine arvuti mälus<br />

B. Servade loendina<br />

Näide<br />

Vajadus mälu järele:<br />

2n log 2 n (servade loendi korral)<br />

7 8<br />

9<br />

3 0 2 6<br />

7 8 9 6 3 0 2 6 6<br />

9 9 2 2 0 2 4 1 5<br />

(n 2 − n)/2 (naabrusmaatriksi korral)<br />

4<br />

Jaan Penjam, email: jaan@cs.<strong>ioc</strong>.<strong>ee</strong> Diskr<strong>ee</strong>tne Matemaatika II: Puude loendamine<br />

1<br />

5


Märgendatud ja märgendamata puud<br />

Puude esitamine arvuti mälus<br />

Prüferi kood<br />

Märgendamata puude loendamine<br />

Puude esitamine arvuti mälus<br />

C. Alluvussuhtena<br />

Näide<br />

Vajadus mälu järele: (n − 1)⌈log 2 n⌉<br />

7 8<br />

9<br />

3 0 2 6<br />

1 2 3 4 5 6 7 8 9<br />

6 0 0 2 6 2 9 9 2<br />

4<br />

ehk lihtsamalt<br />

6 0 0 2 6 2 9 9 2 <br />

Jaan Penjam, email: jaan@cs.<strong>ioc</strong>.<strong>ee</strong> Diskr<strong>ee</strong>tne Matemaatika II: Puude loendamine<br />

1<br />

5


Märgendatud ja märgendamata puud<br />

Puude esitamine arvuti mälus<br />

Prüferi kood<br />

Märgendamata puude loendamine<br />

Puude esitamine arvuti mälus<br />

D. Prüferi koodina<br />

1 Panna kirja (analoogiliselt alluvussuhte esitusega) vähima positiivse märgendiga<br />

lehega intsidentne serv ning kustutada nii leht kui serv graafist;<br />

2 Korrata <strong>ee</strong>lmist punkti, kuni puu kõik servad on kustutatud;<br />

3 Kustutada puu esituse esimene rida (teine rida ongi puu Prüferi kood<br />

4 Kustutada ka koodi viimane element (kuna s<strong>ee</strong> on alati 0)<br />

Näide<br />

3 0 2 6<br />

Vahetulemus ehk Prüferi laiendatud kood:<br />

7 8<br />

9<br />

1 3 4 5 6 7 8 9 2<br />

6 0 2 6 2 9 9 2 0<br />

Puu esitus Prüferi koodina: 6 0 2 6 2 9 9 2 <br />

4<br />

Jaan Penjam, email: jaan@cs.<strong>ioc</strong>.<strong>ee</strong> Diskr<strong>ee</strong>tne Matemaatika II: Puude loendamine<br />

1<br />

5


Märgendatud ja märgendamata puud<br />

Puude esitamine arvuti mälus<br />

Prüferi kood<br />

Märgendamata puude loendamine<br />

Formaalne definitsioon<br />

Definitsioon<br />

Olgu T = (V ,E, µ) märgendatud puu märgendite hulgaga M.<br />

Tema Prüferi kood P(T ) on märgendite järjend, mis rahuldab<br />

järgmisi tingimusi:<br />

Kui |V | = 2, siis P(T ) = [ ] (tühi järjend).<br />

Kui |V | > 2, siis P(T ) = µ(w) · P(T ′ ), kus<br />

w on vähima märgendiga lehe v ∈ V naabertipp;<br />

T ′ = (V \ {v},E \ {(v,w)}, µ| V \{v}) märgendatud puu<br />

märgendite hulgaga M \ {µ(v)}<br />

Jaan Penjam, email: jaan@cs.<strong>ioc</strong>.<strong>ee</strong> Diskr<strong>ee</strong>tne Matemaatika II: Puude loendamine


Märgendatud ja märgendamata puud<br />

Puude esitamine arvuti mälus<br />

Prüferi kood<br />

Märgendamata puude loendamine<br />

Näide: Prüferi koodi gener<strong>ee</strong>rimine (1) c○P<strong>ee</strong>ter Laud<br />

Kood:<br />

6<br />

8<br />

2<br />

10<br />

11<br />

9<br />

1<br />

3<br />

7 4<br />

Jaan Penjam, email: jaan@cs.<strong>ioc</strong>.<strong>ee</strong> Diskr<strong>ee</strong>tne Matemaatika II: Puude loendamine<br />

5


Märgendatud ja märgendamata puud<br />

Puude esitamine arvuti mälus<br />

Prüferi kood<br />

Märgendamata puude loendamine<br />

Näide: Prüferi koodi gener<strong>ee</strong>rimine (2) c○P<strong>ee</strong>ter Laud<br />

Kood:<br />

6<br />

8<br />

2<br />

10<br />

11<br />

9<br />

1<br />

3<br />

7 4<br />

Jaan Penjam, email: jaan@cs.<strong>ioc</strong>.<strong>ee</strong> Diskr<strong>ee</strong>tne Matemaatika II: Puude loendamine<br />

5


Märgendatud ja märgendamata puud<br />

Puude esitamine arvuti mälus<br />

Prüferi kood<br />

Märgendamata puude loendamine<br />

Näide: Prüferi koodi gener<strong>ee</strong>rimine (3) c○P<strong>ee</strong>ter Laud<br />

Kood: 9<br />

6<br />

8<br />

2<br />

10<br />

11<br />

9<br />

1<br />

3<br />

7 4<br />

Jaan Penjam, email: jaan@cs.<strong>ioc</strong>.<strong>ee</strong> Diskr<strong>ee</strong>tne Matemaatika II: Puude loendamine<br />

5


Märgendatud ja märgendamata puud<br />

Puude esitamine arvuti mälus<br />

Prüferi kood<br />

Märgendamata puude loendamine<br />

Näide: Prüferi koodi gener<strong>ee</strong>rimine (4) c○P<strong>ee</strong>ter Laud<br />

Kood: 93<br />

6<br />

8<br />

2<br />

10<br />

11<br />

9<br />

3<br />

1 7 4<br />

Jaan Penjam, email: jaan@cs.<strong>ioc</strong>.<strong>ee</strong> Diskr<strong>ee</strong>tne Matemaatika II: Puude loendamine<br />

5


Märgendatud ja märgendamata puud<br />

Puude esitamine arvuti mälus<br />

Prüferi kood<br />

Märgendamata puude loendamine<br />

Näide: Prüferi koodi gener<strong>ee</strong>rimine (5) c○P<strong>ee</strong>ter Laud<br />

Kood: 933<br />

6<br />

8<br />

22<br />

10<br />

11<br />

9<br />

3<br />

11 7 4<br />

Jaan Penjam, email: jaan@cs.<strong>ioc</strong>.<strong>ee</strong> Diskr<strong>ee</strong>tne Matemaatika II: Puude loendamine<br />

5


Märgendatud ja märgendamata puud<br />

Puude esitamine arvuti mälus<br />

Prüferi kood<br />

Märgendamata puude loendamine<br />

Näide: Prüferi koodi gener<strong>ee</strong>rimine (6) c○P<strong>ee</strong>ter Laud<br />

Kood: 9332<br />

6<br />

8<br />

2<br />

10<br />

11<br />

9<br />

3<br />

1 7<br />

4<br />

Jaan Penjam, email: jaan@cs.<strong>ioc</strong>.<strong>ee</strong> Diskr<strong>ee</strong>tne Matemaatika II: Puude loendamine<br />

5


Märgendatud ja märgendamata puud<br />

Puude esitamine arvuti mälus<br />

Prüferi kood<br />

Märgendamata puude loendamine<br />

Näide: Prüferi koodi gener<strong>ee</strong>rimine (7) c○P<strong>ee</strong>ter Laud<br />

Kood: 93323<br />

6<br />

8<br />

2<br />

10<br />

11<br />

9 3<br />

1 7<br />

4<br />

Jaan Penjam, email: jaan@cs.<strong>ioc</strong>.<strong>ee</strong> Diskr<strong>ee</strong>tne Matemaatika II: Puude loendamine<br />

5


Märgendatud ja märgendamata puud<br />

Puude esitamine arvuti mälus<br />

Prüferi kood<br />

Märgendamata puude loendamine<br />

Näide: Prüferi koodi gener<strong>ee</strong>rimine (8) c○P<strong>ee</strong>ter Laud<br />

Kood: 933239<br />

6<br />

8<br />

2<br />

10<br />

11<br />

9<br />

3<br />

1 7<br />

4<br />

Jaan Penjam, email: jaan@cs.<strong>ioc</strong>.<strong>ee</strong> Diskr<strong>ee</strong>tne Matemaatika II: Puude loendamine<br />

5


Märgendatud ja märgendamata puud<br />

Puude esitamine arvuti mälus<br />

Prüferi kood<br />

Märgendamata puude loendamine<br />

Näide: Prüferi koodi gener<strong>ee</strong>rimine (9) c○P<strong>ee</strong>ter Laud<br />

Kood: 9332392<br />

6<br />

8<br />

2<br />

10 10<br />

11<br />

99<br />

3<br />

11 77<br />

44<br />

Jaan Penjam, email: jaan@cs.<strong>ioc</strong>.<strong>ee</strong> Diskr<strong>ee</strong>tne Matemaatika II: Puude loendamine<br />

5


Märgendatud ja märgendamata puud<br />

Puude esitamine arvuti mälus<br />

Prüferi kood<br />

Märgendamata puude loendamine<br />

Näide: Prüferi koodi gener<strong>ee</strong>rimine (10) c○P<strong>ee</strong>ter Laud<br />

Kood: 93323929<br />

6<br />

88<br />

2<br />

10 10<br />

11<br />

9<br />

3<br />

11 77<br />

44<br />

Jaan Penjam, email: jaan@cs.<strong>ioc</strong>.<strong>ee</strong> Diskr<strong>ee</strong>tne Matemaatika II: Puude loendamine<br />

5


Märgendatud ja märgendamata puud<br />

Puude esitamine arvuti mälus<br />

Prüferi kood<br />

Märgendamata puude loendamine<br />

Näide: Prüferi koodi gener<strong>ee</strong>rimine (11) c○P<strong>ee</strong>ter Laud<br />

Kood: 933239292<br />

6<br />

8<br />

2<br />

10 10<br />

11<br />

9<br />

3<br />

11 77<br />

44<br />

Jaan Penjam, email: jaan@cs.<strong>ioc</strong>.<strong>ee</strong> Diskr<strong>ee</strong>tne Matemaatika II: Puude loendamine<br />

55


Märgendatud ja märgendamata puud<br />

Puude esitamine arvuti mälus<br />

Prüferi kood<br />

Märgendamata puude loendamine<br />

Näide: Prüferi koodi gener<strong>ee</strong>rimine (tulemus) c○P<strong>ee</strong>ter Laud<br />

Kood: 933239292<br />

6<br />

8<br />

2<br />

10<br />

11<br />

9<br />

1<br />

3<br />

7 4<br />

Jaan Penjam, email: jaan@cs.<strong>ioc</strong>.<strong>ee</strong> Diskr<strong>ee</strong>tne Matemaatika II: Puude loendamine<br />

5


Märgendatud ja märgendamata puud<br />

Puude esitamine arvuti mälus<br />

Prüferi kood<br />

Märgendamata puude loendamine<br />

Märgendite esinemine Prüferi koodis<br />

Lemma<br />

Märgendatud puu T = (V ,E, µ) tipu v ∈ V märgend µ(v) esineb koodis P(T ) täpselt<br />

deg(v) − 1 korda.<br />

Tõestus.<br />

Induktsioon üle tippude arvu.<br />

Baas. Olgu |V | = 2. Siis on kummagi tipu aste 1 ning kummagi tipu märgend esineb<br />

koodis P(T ) null korda.<br />

Samm. Olgu |V | = n ja P(T ) = [m1m2 ...mn−2]. Olgu u ∈ V vähima märgendiga leht<br />

puus T . Olgu w tema naabertipp. Olgu T ′ saadud puust T , tipu u <strong>ee</strong>maldamise<br />

tulemusena (tähistame T ′ = T − u).<br />

T ′ on (n − 1)-tipuline märgendatud puu märgendite hulgaga M \ {µ(u)}. Tema Prüferi<br />

kood on [m2 ...mn−2]. Induktsiooni <strong>ee</strong>lduse järgi esineb suvalise tipu v ∈ V \ {u}<br />

märgend selles koodis deg T ′(v) − 1 korda.<br />

Jaan Penjam, email: jaan@cs.<strong>ioc</strong>.<strong>ee</strong> Diskr<strong>ee</strong>tne Matemaatika II: Puude loendamine


Märgendatud ja märgendamata puud<br />

Puude esitamine arvuti mälus<br />

Prüferi kood<br />

Märgendamata puude loendamine<br />

Märgendite esinemine Prüferi koodis (2)<br />

Tõestuse jätk<br />

Olgu v ∈ V . Vaatame kolme varianti:<br />

v = u. Siis deg T (v) = 1. Märgend µ(u) ei esine koodis P(T ′ ) ning m1 = µ(w).<br />

S<strong>ee</strong>ga ei esine µ(u) koodis P(T ).<br />

v = w. Siis deg T (v) = deg T ′(v) + 1. Märgend µ(w) esneb koodis P(T ) üks kord<br />

rohkem kui koodis P(T ′ ), sest m1 = µ(w).<br />

v on mingi muu tipp. Siis deg T (v) = deg T ′(v). Ka v märgendi esinemiste arv<br />

koodides P(T ) ja P(T ′ ) on sama.<br />

m.o.t.t.<br />

Jaan Penjam, email: jaan@cs.<strong>ioc</strong>.<strong>ee</strong> Diskr<strong>ee</strong>tne Matemaatika II: Puude loendamine


Märgendatud ja märgendamata puud<br />

Puude esitamine arvuti mälus<br />

Prüferi kood<br />

Märgendamata puude loendamine<br />

Prüferi koodi ühesus<br />

Teor<strong>ee</strong>m<br />

Olgu T1 = (V1,E1, µ1) ja T2 = (V2,E2, µ2) märgendatud puud märgendite hulgaga M.<br />

Kui P(T1) = P(T2), siis T1 ∼ = T2.<br />

Tõestus.<br />

Induktsioon üle tippude arvu.<br />

Baas. Olgu |V | = 2. Siis leidub ainult üks kahetipuline märgendatud puu märgendite<br />

hulgaga M = {m1,m2}: m1 m2<br />

Samm. Olgu |V | = n ja P(T1) = P(T2) = [m1m2 ...mn−2]. P(Ti ) analüüsimise<br />

tulemusena saab kindlaks teha puu Ti lehtede märgendid – <strong>ee</strong>lmise Lemma põhjal on<br />

n<strong>ee</strong>d märgendid, mis P(Ti )-s ei esine. S<strong>ee</strong>ga on puude T1 ja T2 lehtede märgendite<br />

hulgad võrdsed.<br />

Olgu m ∈ M vähim lehe märgend. Olgu v1 ∈ V1 ja v2 ∈ V2 sellised, et<br />

µ1(v1) = µ2(v2) = m. Olgu T ′ 1 = T1 − v1 ja T ′ 2 = T2 − v2. Vastavalt Prüferi koodi<br />

konstruktsioonile P(T ′ 1 ) = P(T ′ 2 ) = [m2 ...mn−2]. Induktsiooni <strong>ee</strong>lduse järgi T ′ 1 ∼ = T ′ 2 .<br />

Olgu ϕ : V1 \ {v1} → V2 \ {v2} nendevaheline isomorfism.<br />

Jaan Penjam, email: jaan@cs.<strong>ioc</strong>.<strong>ee</strong> Diskr<strong>ee</strong>tne Matemaatika II: Puude loendamine


Märgendatud ja märgendamata puud<br />

Puude esitamine arvuti mälus<br />

Prüferi kood<br />

Märgendamata puude loendamine<br />

Prüferi koodi ühesus (2)<br />

Tõestuse jätk<br />

Näitame, et kui me täiendavalt defin<strong>ee</strong>rime ϕ(v1) = v2, siis on ϕ märgendatud puude<br />

T1 ja T2 vaheline isomorfism.<br />

ϕ jätab märgendid paika: µ(v1) = µ(v2).<br />

Tuleb v<strong>ee</strong>l näidata, et ϕ on puude T1 ja T2 vaheline isomorfism, selleks näitame,<br />

et u,u ′ ∈ V1 korral on u ja u ′ naabrid parajasti siis, kui ϕ(u) ja ϕ(u ′ ) on naabrid.<br />

Kui u = v1 ja u ′ = v1, siis järeldub viimane väide asjaolust, et ϕ on T ′ 1 ja T ′ 2 vaheline<br />

isomorfism.<br />

Olgu u = v1. Tipud v1 ja v2 on lehed. Olgu w1 ∈ V1 ja w2 ∈ V2 tippude v1 ja v2 ainsad<br />

naabrid. Vastavalt Prüferi koodi konstruktsioonile µ1(w1) = µ2(w2) = m1. Kuna ϕ on<br />

märgendatud puude T ′ 1 ja T ′ 2 vaheline isomorfism, siis ϕ(w1) = w2. S<strong>ee</strong>ga on u ′ tipu<br />

u = v1 naabertipp parajasti siis, kui ϕ(u ′ ) on tipu ϕ(u) = v2 naabertipp. m.o.t.t.<br />

Jaan Penjam, email: jaan@cs.<strong>ioc</strong>.<strong>ee</strong> Diskr<strong>ee</strong>tne Matemaatika II: Puude loendamine


Märgendatud ja märgendamata puud<br />

Puude esitamine arvuti mälus<br />

Prüferi kood<br />

Märgendamata puude loendamine<br />

Prüferi koodi üldisus<br />

Teor<strong>ee</strong>m<br />

Olgu M ⊂ N, nii et n = |M| 2 ja M = [m1m2 ...mn−2], kus m1,...,mn−2 ∈ M. Siis<br />

leidub n-tipuline märgendatud puu T = (V ,E, µ) märgendite hulgaga M, nii et<br />

P(T ) = M .<br />

Tõestus.<br />

Induktsioon üle tippude arvu n.<br />

Baas. n = 2. SiisM = [ ]. Kui M = {m1,m2}, siis võtame T -ks puu m1<br />

Samm. Olgu m ∈ M vähim selline element, mis ei esine järjendis M . Olgu<br />

M ′ = M \ {m} ja M ′ = [m2 ...mn−2]. Vastavalt induktsiooni <strong>ee</strong>ldusele leidub<br />

märgendatud puu T ′ = (V ′ ,E ′ , µ ′ ) märgendite hulgaga M ′ , nii et P(T ′ ) = M ′<br />

Jaan Penjam, email: jaan@cs.<strong>ioc</strong>.<strong>ee</strong> Diskr<strong>ee</strong>tne Matemaatika II: Puude loendamine<br />

m2


Märgendatud ja märgendamata puud<br />

Puude esitamine arvuti mälus<br />

Prüferi kood<br />

Märgendamata puude loendamine<br />

Prüferi koodi üldisus (2)<br />

Tõestuse jätk<br />

Olgu w ∈ V ′ selline, et µ ′ (w) = m1 ja<br />

V = V ′ {v}<br />

E = E ′ ∪ {(v,w)}<br />

µ = µ ′ [v ↦−→ m]<br />

ja olgu T = (V ,E, µ). Siis T on märgendatud puu märgendite hulgaga M.<br />

Leiame P(T ). Meil on tarvis leida vähima märgendiga leht puus T . Puu T lehtede<br />

märgendid on täpselt n<strong>ee</strong>d M-i elemendid, mis ei kuulu M -i. Vastavalt m-i<br />

definitsioonile on m vähim nende seas. S<strong>ee</strong>ga on vastavalt µ definitsioonile v vähima<br />

märgendiga leht puus T .<br />

Tipu v naabriks puus T on w, mille märgend on vastavalt tema definitsioonile m1.<br />

Eemaldades puust T tipu v saame puu T ′ märgenditega hulgast M ′<br />

S<strong>ee</strong>ga P(T ) = µ(w) · P(T ′ ) = [m1m2 ...mn−2] = M . m.o.t.t.<br />

Jaan Penjam, email: jaan@cs.<strong>ioc</strong>.<strong>ee</strong> Diskr<strong>ee</strong>tne Matemaatika II: Puude loendamine


Märgendatud ja märgendamata puud<br />

Puude esitamine arvuti mälus<br />

Prüferi kood<br />

Märgendamata puude loendamine<br />

Märgendatud puu konstru<strong>ee</strong>rimine Prüferi koodi järgi<br />

M<strong>ee</strong>tod tuleneb <strong>ee</strong>lmisest tõestusest.<br />

Olgu antud M = [m1m2 ...mn−2]<br />

1 Iga i ∈ {1,...,n − 2} jaoks leiame järjendile [mi ...mn−2] vastava vähima lehe<br />

märgendi li hulgast M \ {l1,...,li−1}, nii et s<strong>ee</strong> erineks elementidest mi ,...,mn−2.<br />

2 Loome kahetipulise märgendatud puu märgenditega hulgast M \ {l1,...,ln−2}.<br />

3 Iga i ∈ {1,...,n − 2} jaoks (kahanevalt):<br />

Lisame puule uue tipu, märgendame ta li-ga.<br />

Ühendame selle tipu tipuga, mis on märgendatud mi-ga.<br />

Jaan Penjam, email: jaan@cs.<strong>ioc</strong>.<strong>ee</strong> Diskr<strong>ee</strong>tne Matemaatika II: Puude loendamine


Märgendatud ja märgendamata puud<br />

Puude esitamine arvuti mälus<br />

Prüferi kood<br />

Märgendamata puude loendamine<br />

Näide: puu gener<strong>ee</strong>rimine<br />

M = {1,2,...,10},<br />

kood 7 7 7 4 5 7 4 4 <br />

Jaan Penjam, email: jaan@cs.<strong>ioc</strong>.<strong>ee</strong> Diskr<strong>ee</strong>tne Matemaatika II: Puude loendamine


Märgendatud ja märgendamata puud<br />

Puude esitamine arvuti mälus<br />

Prüferi kood<br />

Märgendamata puude loendamine<br />

Näide: puu gener<strong>ee</strong>rimine (2)<br />

M = {1,2,...,10},<br />

Vähima märgendiga leht: 1<br />

Kood: 7 7 7 4 5 7 4 4<br />

Jaan Penjam, email: jaan@cs.<strong>ioc</strong>.<strong>ee</strong> Diskr<strong>ee</strong>tne Matemaatika II: Puude loendamine


Märgendatud ja märgendamata puud<br />

Puude esitamine arvuti mälus<br />

Prüferi kood<br />

Märgendamata puude loendamine<br />

Näide: puu gener<strong>ee</strong>rimine (3)<br />

M = {1,2,...,10},<br />

Vähima märgendiga leht: 1 2<br />

Kood: 7 7 7 4 5 7 4 4<br />

Jaan Penjam, email: jaan@cs.<strong>ioc</strong>.<strong>ee</strong> Diskr<strong>ee</strong>tne Matemaatika II: Puude loendamine


Märgendatud ja märgendamata puud<br />

Puude esitamine arvuti mälus<br />

Prüferi kood<br />

Märgendamata puude loendamine<br />

Näide: puu gener<strong>ee</strong>rimine (4)<br />

M = {1,2,...,10},<br />

Vähima märgendiga leht: 1 2 3<br />

Kood: 7 7 7 4 5 7 4 4<br />

Jaan Penjam, email: jaan@cs.<strong>ioc</strong>.<strong>ee</strong> Diskr<strong>ee</strong>tne Matemaatika II: Puude loendamine


Märgendatud ja märgendamata puud<br />

Puude esitamine arvuti mälus<br />

Prüferi kood<br />

Märgendamata puude loendamine<br />

Näide: puu gener<strong>ee</strong>rimine (5)<br />

M = {1,2,...,10},<br />

Vähima märgendiga leht: 1 2 3 6<br />

Kood: 7 7 7 4 5 7 4 4<br />

Jaan Penjam, email: jaan@cs.<strong>ioc</strong>.<strong>ee</strong> Diskr<strong>ee</strong>tne Matemaatika II: Puude loendamine


Märgendatud ja märgendamata puud<br />

Puude esitamine arvuti mälus<br />

Prüferi kood<br />

Märgendamata puude loendamine<br />

Näide: puu gener<strong>ee</strong>rimine (6)<br />

M = {1,2,...,10},<br />

Vähima märgendiga leht: 1 2 3 6 8<br />

Kood: 7 7 7 4 5 7 4 4<br />

Jaan Penjam, email: jaan@cs.<strong>ioc</strong>.<strong>ee</strong> Diskr<strong>ee</strong>tne Matemaatika II: Puude loendamine


Märgendatud ja märgendamata puud<br />

Puude esitamine arvuti mälus<br />

Prüferi kood<br />

Märgendamata puude loendamine<br />

Näide: puu gener<strong>ee</strong>rimine (7)<br />

M = {1,2,...,10},<br />

Vähima märgendiga leht: 1 2 3 6 8 5<br />

Kood: 7 7 7 4 5 7 4 4<br />

Jaan Penjam, email: jaan@cs.<strong>ioc</strong>.<strong>ee</strong> Diskr<strong>ee</strong>tne Matemaatika II: Puude loendamine


Märgendatud ja märgendamata puud<br />

Puude esitamine arvuti mälus<br />

Prüferi kood<br />

Märgendamata puude loendamine<br />

Näide: puu gener<strong>ee</strong>rimine (8)<br />

M = {1,2,...,10},<br />

Vähima märgendiga leht: 1 2 3 6 8 5 7<br />

Kood: 7 7 7 4 5 7 4 4<br />

Jaan Penjam, email: jaan@cs.<strong>ioc</strong>.<strong>ee</strong> Diskr<strong>ee</strong>tne Matemaatika II: Puude loendamine


Märgendatud ja märgendamata puud<br />

Puude esitamine arvuti mälus<br />

Prüferi kood<br />

Märgendamata puude loendamine<br />

Näide: puu gener<strong>ee</strong>rimine (9)<br />

M = {1,2,...,10},<br />

Vähima märgendiga leht: 1 2 3 6 8 5 7 9<br />

Kood: 7 7 7 4 5 7 4 4<br />

Jaan Penjam, email: jaan@cs.<strong>ioc</strong>.<strong>ee</strong> Diskr<strong>ee</strong>tne Matemaatika II: Puude loendamine


Märgendatud ja märgendamata puud<br />

Puude esitamine arvuti mälus<br />

Prüferi kood<br />

Märgendamata puude loendamine<br />

Näide: puu gener<strong>ee</strong>rimine (10)<br />

M = {1,2,...,10},<br />

Vähima märgendiga leht: 1 2 3 6 8 5 7 9<br />

Kood: 7 7 7 4 5 7 4 4<br />

Jaan Penjam, email: jaan@cs.<strong>ioc</strong>.<strong>ee</strong> Diskr<strong>ee</strong>tne Matemaatika II: Puude loendamine<br />

4<br />

10


Märgendatud ja märgendamata puud<br />

Puude esitamine arvuti mälus<br />

Prüferi kood<br />

Märgendamata puude loendamine<br />

Näide: puu gener<strong>ee</strong>rimine (11)<br />

M = {1,2,...,10},<br />

Vähima märgendiga leht: 1 2 3 6 8 5 7 9<br />

Kood: 7 7 7 4 5 7 4 4<br />

Jaan Penjam, email: jaan@cs.<strong>ioc</strong>.<strong>ee</strong> Diskr<strong>ee</strong>tne Matemaatika II: Puude loendamine<br />

4<br />

9<br />

10


Märgendatud ja märgendamata puud<br />

Puude esitamine arvuti mälus<br />

Prüferi kood<br />

Märgendamata puude loendamine<br />

Näide: puu gener<strong>ee</strong>rimine (12)<br />

M = {1,2,...,10},<br />

Vähima märgendiga leht: 1 2 3 6 8 5 7 9<br />

Kood: 7 7 7 4 5 7 4 4<br />

Jaan Penjam, email: jaan@cs.<strong>ioc</strong>.<strong>ee</strong> Diskr<strong>ee</strong>tne Matemaatika II: Puude loendamine<br />

7<br />

4<br />

9<br />

10


Märgendatud ja märgendamata puud<br />

Puude esitamine arvuti mälus<br />

Prüferi kood<br />

Märgendamata puude loendamine<br />

Näide: puu gener<strong>ee</strong>rimine (13)<br />

M = {1,2,...,10},<br />

Vähima märgendiga leht: 1 2 3 6 8 5 7 9<br />

Kood: 7 7 7 4 5 7 4 4<br />

Jaan Penjam, email: jaan@cs.<strong>ioc</strong>.<strong>ee</strong> Diskr<strong>ee</strong>tne Matemaatika II: Puude loendamine<br />

5<br />

7<br />

4<br />

9<br />

10


Märgendatud ja märgendamata puud<br />

Puude esitamine arvuti mälus<br />

Prüferi kood<br />

Märgendamata puude loendamine<br />

Näide: puu gener<strong>ee</strong>rimine (14)<br />

M = {1,2,...,10},<br />

Vähima märgendiga leht: 1 2 3 6 8 5 7 9<br />

Kood: 7 7 7 4 5 7 4 4<br />

Jaan Penjam, email: jaan@cs.<strong>ioc</strong>.<strong>ee</strong> Diskr<strong>ee</strong>tne Matemaatika II: Puude loendamine<br />

8<br />

5<br />

7<br />

4<br />

9<br />

10


Märgendatud ja märgendamata puud<br />

Puude esitamine arvuti mälus<br />

Prüferi kood<br />

Märgendamata puude loendamine<br />

Näide: puu gener<strong>ee</strong>rimine (15)<br />

M = {1,2,...,10},<br />

Vähima märgendiga leht: 1 2 3 6 8 5 7 9<br />

Kood: 7 7 7 4 5 7 4 4<br />

Jaan Penjam, email: jaan@cs.<strong>ioc</strong>.<strong>ee</strong> Diskr<strong>ee</strong>tne Matemaatika II: Puude loendamine<br />

8<br />

5<br />

7<br />

4<br />

6<br />

9<br />

10


Märgendatud ja märgendamata puud<br />

Puude esitamine arvuti mälus<br />

Prüferi kood<br />

Märgendamata puude loendamine<br />

Näide: puu gener<strong>ee</strong>rimine (16)<br />

M = {1,2,...,10},<br />

Vähima märgendiga leht: 1 2 3 6 8 5 7 9<br />

Kood: 7 7 7 4 5 7 4 4<br />

Jaan Penjam, email: jaan@cs.<strong>ioc</strong>.<strong>ee</strong> Diskr<strong>ee</strong>tne Matemaatika II: Puude loendamine<br />

8<br />

5<br />

7<br />

3<br />

4<br />

6<br />

9<br />

10


Märgendatud ja märgendamata puud<br />

Puude esitamine arvuti mälus<br />

Prüferi kood<br />

Märgendamata puude loendamine<br />

Näide: puu gener<strong>ee</strong>rimine (17)<br />

M = {1,2,...,10},<br />

Vähima märgendiga leht: 1 2 3 6 8 5 7 9<br />

Kood: 7 7 7 4 5 7 4 4<br />

Jaan Penjam, email: jaan@cs.<strong>ioc</strong>.<strong>ee</strong> Diskr<strong>ee</strong>tne Matemaatika II: Puude loendamine<br />

8<br />

5<br />

7<br />

2<br />

3<br />

4<br />

6<br />

9<br />

10


Märgendatud ja märgendamata puud<br />

Puude esitamine arvuti mälus<br />

Prüferi kood<br />

Märgendamata puude loendamine<br />

Näide: puu gener<strong>ee</strong>rimine (18)<br />

M = {1,2,...,10},<br />

Vähima märgendiga leht: 1 2 3 6 8 5 7 9<br />

Kood: 7 7 7 4 5 7 4 4<br />

Jaan Penjam, email: jaan@cs.<strong>ioc</strong>.<strong>ee</strong> Diskr<strong>ee</strong>tne Matemaatika II: Puude loendamine<br />

8<br />

5<br />

1<br />

7<br />

2<br />

3<br />

4<br />

6<br />

9<br />

10


Märgendatud ja märgendamata puud<br />

Puude esitamine arvuti mälus<br />

Prüferi kood<br />

Märgendamata puude loendamine<br />

Märgendatud puude arv<br />

Teor<strong>ee</strong>m 8.3.2 (Cayley teor<strong>ee</strong>m)<br />

n-tipuliste märgendatud puude arv on n n−2 .<br />

Jäeldus Prüferi koodi kohta tõestatud teor<strong>ee</strong>midest.<br />

Jaan Penjam, email: jaan@cs.<strong>ioc</strong>.<strong>ee</strong> Diskr<strong>ee</strong>tne Matemaatika II: Puude loendamine


Märgendatud ja märgendamata puud<br />

Puude esitamine arvuti mälus<br />

Prüferi kood<br />

Märgendamata puude loendamine<br />

Märgendamata puud<br />

Teor<strong>ee</strong>m 8.5.1<br />

Märgendamata n-tipuliste puude arv Tn rahuldab võrratust<br />

n n−2<br />

n! Tn 4 n−1<br />

Alumine tõke tuleneb sellest, et iga n-tipulist puud saab erinevate märgenditega<br />

märgendada n! viisil:<br />

Ülemise tõkke saab tuletada juurega puude võimalike planaarkoodide arvust.<br />

n-tipulise juurega puu planaarkood on Dycki k<strong>ee</strong>l 2n-täheline sõna. Näiteks puu<br />

planaarkood on sõna 1111100100011011010000.<br />

Jaan Penjam, email: jaan@cs.<strong>ioc</strong>.<strong>ee</strong> Diskr<strong>ee</strong>tne Matemaatika II: Puude loendamine


Märgendatud ja märgendamata puud<br />

Puude esitamine arvuti mälus<br />

Prüferi kood<br />

Märgendamata puude loendamine<br />

Märgendamata puud<br />

Teor<strong>ee</strong>m 8.5.1<br />

Märgendamata n-tipuliste puude arv Tn rahuldab võrratust<br />

n n−2<br />

n! Tn 4 n−1<br />

Alumine tõke tuleneb sellest, et iga n-tipulist puud saab erinevate märgenditega<br />

märgendada n! viisil:<br />

Ülemise tõkke saab tuletada juurega puude võimalike planaarkoodide arvust.<br />

n-tipulise juurega puu planaarkood on Dycki k<strong>ee</strong>l 2n-täheline sõna. Näiteks puu<br />

planaarkood on sõna 1111100100011011010000.<br />

Jaan Penjam, email: jaan@cs.<strong>ioc</strong>.<strong>ee</strong> Diskr<strong>ee</strong>tne Matemaatika II: Puude loendamine


Märgendatud ja märgendamata puud<br />

Puude esitamine arvuti mälus<br />

Prüferi kood<br />

Märgendamata puude loendamine<br />

Märgendamata puud<br />

Dycki k<strong>ee</strong>l 2n-täheliste sünade arv võrdub Catalani arvuga<br />

Cn = 1<br />

<br />

2n<br />

n + 1 n<br />

S<strong>ee</strong>ga võiks Teor<strong>ee</strong>mi 8.5.1 tingimuse anda ka täpsemalt:<br />

nn−2 n! Tn 1<br />

<br />

2n<br />

n + 1 n<br />

Kui n > 30, siis n n−2 on suurem kui n!2 n . S<strong>ee</strong>ga võib Teor<strong>ee</strong>mi 8.5.1 tingimuse<br />

anda paremini m<strong>ee</strong>lde jääval kujul:<br />

2 n Tn 4 n<br />

Jaan Penjam, email: jaan@cs.<strong>ioc</strong>.<strong>ee</strong> Diskr<strong>ee</strong>tne Matemaatika II: Puude loendamine


Märgendatud ja märgendamata puud<br />

Puude esitamine arvuti mälus<br />

Prüferi kood<br />

Märgendamata puude loendamine<br />

Märgendamata puude arv<br />

Teor<strong>ee</strong>m (Otter, 1948)<br />

Märgendamata puu tippude arvu n piiramatu kasvu korral kehtib<br />

tingimus:<br />

Cα<br />

lim<br />

n→∞<br />

nn−5/2 = 1,<br />

Tn<br />

kus C = 0,53495... ja α = 2.95576....<br />

Jaan Penjam, email: jaan@cs.<strong>ioc</strong>.<strong>ee</strong> Diskr<strong>ee</strong>tne Matemaatika II: Puude loendamine

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!