08.08.2013 Views

PUUDE LOENDAMINE - Cs.ioc.ee

PUUDE LOENDAMINE - Cs.ioc.ee

PUUDE LOENDAMINE - Cs.ioc.ee

SHOW MORE
SHOW LESS

Transform your PDFs into Flipbooks and boost your revenue!

Leverage SEO-optimized Flipbooks, powerful backlinks, and multimedia content to professionally showcase your products and significantly increase your reach.

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!