ABSTRACT DATA TYPE
Modello che specifica tipi di dati, operazioni, accessibilità, parametri in Java realizzato perciò più tramite interfacce che con classi. Sono dichiarazioni di operazioni e protocolli.
ALBERI GENERALI
Definizione di albero radicato / antenati / discendenti nodi esterni / albero ordinato
- height(Γ) = maxv∈T, v foglia (depth(v))
Procedura per induzioneCaso base T = r → banalePasso induttivo vale ∀ alberi con 1 ≤ m ≤ n nodi.Prendiamo un albero con n+1 nodi.
- height(Γi) = maxv∈T, v foglia (depth(vi))
- height(Γ) = 1 + maxi maxv∈Ti, v foglia (depth(v)) = maxv∈Ti, v foglia
Completes a di depthIf T is root else depth(T.root)Θ(dv+1) ~ Θ(n)
ABSTRACT DATA TYPE
Modello che specifica tipo di dati, operazioni, accessibilità, parametri.In java realizzato perciò più tramite interfacce che con classi.Sono dichiarazioni di osserva e regola.
ALBERI GENERALI
Definizione di albero binario / antenati / discendentiNodi esterni / albero ordinato
height(τ) = maxv∈T, v figlia (depth(v))
Procedura per induzioneCaso base T=r → banalePasso induttivo vale per alberi con 1 ≤ m ≤ n nodiProviamo su albero con n+1 nodi
height(τi) = 1 + max(... height(τi))
height(τ) = maxv∈T, v figlia (depth(v))
height(τi) = 1 + maxv∈T, v figlia depth(v)
= max (1 + maxv∈T, v figlia depth(v))
Quello lui maxSo tutte le foglie
IIII complessità di depth
If T is root etc.else return 1 + depth(T.par)Θ(dw+1) ~ Θ(n)
Complessità di height
h = 0
for v ∈ T.children prerrendo h = max {h, height(Tw)}
costo accesso ad ogni nodo Θ(cu + 1) cu = # figli di u
∑v∈Tu cv = n-1 (ogni nodo, eccetto la radice, ha un padre e contribuisce una volta alla sua)
Visite preorder/postorder
visita v
foreach w ∈ T.children(v)
preorder Tw
Alberi Binari
Alberi binari propri/pieni
n = # nodim = # fogliem = n – m + 1h + 1 ≤ m ≤ 2hPropietà
Visita inorder
if (T.left ≠ null) then inorder T.left(v)
visita v
if (T.right(v) ≠ null) then inorder T.right
Priority Queue
Collezione di entry in cui le chiavi rappresentano la priorità e provengono da un universo totalmente ordinato
Entry = (chiave valore)
Liste
- Insert Θ(1)
- RemoveMin Θ(n)
- Min Θ(n)
Lista non ord | Lista ord
- Insert Θ(n)
- Min Θ(1)
- RemoveMin Θ(1)
Heap
Albero binario (completo e bilanciato) che al livello i ha 2i nodi (al massimo) e nell'ultimo livello tutti i nodi interni hanno 2 foglie tranne questo più a dx che può avere solo il figlio dx
Un albero binario completo con n nodi ha altezza h=⌊log2n⌋
Definizione Min Heap
∀i, min≤{e1,e2,e3}
la chiave massima sta in una foglia dato che il nodo ogni alberico ha chiave maggiore
Level Numbering
Rappresentato tramite array/radice in P[1]
Figli sono P[2i],P[2i+1] | genitore P[⌊i/2⌋]
Struttura dati implicita
RemoveMin/Insert Θ(logn)
Costruzione di uno heap a partire da n entry date
1. Approccio Top/Down
Parto dal primo e vado fino all'ultimo facendo un up-heap/bubbling
Θ (∑j=2n log j) Demonstriamo Θ(n log n)
∑j=1n log j ≤ ∑j=1n log j ≤ n log n
Istanza cattiva, ordine decrescente
2. Approccio Bottom-Up
Eseguo ⌊n/2⌋ iterazioni
P[⌊n/2k⌋ nodo più piccolo più a dx dell’ultimo livello
Ad ogni iterazione faccio un down-heap/bubbling
Per ogni nodo a livello i: 0 ≤ i ≤ h-1 il down-heap bubbling costa O(h-i) e ho 2i nodi al livello i.
Θ (n + ∑j=1⌊h/2⌋) = O(n + ∑j=1h-1 2i(h-i))
Vogliamo mostrare ∑j=1n e(1/2) j < 3
Faccio una stima con serie geometrica
∑ej/2(1/2) < 3 (3)j = 36/3-1/3 3
∑e1 2i(h-i) = 2h
∑e1
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
-
Concetti di teoria Algoritmi e Strutture Dati
-
Appunti di teoria Algoritmi e Strutture Dati
-
Algoritmi e strutture dati - Esercizi
-
Appunti Basi di dati