COMPITO DI ALGORITMI E STRUTTURE DATI Esercizio 1 Si

COMPITO DI ALGORITMI E STRUTTURE DATI
Esercizio 1
Si consideri la struttura dati pila su cui si possono effettuare le seguenti operazioni:
- PUSH(P ,x). Inserisce l’elemento x in testa alla pila P ;
- POP(P ). Estrae dalla pila P l’elemento in testa;
- MULTIPOP(P ,k). Estrae dalla pila P i primi k elementi che si trovano in
testa.
1.1 Si scriva lo pseudocodice di una implementazione della struttura dati pila
con un vettore (di dimensione M ). Si implementino le operazioni PUSH,
POP, MULTIPOP, segnalando errore in caso di “overflow” (pila contenente
M elementi: piena) e “underflow” (pila vuota).
1.2 Si determini la complessità di: un’operazione di PUSH; un’operazione di
POP; un’operazione MULTIPOP;
1.3 Si determini la complessità di m operazioni di PUSH, POP, MULTIPOP
di cui n operazioni sono PUSH.
Esercizio 2
Sia G un grafo orientato e pesato.
2.1 Si descriva tramite pseudocodice l’algoritmo di visita in ampiezza BFS(G,s)
e se ne analizzi la complessità;
2.2 Si descriva un grafo G = (N, E, w) tale che esiste s ∈ N tale che non è
possibile che BFS(G,s) determini l’albero dei cammini minimi da s;
2.3 Si descriva un grafo G = (N, E, w) tale che esiste s ∈ N tale che l’algoritmo
di Dijkstra non determina i cammini minimi da s.
Date: 5 Settembre 2008.
1