Arbori

 

 

Definitia 1: Se numeste Arbore cu rădacină = graf neorientat conex fără cicluri în care unul din noduri este desemnat ca rădăcină. Nodurile pot fi așezate pe niveluri începând cu rădăcina care este plasată pe nivelul 1.

 

Rădăcină = Nod special care generează așezarea unui arbore pe niveluri; Această operație se efectuează în funcție de lungimea lanțurilor prin care celelalte noduri sunt legate de rădăcină.

 

Descendent = într-un arbore cu rădăcină nodul y este descendentul nodului x dacă este situat pe un nivel mai mare decât nivelul lui x și există un lanț care le unește și nu trece prin rădăcină.

 

Descendent direct /  fiu = într-un arbore cu rădăcină nodul y este fiul (descendentul direct) nodului x dacă este situat pe nivelul imediat următor nivelului lui x și există muchie între x și y.

 

Ascendent = într-un arbore cu rădăcină nodul x este ascendentul nodului y dacă este situat pe un nivel mai mic decât nivelul lui y și există un lanț care le unește și nu trece prin rădăcină.

 

Ascendent direct / părinte = într-un arbore cu rădăcină nodul x este părintele (ascendentul direct) nodului y dacă este situat pe nivelul imediat superior (cu număr de ordine mai mic) nivelului lui y și există muchie între x și y.

 

Frați = într-un arbore cu rădăcină nodul x este fratele nodului y dacă au același părinte.

 

Frunză =  într-un arbore cu rădăcină nodul x este frunză dacă nu are nici un descendent direct

 

Arbore cu rădăcină

 

- Nodul 1 este rădăcină.

- Nodurile 5, 6, 7 sunt fii nodului 3.

- Nodul 7 este părintele nodurilor 9 și 10;

- Nodul 9 este descendentul lui 3

- Nodul 3 este ascendentul lui 10

- Nodurile 8, 9 și 10 sunt frunze

- Nodurile 5, 6 și 7 sunt frați.

 

Metode de memorare a arborilor

 

Cum un arbore este un caz particular de graf neorientat inseamna ca poate fi reprezentat ca un graf. De aici rezulta ca pentru reprezentarea unui arbore se pot utiliza:

 

1.        Metode specifice grafurilor:

 

-matricea de adiacenta

-liste de adiacente

 

2.        Metode specifice arborilor:

 

-prin legaturi de tip TATA. Arborele se reprezinta sub forma unui vector t cu n componente (n reprezinta numarul de noduri). Daca t[i]=k atunci nodul I este descendent al nodului k. Daca nodul I este varf atunci t[i]=0.

 

Fie arboreal din figura:

 

 unde nodul 1 este radacina.  Atunci vectorul de tip tata este:

 

0

1

1

1

3

3

3

4

7

7

 

Legatura de tip TATA se mai numeste si legatura cu referinte ascendente.

 

Legatura de tip TATA este determinata si de modul in care am ales nodul radacina. Spre exemplu daca vom considera nodul 4 ca fiind radacina vom obtine o alta solutie.

 

Metode de parcurgere:

 

Metodele de parcurgere sunt cele specifice grafurilor: in adancime si in latime.

 

 

Probleme propuse:

 

·         Pornind de la definitia arborelui: un graf neorientat care este conex sin nu contine cicluri sa se determine daca un graf neorientat este arbore. Graful este memorat prin matricea de adiacente. Solutie

·         Definitia 2 – un graf neorientat cu n noduri care are n-1 muchii si nu contine cicluri. Pornind de la definitia 2 sa se determine daca un graf neorientat memorat prin matricea de adiacente  poate fi arbore.

·         Fie arborele din figura anterioara. Sa se reprezinte arborele prin: matricea de adiacenta, liste de adiacenta. Sa se memoreze arborele prin legatura de tip TATA, considerand nodul 1 radacina si apoi nodul 4 radacina

·         Fie un arbore memorat prin matricea de adiacenta. Sa se treaca arborele in vector de tip tata. Se citeste radacina. Solutie

·         Dintr-un fisier se citesc : numarul de noduri apoi vectorul de tip tata.
a) sa se determine radacina
b) afisati frunzele (nodurile terminale)
c) pentru un nod citit sa se determine: fii si parintele
d) sa se determine nodul cu cei mai multi descendenti

·         Arbore genealogic. Dintr-un fisier se citesc numele a n persoane. Persoanele sunt numerotate de la 1 la n. In continuare se citesc m perechi de nume x y cu semnificatia x este parintele lui y.  Sa se determine:

a)       stramosul comun

b)       persoanele fara descendenti

c)        parintele unei persoane al carei nume se citeste de la tastatura

d)       fii unei persoane al carei nume se citeste de la tastatura

e)       daca doua personae al caror nume se citesc de la tastatura sunt frati

f)         toti ascendentii unei personae

g)       toti descendentii unei persoane

h)       sa se determine bunicul unei persoane

i)         se citesc numele a doua persoane x,y. Sa se determine daca x este ascendentul lui y (direct sau indirect)

j)         din a cata generatie face parte o persoana citita?

k)        Cate generatii are arborele

l)         verii unei persoane

 

·         Sa se memoreze intr-un arbore numere intregi (prin legaturi de tip tata) .

o        Sa se determine lantul simplu radacina-frunza  avand cea mai mare suma a cifrelor

o        Sa se determine lantul simplu radacina-frunza  avand cele mai multe numere prime

·         In mod evident numarul de niveluri al unui arbore depinde de radacina aleasa. Dandu-se un graf conex si fara cicluri sa se determine un nod care sa fie radacina astfel incat numarul de niveluri sa fie maxim (minim).

·         Se citesc doi arbori, unde fiecare are nodurile 1,2,…,n si sunt reprezentati prin legaturi de tip tata. Sa se decida daca ei reprezinta unul si acelasi arbore (in reprezentari diferite).

·         Sa se afiseze nodurile unui arbore pe niveluri

·         Fie doi arbori reprezentati prin vectorii de tati. Sa se determine daca cei doi arbori reprezinta unul si acelasi graf.