Logo dell'Università di Catania: Siciliae Studium Generale 1434 Logo del Centro IPPARI, Programmazione
matite e gomma
Loghi istituzionali: Siciliae Studium Generale 1434, Centro ricerche IPPARI, Università di Catania, Facoltà di Scienze Matematiche, Fisiche, Naturali, Insegnamento di Programmazione

Alberi

Lezione 21 di Programmazione 2

Docente: Giuseppe Scollo

Università di Catania, sede di Comiso (RG)
Facoltà di Scienze Matematiche, Fisiche e Naturali
Corso di Studi in Informatica applicata, AA 2006-7

Logo di Conformità WCAG-1 di Livello Tripla A, W3C-WAI Web Content Accessibility Guidelines 1.0 Validazione XHTML 1.0 Validazione CSS 2

Indice

  1. Alberi
  2. alberi: definizioni
  3. alberi: terminologia
  4. rappresentazione di alberi binari
  5. rappresentazione binaria di foreste
  6. alberi liberi e grafi
  7. esercizi

alberi: definizioni

popolarità degli alberi in informatica:

gli alberi sono inoltre presenti in una miriade di applicazioni: alberi genealogici, organigrammi, strutture di file system, strutture di libri, alberi sintattici, termini, ...

albero libero: grafo connesso privo di cicli

albero (radicato): albero con un vertice designato, detto radice

alberi: terminologia

rappresentazione grafica di un albero

cammino:
sequenza di vertici distinti, con vertici successivi connessi da archi

ordinamento dei vertici:

  • m < n se m precede n nel cammino dalla radice a n

terminologia: padre, figli, foglie, sottoalbero, ...

un albero è k-ario se ogni vertice ha al più al più k figli

un albero k-ario è completo se ogni vertice interno (cioè non foglia) ha k figli

un albero si dice ordinato se è definito un ordine (totale) sui figli di ciascun padre

l'altezza di un albero è la massima lunghezza (in n. di archi) dei cammini dalla radice

rappresentazione di alberi binari

albero binario = albero k-ario, con k = 2

si rappresentano in tal modo alberi binari ordinati

esempio di albero binario ordinato

rappresentazione dell'albero binario ordinato in esempio

rappresentazione binaria di foreste

la rappresentazione vista degli alberi binari ben si presta ad operazioni su di essi per l'esecuzione delle quali si proceda dalla radice verso le foglie

la suddetta rappresentazione si generalizza facilmente ad alberi k-ari, dotando di k link la struttura di rappresentazione dei vertici, oltre all'eventuale link al vertice padre, quando ciò convenga

in tutti questi casi, si può anche scegliere una rappresentazione basata su array e indici invece di strutture e puntatori, poiché è prefissato un limite massimo al numero dei figli di qualsiasi vertice

una soluzione consiste nel rappresentare l'insieme (ordinato o meno) dei figli di un vertice interno mediante una lista

qui, però, un link punta al figlio più a sinistra, l'altro punta a un fratello del vertice

una foresta è un insieme di alberi che non condividono vertici

una foresta è ordinata se tale insieme è totalmente ordinato e gli alberi sono ordinati

alberi liberi e grafi

gli alberi liberi sono grafi (non orientati) che soddisfano una proprietà caratteristica; questa può essere enunciata in vari modi: un grafo con N vertici è un albero libero se soddisfa una delle seguenti condizioni equivalenti:

un cammino in un grafo è una sequenza di vertici in cui vertici successivi sono connessi da un arco: il cammino è semplice se ogni vertice in esso occorre una sola volta

ogni cammino è semplice anche in un albero libero, caso particolare di foresta libera

esercizi

  1. dimostrare che esiste una biiezione fra alberi binari ordinati e foreste ordinate
  2. generalizzare la caratterizzazione degli alberi liberi qui data da cinque condizioni equivalenti sui grafi, ad una analoga caratterizzazione delle foreste libere
  3. su N vertici si possono costruire NN-2 alberi liberi: quanti alberi radicati?
  4. due alberi (ordinati o meno) sono isomorfi se esiste una biiezione fra i vertici che rispetta la relazione binaria costituita dagli archi
    • cioè: se φ è una tale corrispondenza, ε1 la relazione di esistenza di arco nel primo albero e ε2 quella nel secondo albero, allora u ε1 v φ(u) ε2 φ(v) per qualsiasi coppia di vertici u, v nel primo albero
    dimostrare che se due alberi ordinati rappresentano lo stesso albero non ordinato allora sono isomorfi, ma che non vale l'implicazione conversa
  5. progettare e implementare un algoritmo per stabilire se due alberi ordinati, rappresentati da alberi binari ordinati come indicato qui, rappresentino lo stesso albero non ordinato, e valutarne le prestazioni sia in via analitica che empirica