E' stata attivata la prenotazione per lo scritto di giugno sul Totem.
Si ricorda che la prenotazione allo scritto e' obbligatoria.
lunedì 31 maggio 2010
Fine lezioni
Oggi si e' svolta l'ultima lezione del corso. Grazie per l'attenzione ed in bocca al lupo per l'esame.
Lezione del 31/5/2010
Ancora sul ri-bilanciamento di alberi AVL a seguito dell'inserimento di un nodo. Esercizi: come ricalcolare le altezze dei sottoalberi di un ABR a seguito dell'inserimento di un nuovo nodo.
mercoledì 26 maggio 2010
Lezione del 26/5/2010
Alberi binari di ricerca (ABR): codice della funzione di inserimento; cancellazione di un nodo. Mantenere il bilanciamento degli ABL con gli alberi AVL: ribilanciamento di un albero AVL dopo una operazione di modifica dell'albero.
Lezione del 24/5/2010
Alberi binari di ricerca (ABR): funzioni di ricerca generica, ricerca minimo ed inserimento; rappresentazione in C degli ABR; codice per ricerca generica e ricerca minimo.
Lezione del 17/5/2010
Ricerca binaria su un vettore ordinato: algoritmo di complessita' logaritmica nel numero di elementi del vettore; limite inferiore sulla complessita', ovvero ottimalita' dell'algoritmo di ricerca binaria.
lunedì 17 maggio 2010
Avviso
In occasione della settimana di mobilitazione degli Atenei Italiani contro il DDL Gelmini, e' stata deliberata la sospensione della didattica nei giorni 18 e 19 maggio. Pertanto La lezione del 19/5 non si svolgera' e verra' recuperata a Giugno.
venerdì 14 maggio 2010
Lezione del 12/5/2010
Esercizi: riparazione dello Heap dopo la modifica del peso di un suo nodo (codice della funzione al termine del post); confronto tra stringhe.
Codice della funzione heapModify proposto dallo studente Fabio Durastante.
Codice della funzione heapModify proposto dallo studente Fabio Durastante.
/*La funzione prende in input l'Heap H,
il numero del nodo da modificare
e il suo nuovo peso. */
Heap heapModify(Heap H, int u, int e){
if(u>H.n||u==0) return H;
/* si porta il nodo verso la radice */
if(H.v[u]>e){
H.v[u]=e;
while( u>1 && H.v[u]<H.v[u/2]){
swap(&(H.v[u]),&(H.v[u/2]));
u=u/2;
}
return H;
}
if(H.v[u]<e){
/* ... altrimenti si porta il nodo
verso le fogli */
H.v[u]=e;
while(2*u+1<=H.n &&(H.v[u]>H.v[2*u]||H.v[u]>H.v[2*u+1])){
if(H.v[2*u]<H.v[2*u+1]){
swap(&(H.v[u]),&(H.v[2*u]));
u=2*u;
} else{
swap(&(H.v[u]),&(H.v[2*u+1]));
u=2*u+1;
}
}
if(2*u<H.n && H.v[u]>H.v[2*u])
swap(&(H.v[u]),&(H.v[2*u]));
return H;
}
/* ... non occorre nessuna modifica. */
H.v[u]=e;
return H;
}
mercoledì 12 maggio 2010
Lezione del 3/5/2010
Esercizi: Rappresentazione della coda con liste circolari doppiamente linkate; Inversione di una lista.
Lezione del 10/5/2010
Rappresentazione degli Heap con vettore: implementazione in C delle funzioni di accesso e cancellazione del minimo, inserimento di un nuovo elemento. L'algoritmo di ordinamento ottimo Heap-Sort.
mercoledì 5 maggio 2010
Lezione del 5/5/2010
Code con priorita' ed Heap: operazioni di inserimento e cancellazione del minimo dall'heap in tempo logaritmico nella dimensione della struttura.
Iscriviti a:
Commenti (Atom)