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 induzione
Caso base T = r → banale.
Passo 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 depth. If 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, discendenti, nodi esterni, albero ordinato
height(τ) = maxv∈T, v figlia (depth(v))
Procedura per induzione
Caso base T=r → banale.
Passo induttivo vale per alberi con 1 ≤ m ≤ n nodi. Proviamo 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 max. So tutte le foglie.
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 = # nodi, m = # foglie.
m = n – m + 1
h + 1 ≤ m ≤ 2h
Proprietà
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) 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