• Non ci sono risultati.

Laboratorio di Algoritmi e Strutture Dati ESAME FINALE 12/12/2001 (Compito C – seconda parte) SECONDA PARTE C.2.1

N/A
N/A
Protected

Academic year: 2021

Condividi "Laboratorio di Algoritmi e Strutture Dati ESAME FINALE 12/12/2001 (Compito C – seconda parte) SECONDA PARTE C.2.1"

Copied!
1
0
0

Testo completo

(1)

Laboratorio di Algoritmi e Strutture Dati ESAME FINALE 12/12/2001

(Compito C – seconda parte)

SECONDA PARTE

C.2.1

Un grafo G=(V,E) è detto bipartito se è possibile partizionare i nodi di V in due insiemi disgiunti, U e W, in modo tale che per ogni arco e = (u,v ) in E(G), gli estremi u e v non appartengono allo stesso sottoinsieme U oppure W.

In pratica, tutti gli archi di un grafo bipartito G = (U, W, E) vanno da U a W. Si scriva un programma che determini se un dato grafo fornito in ingresso come matrice di incidenza A (n x m) è bipartito. [suggerimento: si utilizzi una struttura per insiemi disgiunti con due soli insiemi S1 e S2; si consideri il nodo i e tutti i suoi nodi adiacenti. Si provi a inserire i in S1 e i suoi adiacenti in S2, e viceversa; si ripeta il procedimento per tutti i nodi del grafo]

.

C.2.2

Si disegni l’albero binario di ricerca che si ottiene, a partire da un albero vuoto, dopo ognuna delle seguenti sequenze di inserimenti (add) e cancellazioni (remove)

:

add <6, 3, 1, 2, 4, 7>

remove <6, 3, 7>

C.2.3)

Si descrivano le euristiche UnionByRank e PathCompression per gli insiemi disgiunti e i vantaggi che si conseguono con il loro utilizzo

.

C.2.4)

Si illustri la tecnica di scansione lineare per l’hashing ad indirizzamento aperto

.

Riferimenti

Documenti correlati

Dato un grafo rappresentato con una matrice di adiacenza A (n x n), utilizzando il tipo di dati astratto Insiemi Disgiunti si costruisca una partizione di G in insiemi stabili in

Ad esempio, la fusione delle due comitive “fan della sabbia” (in cui sono presenti Mario, Pino e Aldo) e “fan del mare chiaro ” (Giuseppe e Vinicio) dà luogo alla

L’algoritmo effettua una divisione del tempo in intevalli di uguale ampiezza, e verifica in ogni intervallo la priorità associata a ogni processo, quindi sceglie quello più

Si supponga inoltre definita come globale la variabile struct node* root; scrivere una funzione int height(struct node * root) che calcoli l’altezza dell’albero;.. A.B.2)

C.B.1) Sia definito globale un array int A[n]; si scriva una funzione void insertion_sort(…) ricorsiva che ordini in modo crescente gli elementi di A [SUGGERIMENTO: per ordinare

si descriva in linguaggio C l’implementazione dell’operazione di cancellazione di un elemento dall’albero puntato da root (si consideri data l’operazione visita per la ricerca

Solo quando uno di essi è trovato libero, si procede con l’estrazione dalla coda del prossimo paziente, e la sua assegnazione all’ambulatorio libero].. B.C.1 Si discutano i

C.A.3 La rappresentazione “figlio-sinistro, fratello-destro” di un albero n-ario prevede che ogni nodo sia collagato come in figura:. Si descriva una procedura di