Please enable JavaScript.
Coggle requires JavaScript to display documents.
Algoritmi - Coggle Diagram
Algoritmi
Esercizi
1: Albero
-
-
-
costruisco tabella hash
-
-
-
-
se usassi linear probing al posto di quadratic probing, permetterebbe riduzione numero collisioni in questo esempio? E in generale?
In generale linear probing ha il problema del clumping o accumuli. Zone della tabella tendono a riempirsi non uniformemente, causando zone della tabella ad essere impopolate e altre troppo affollate
-
-
2: Grafo
cammino
albero coprente a costo minimo (MST)
grafi non orientati, ma pesati e connessi
Kruscal (greedy)
-
ad ogni passo scelgo arco con costo minore che collega 2 alberi separati, alla fine ogni nodo appartiene allo stesso albero
-
Prim (greedy)
-
ad ogni passo aggiungo all'albero il nodo con l'arco a costo minore valutando tra tutti gli archi non ancora scelti e che partono da nodi già aggiunti
-
Uso Prim quando ho tanti edge, Kruskal quando ne ho pochi
-
-
disegna albero DFS ottenuto, classifica archi. Se fosse non orientato, albero cambierebbe?
-
3: Sorting
-
Quick sort (pivotterino)
-
-
-
-
-
-
ripeto il processo spezzando l'array a dx e sx del pivot che ho appena riinserito, ripetendo l'operazione fino che tutti i sottoarray sono ordinati e posso ricombinarli a formare il principale
-
-
-
-
Complessità
Con albero ricorsione
Creo albero, con coefficente di T come numero di rami che ogni foglia ha e sostituendo valore T(n) all'eq
-
-
Calcolo numero di livelli (incognita = 1, in questo modo diventa frazione e posso usare logaritmi)
-
-
Domande
1: descrivere strutture dati, implementazioni, problemi/soluzioni, costo computazionale
Stack e queue
stack
tipo particolare di lista dove operazioni inserimento e cancellazioni avvengono solo ad un'estremità (top)
-
operazioni
Push (x, S) inserisce x in stack S
-
-
-
-
implementazioni
-
Puntatori
-
puntatori puntano in ordine inverso gli elementi dello stack, ovvero ogni elemento punta all'elemento inserito prima di lui.
-
queue
tipo particolare di lista dove operazioni inserimento si fanno in coda, mentre le rimozioni in testa
operazioni
enqueue(x, Q) inserisce x in coda Q come ultimo elemento
-
-
-
-
implementazioni
array
come una lista, in ogni cella c'è un elemento e possiamo sempre sapere cosa c'è prima/dopo
se array circolare, serve variabile booleana per tenere traccia di testa/coda soprattutto per i casi di tutto pieno/vuoto
costo operazione: O(1), posizioni note, non devo mai scorrere tutta la coda
-
-
-
Grafo
-
-
non orientato
connesso, con n nodi. Quanti archi? Min e max giustificando
-
definizion
coppia (V,E) con V nodi/vertici e E archi/edge
può essere
-
fortemente connesso
orentato, per ogni coppia di vertici si può raggiungere ognuno dei due dall'altro
implementazioni
-
liste di adiacenza
-
vantaggio
costo computazionale minore nello scorrere lista rispetto matrice, ma se grafo denso archi e liste sono lunghe
caso uso
quando grafo non denso uso liste, quando denso uso matrice
viste
algoritmi
-
DFS (Depth First Search)
partendo da sorgente, va in profondità. segue adiacenza sorgente fino che non può più proseguire
-
-
-
Dizionario
implementazione
-
-
tabelle di hash
-
funzionamento
-
hashing: applicando una funzione di hash alla chiave h(k) si può ottenere l'indice di posizionamento di un elemento in un bucket dell'array
collisioni
essendo inevitabili le funzioni di hashing devono avere un modo per gestirle, conosciamo
open hashing
- 1 more item...
closed hashing
- 1 more item...
-
vantaggi
-
-
permette di accedere a valori in modo efficiente perchè indice viene calcolato in modo più rapido di quanto ci si metterebbe a scorrere l'intero array
-
2: teoria generale
-
-
-
Albero
-
-
composto da 100 nodi, quanti archi? Giustifica.
-
Binario (BST)
-
-
-
-
da 63 nodi, calcolo massimo foglie
con altezza H = 3, calcolo max/min nodi
-
definizione
collezione elementi detti nodi, uno dei quali radice. Sono tra di loro in relazione padre-figlio.
-
-
-
-
Grafo
non orientato
connesso, 6 archi, quanti nodi? Max min
dipende se un grafo è
semplice (no loops)
non ha limite superiore, il minimo sono 5 (n-1) nodi
-
Dizionario (ADT insieme)
Implementaizone operaziozni intersez, unione, differenza
-
-