Dalla A alla Z passando per C - Robotica
Dalla A alla Z passando per C - Robotica
Dalla A alla Z passando per C - Robotica
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
18.10 Accesso diretto<br />
è applicabile solo a tavole <strong>per</strong> cui le chiavi <strong>per</strong>mettano di stabilire una corrispondenza biunivoca<br />
con gli indirizzi di memoria corrispondenti agli elementi della tavola.<br />
Esiste quindi una funzione di accesso che, a partire d<strong>alla</strong> chiave dell’elemento ricercato,<br />
<strong>per</strong>mette di ottenere l’indirizzo di memoria.<br />
A chiavi diverse corrispondono indirizzi diversi.<br />
è difficile prevedere l’inserimento di nuovi elementi (le relative chiavi devono ancora <strong>per</strong>mettere<br />
l’identificazione di indirizzi diversi).<br />
Alta velocità di accesso, ma scarsa applicabilità a causa delle ipotesi restrittive.<br />
18.11 Accesso calcolato (hashing)<br />
E’ una generalizzazione dell’accesso diretto essendo basato sulla funzione di accesso e richiedendo<br />
che la tavola sia memorizzata in una struttura sequenziale; tuttavia consente l’inserimento di<br />
nuovi elementi.<br />
Il metodo si basa su una funzione di accesso, che applicata <strong>alla</strong> chiave fornisce un numero<br />
intero minore della lunghezza della struttura sequenziale, che è a sua volta maggiore del numero<br />
di elementi da memorizzare.<br />
Il numero rappresenta l’indice dell’elemento all’interno della struttura.<br />
Purtroppo, a coppie di chiavi distinte può corrispondere lo stesso numero: problema della<br />
collisione di elementi (le chiavi sono dette sinonimi).<br />
Nasce il problema della scelta delle posizioni nella struttura sequenziale corrispondenti agli<br />
elementi in collisione.<br />
La scelta della funzione di accesso ed il criterio di gestione delle collisioni determinano la<br />
bontà dell’implementazione della tavola.<br />
I sinonimi possono essere memorizzati in catene interne o esterne <strong>alla</strong> tavola.<br />
18.12 Memorizzazione di alberi e grafi in catene<br />
Possono essere rappresentati da una catena generalizzata, in cui nella catena principale compaiono<br />
i dati associati a tutti i nodi, accompagnati da due puntatori:<br />
1. il primo punta ad una catena secondaria in cui compaiono tanti elementi quanti sono i nodi<br />
adiacenti a quello in esame<br />
2. il secondo punta all’elemento successivo nella catena principale<br />
La Figura 18.10 visualizza la memorizzazione del grafo riportato in Figura 18.9. Ciascun<br />
nodo contiene il dato da memorizzare e una lista di puntatori ai nodi ai quali è collegato da un<br />
arco.<br />
18.13 Memorizzazione di alberi e grafi in plessi<br />
Si possono usare anche i plessi: ogni elemento contiene il dato del nodo e tanti puntatori quanti<br />
sono i nodi adiacenti a quello in esame.<br />
Il plesso è particolarmente adatto a rappresentare alberi binari: in tal caso, si hanno sempre<br />
due nodi uscenti da ogni nodo dell’albero e, di conseguenza, il formato degli elementi del plesso<br />
è omogeneo e può essere riportato una volta <strong>per</strong> tutte al di fuori degli elementi del plesso.<br />
172