11.06.2013 Views

università degli studi di siena facoltà di scienze matematiche, fisiche ...

università degli studi di siena facoltà di scienze matematiche, fisiche ...

università degli studi di siena facoltà di scienze matematiche, fisiche ...

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.

Pren<strong>di</strong>amo ad esempio il caso dell’elenco telefonico (numero 6 a pagina 12),<br />

qui si hanno solo due dominî: Nomi × Numeri <strong>di</strong> telefono.<br />

Entrambi sono ”chiavi” accettabili: possiamo non volere omonimie, ma è<br />

altrettanto sensato aspettarsi che allo stesso numero telefonico corrisponda<br />

un’unica persona.<br />

Anche nella nostra istanza sul Palio il nome della contrada può essere considerato<br />

una chiave (la stessa non può correre due volte lo stesso Palio).<br />

♦<br />

Cerchiamo <strong>di</strong> spiegare il motivo che ci ha portato a parlare <strong>di</strong> <strong>di</strong>mensione,<br />

a proposito <strong>di</strong> vincoli su insiemi finiti <strong>di</strong> records (le istanze, appunto).<br />

Una soluzione grafica per rappresentare un’istanza I <strong>di</strong> grado n e car<strong>di</strong>nalità<br />

m può essere la matrice m × n:<br />

⎛<br />

⎜<br />

I = ⎜<br />

⎝<br />

d1 1 d1 2 d1 3 . . . d1 n<br />

d2 1 d2 2 d2 3 . . . d2 n<br />

.<br />

.<br />

.<br />

. ..<br />

d m 1 d m 2 d m 3 . . . d m n<br />

Questa è in effetti la rappresentazione solitamente preferita dagli informatici,<br />

per la sua intuitività, e per la facilità grafica con cui vi si possono<br />

rappresentare gli operatori. Infatti proiezioni e selezioni corrispondono alla<br />

estrapolazione <strong>di</strong> alcune righe o <strong>di</strong> alcune colonne (per le colonne bisogna<br />

stare attenti alle possibili ripetizioni) dalla matrice originale.<br />

Come controlleremo se un vincolo è verificato da questa istanza?<br />

Un vincolo <strong>di</strong> <strong>di</strong>mensione 0 è tale se esiste un vincolo VDi<br />

.<br />

⎞<br />

⎟<br />

⎠<br />

su <strong>di</strong> un dominio<br />

Di, per verificare il vincolo derivato dal dominio all’istanza basterà controllare,<br />

uno per uno, i singoli d 1 i, d 2 i, ...e cosí via fino d m i , componendo i risultati<br />

con le regole del quantificatore scelto.<br />

Immaginando la matrice come una tabella rettangolare, i nostri controlli<br />

saranno sempre su <strong>di</strong> una singola cella, quasi che fosse un unico punto <strong>di</strong> un<br />

rettangolo in un piano <strong>di</strong>screto.<br />

Questo è il motivo per il quale parliamo <strong>di</strong> <strong>di</strong>mensione nulla.<br />

Invece per verificare un vincolo <strong>di</strong> <strong>di</strong>mensione 1 dovremo considerare, sempre<br />

una alla volta, intere righe della nostra tabella, i records.<br />

Cosí un vincolo <strong>di</strong> <strong>di</strong>mensione 2 considererà tutta la tabella nel suo insieme,<br />

un intero ”rettangolo” <strong>di</strong> elementi, appartenenti a dominî e records <strong>di</strong>versi.<br />

Proseguiamo cercando <strong>di</strong> analizzare in maniera un po’ più approfon<strong>di</strong>ta i<br />

vincoli <strong>di</strong> <strong>di</strong>mensione 2, che fino ad ora sono sfuggiti ai nostri esempi.<br />

A questo scopo iniziamo con il recupero <strong>di</strong> un noto operatore che avevamo<br />

adattato alle istanze a pagina 15: il prodotto cartesiano. Lo avevamo definito<br />

38

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

Saved successfully!

Ooh no, something went wrong!