18.08.2013 Views

Dalla A alla Z passando per C - Robotica

Dalla A alla Z passando per C - Robotica

Dalla A alla Z passando per C - Robotica

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!