Gli alberi - PowerPoint PPT Presentation

1 / 31
About This Presentation
Title:

Gli alberi

Description:

Title: Codici Author: Barilla Last modified by: Alberto Broggi Created Date: 10/11/1998 12:52:16 PM Document presentation format: Presentazione su schermo – PowerPoint PPT presentation

Number of Views:89
Avg rating:3.0/5.0
Slides: 32
Provided by: Bari169
Category:
Tags: alberi | barilla | gli

less

Transcript and Presenter's Notes

Title: Gli alberi


1
Gli alberi
  • E' un tipo di dato astratto che rappresenta
    relazioni gerarchiche tra oggetti
  • Le relazioni esplicate sono tra
  • genitori
  • figli
  • fratelli
  • Radice, foglie
  • Alberi binari, N-ari

2
Gli alberi binari
  • Ogni nodo ha al massimo 2 figli
  • Sui figli è definito un ordinamento
  • Ogni figlio può essere la radice di un nuovo
    albero binario
  • Vantaggio migliorare l'efficenza della visita di
    una lista

3
Gli alberi binari
  • Metodi
  • test_albero_vuoto alb_bin ? boolean
  • costruisci alb_bin x nodo x alb_bin? alb_bin
  • radice alb_bin ? nodo
  • sinistro alb_bin ? alb_bin
  • destro alb_bin ? alb_bin

4
Gli alberi binari
  • Algoritmi di visita
  • visita in preordine (ABCD)
  • visita in postordine(BDECA)
  • visita simmetrica(BADCE)

A
B
C
D
E
5
Alberi binari rappr. sequenziale
  • Utilizza array di lunghezza predefinita
  • radice in prima posizione
  • figli in posizione (2i) e (2i1)
  • Alberi completi
  • Per gli alberi non completi serve un tag booleano
    che indica se il nodo esiste

6
Alberi binari rappr. sequenziale
A
true
1
B
true
2
A
C
true
3
0
false
4
B
C
0
false
5
D
true
6
D
E
E
true
7
7
Alberi binari rappr. sequenziale
  • Svantaggi
  • utilizzo elevato memoria
  • operazioni in inserimento complesse (richiedono
    spostamenti nell'array)
  • Vantaggi
  • accesso semplice (anche per elementi ad una
    specifica profondità)

8
Alberi binarirappresentazione collegata
  • Ogni elemento della lista contiene
  • un atomo (la radice dell'albero)
  • una lista (sottoalbero sinistro)
  • una lista (sottoalbero destro)
  • ( A (B () () ) ( C (D () () ) (E () () ) ) )

9
Alberi binarirappr. collegata mediante array
  • Array a tre valori
  • indice sottoalbero sinistro
  • valore del nodo
  • indice sottoalbero destro
  • Serve una variabile inizio per definire l'indice
    della radice all'interno dell'array

10
Alberi binarirappr. collegata mediante array
0
D
0
1
A
5
A
3
2
1
C
6
3
0
0
0
4
B
C
0
B
0
5
0
E
0
6
D
E
Inizio 2
11
Alberi binari rappr.collegata mediante puntatori
  • Ogni nodo viene rappresentato con tre campi
  • l'informazione associata al nodo
  • un puntatore al sottoalbero di sinistra
  • un puntatore al sottoalbero di destra

12
Alberi binari rappr. collegata mediante
puntatori
A
A
0
B
0
B
C
C
D
E
0
E
0
0
D
0
13
Esercizio
  • Data in ingresso una rappresentazione parentetica
    di un albero, generare l'albero corrispondente
    utilizzando la rappresentazione collegata sia
    mediante array che mediante puntatori

14
Alberi binari di ricerca
  • Problema
  • memorizzare grosse quantità di dati soggetti a
    frequenti operazioni di ricerca
  • Soluzione
  • utilizzo di alberi di ricerca in cui il valore di
    un nodo è per definizione maggiore o uguale di
    quello dei nodi del sottoalbero sx, e minore del
    sottoalbero dx

15
Alberi binari di ricerca
  • Vantaggi
  • minor complessità
  • Requisiti
  • profondità ridotta dell'albero
  • alberi bilanciati
  • bilanciamento dell'albero

16
Alberi n-ari
  • Non hanno limiti sul numero di figli
  • Generalmente
  • visita solo preordine e postordine
  • rappresentazione mediante lista
  • rappresentazione mediante albero binario (miglior
    sfruttamento della memoria)
  • rappresentazioni tramate(per ottimizzare certe
    operazioni)

17
I grafi
  • Strutture che rappresentano relazioni binarie su
    un insieme di elementi (grafi orientati)
  • E' necessario definire politiche di visita (in
    presenza di cicli è possibile raggiungere nodi
    già visitati serve un tag di visita)

18
Visita in profondità di un grafo
Depth first serach analoga alla visita in
preordine
2
1
3
4
7
  • 1 3 4 6 5 7 2

5
6
19
Visita in ampiezza di un grafo
Breadth first serach analoga alla visita in
postordine
2
1
3
4
7
  • 7 5 6 4 2 3 1

5
6
20
Rappresentazione dei grafi
  • Per rappresentare un grafo esistono diverse
    possibilità
  • matrice delle adiacenze
  • liste dei successori
  • lista doppia

21
Matrice delle adiacenze
  • La matrice è così definita
  • tante righe e colonne quanti sono i nodi del
    grafo
  • gli elementi della matrice sono di tipo booleano
  • il generico elemento ei,j è definito
  • true, se esiste un arco tra il nodo i e il nodo
    j
  • false, altrimenti

22
Matrice delle adiacenze
  • 1 2 3 4 5 6 7
  • 1 0 0 1 0 0 0 0
  • 2 1 0 1 0 0 0 0
  • 3 0 1 0 1 0 0 0
  • 4 0 0 0 0 0 1 1
  • 5 0 0 0 0 0 0 0
  • 6 0 0 1 1 1 0 0
  • 7 1 0 0 0 0 0 0

23
Matrice delle adiacenze
  • Se i valori dei nodi non sono numerici, serve una
    corrispondenza tra nodi (ad es. stringhe) con gli
    indici
  • "Vettore dei nodi"
  • A S R V K P E
  • 1 2 3 4 5 6 7

24
Matrice delle adiacenze
  • Se anche gli archi sono etichettati, gli elementi
    della matrice non saranno booleani, ma del tipo
    usato per le etichette

25
Matrice delle adiacenze
  • Vantaggi
  • semplice
  • accesso diretto alle informazioni sugli archi
    (meccanismi di accesso ad una matrice)
  • Svantaggi
  • numero massimo di nodi del grafo
  • occupazione in memoria pari a N2
  • l'analisi di un nodo richiede una scansione

26
Matrice delle adiacenzerappresentazione compatta
  • Generalmente la matrice delle adiacenze è sparsa,
    quindi si può usare
  • la rappresentazione compatta usata per le matrici
    sparse
  • una nuova rappresentazione che evidenzia solo gli
    archi
  • nodo di part 1 2 2 3 3 4 4 6 6 6 7
  • nodo di arr 3 1 3 2 4 6 7 3 4 5 1

27
Liste di successori
  • Si associa ad ogni nodo una lista semplice,
    realizzata mediante rappresentazione collegata
  • In ogni lista si memorizza l'insieme dei
    successori del nodo senza un ordinamento
    particolare
  • I nodi sono in corrispondenza con gli archi per
    cui si possono memorizzare anche evenuali
    etichette

28
Liste di successori
1
3 0
2
1
3 0
3
2
4 0
4
6
7 0
0
5
6
3
4
5 0
7
1 0
29
Liste di successori
  • Vantaggi
  • migliore occupazione della memoria proporzionale
    a NM
  • più efficiente determinare la lista dei
    successori
  • Svantaggi
  • verifica di un arco tra i e j è poco agevole
  • l'utilizzo di un vettore per le info sui nodi

30
Liste doppie
  • Si utilizza una lista per memorizzare le
    informazioni dei nodi
  • Vantaggi
  • il numero di nodi non ha un limite massimo
  • Svantaggi
  • l'accesso ai nodi è più complesso

31
Percorso minimo in un grafo
  • Problema
  • dato un grafo con archi etichettati con valore
    interi positivi, si trovi il percorso più breve
    tra due nodi
  • Soluzione
  • proposta da Dijkstra
Write a Comment
User Comments (0)
About PowerShow.com