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 ...
La loro influenza è infatti difficilmente valutabile con l’aumento esponenziale dei records nel prodotto cartesiano. Rimaniamo cosí con i 6 non banali: Q∀ , Q∃ , Q∃ , Q∃¬∅ , Q∅ e Q¬∅ . Ma ne possiamo eliminare ancora uno. Lemma 1 . Ogni vincolo V col quantificatore Q∃ impone lo stesso vincolo quantificato del vincolo ¬V col quantificatore Q∀ : Q∃(V ) = Q∀(¬V ) . ♦ Possiamo cosí eliminare, in una qualsiasi formula, il quantificatore Q∃ . Nella prossima dimostrazione, come si vedrà non compare mai neanche l’insieme vuoto: possiamo eliminare anche Q∃¬∅ , Q∅ e Q¬∅ . Proposizione 9 . Se ci si limita ai quantificatori Q∃ , Q∀ , esiste almeno un vincolo ”puro” di dimensione 2, cioè un vincolo sulle istanze per il quale non esiste una formula, con vincoli quantificati sul prodotto cartesiano, che lo esprime. Dimostrazione - Consideriamo records di grado 1 sul solo dominio N dei numeri naturali, le istanze saranno insiemi finiti di numeri naturali. Immaginiamo il seguente vincolo sulle istanze: tutti i numeri sono consecutivi, non vi appartengono cioè due numeri, n ed n+2, senza che vi sia anche n + 1. Immaginiamo per assurdo che esista una formula ϕ, con vincoli quantificati sul prodotto cartesiano, che soddisfa questo vincolo. Questa formula ϕ sarà composta da un numero finito h di vincoli quantificati con Q∃, e da un numero finito k di vincoli quantificati con Q∀, ognuno con la sua molteplicità, e da operatori binarî. Scriviamo ϕ ( Q m1 ∃ 1 (V1), . . ., Q mh ∃ h (Vh), Q mh+1 ∀ h+1 (Vh+1), . . ., Q mh+k ∀ h+k (Vh+k) ) per indicarla. Per ogni vincolo quantificato Q mj ∃ j (Vj) (con 1 ≤ j ≤ h) ci sono due possibi- lità: Vj è banale e Q mj ∃ j (Vj) = 0 per ogni mj-upla di numeri naturali; esiste una mj-upla (a j 1, . . .,a j mj ) per la quale Vj = 1 , chiamiamo aj = max{a j 1, . . .,a j mj } . Analogamente, per ogni Q mj ∀ j (Vj) (con h + 1 ≤ j ≤ h + k), o Vj è banale e si ha sempre 1, oppure esiste una mj-upla (a j 1, . . .,a j mj ) per la quale Vj = 0 , e chiamiamo aj = max{a j 1, . . .,a j mj } . Consideriamo l’istanza I = {1, 2, . . ., (a − 1), a} con a = max{a1 , . . .,a j }, questa istanza soddisfa il vincolo proposto (elementi tutti consecutivi), la formula di vincoli ϕ applicata ad I deve dare come risultato 1 (ϕ(I) = 1). 44
I è tale che, per ogni j, Q mj ∃ j (Vj)(I) = 0 se e solo se Vj è banale, altrimenti Q mj ∃ j (Vj)(I) = 1, cosí come Q mj ∀ j (Vj)(I) = 1 se e solo se Vj è banale, altri- menti Q mj ∀ j (Vj)(I) = 0. La stessa cosa di I vale però anche per I ′ = {1, 2, . . ., (a −1), a, (a+2)}, cioè ϕ(I ′ ) = ϕ(I) = 1. Ma gli elementi di I ′ non sono tutti consecutivi. Assurdo! ♦ Un’ultima considerazione finale. Noi ci siamo imposti fin dall’inizio di considerare solo vincoli ed operatori binarî. Questa scelta è dovuta a coerenza con il funzionamento dei calcolatori elettronici, la cui algebra di base è, per forza di cose, dicotomica. Esempio 40 . Con un vincolo ed un operatore ternario si potrebbe ad esempio ottenere il resto modulo 3 del numero di elementi di un insieme, cosí come avevamo trovato il quantificatore Q| (che può essere visto anche come il resto modulo 2). Si consideri infatti il seguente operatore ternario: ◦ = 0 1 2 0 1 1 1 1 2 2 2 2 0 0 0 Il quantificatore inizializzato a 0, chiamiamolo Qmod3, soddisferà l’esigenza richiesta, impossibile per una formula binaria, se non altro per il numero di risposte possibili. ♦ Si ricaverebbe un vero salto di qualità qualora si accettassero vincoli ed operatori N-arî, cioè non ristretti ad un numero finito di possibilità. In effetti quando (esempio 38 a pagina 42) abbiamo parlato della possibilità di contare la cardinalità di un’istanza, ci riferivamo proprio a questo, ed è quanto normalmente fanno molti software per la gestione di databases. Esempio 41 Immaginiamo una funzione dalle istanze ad N che conta il numero dei records, chiamiamo questa funzione count (come è spesso definita nei gestori di databases in commercio). Se poi ammettiamo di costruire vincoli binarî inserendo nelle formule il risultato di count, si possono ottenere risultati molto più ampi. Molti vincoli si potevano ottenere anche senza questo ausilio, come (count(I) è pari) o (count(I) ≤ 10) , altri no: (count(I) è multiplo di 3) . Con l’aggiunta di count nelle formule si può facilmente costruire un vincolo 45
- Page 1 and 2: UNIVERSITÀ DEGLI STUDI DI SIENA FA
- Page 3 and 4: Presentazione L’algebra relaziona
- Page 5 and 6: 1 . Un esempio introduttivo. Incomi
- Page 7 and 8: in riga (per quanto possa apparire
- Page 9 and 10: 2 . Una presentazione algebrica del
- Page 11 and 12: Chiameremo i records con le lettere
- Page 13 and 14: Nomi × Numeri di telefono. I due d
- Page 15 and 16: π{Di ,Di ,...,Dim 1 2 } (s[d1, d2,
- Page 17 and 18: Esempio 10 . Poniamo un problema ba
- Page 19 and 20: La selezione è cosí un operatore
- Page 21 and 22: I casi possibili sono quattro: l’
- Page 23 and 24: Nell’esempio 13 abbiamo composto
- Page 25 and 26: Per ora la definizione è solo intu
- Page 27 and 28: II V II V III ◦, ◦ , ◦ , X
- Page 29 and 30: A è vuoto? Scriveremo: Q∅ per Q
- Page 31 and 32: Esempio 22 . Diventa immediato appl
- Page 33 and 34: Esempio 25 . Riprendiamo la definiz
- Page 35 and 36: Proposizione 8 . Nell’esempio 19
- Page 37 and 38: Definizione 26 . Dato un prodotto c
- Page 39 and 40: come operatore binario, ma può ess
- Page 41 and 42: ( T 1 2 > T 2 2 ) ∧ ( T 1 3 < T 2
- Page 43: Q∀×VT , con VT = 1 se ( ti = nul
- Page 47 and 48: in copie diverse e gestite indipend
- Page 49 and 50: Abbiamo visto, anche a scapito dell
I è tale che, per ogni j, Q mj<br />
∃ j (Vj)(I) = 0 se e solo se Vj è banale, altrimenti<br />
Q mj<br />
∃ j (Vj)(I) = 1, cosí come Q mj<br />
∀ j (Vj)(I) = 1 se e solo se Vj è banale, altri-<br />
menti Q mj<br />
∀ j (Vj)(I) = 0.<br />
La stessa cosa <strong>di</strong> I vale però anche per I ′ = {1, 2, . . ., (a −1), a, (a+2)}, cioè<br />
ϕ(I ′ ) = ϕ(I) = 1. Ma gli elementi <strong>di</strong> I ′ non sono tutti consecutivi.<br />
Assurdo! ♦<br />
Un’ultima considerazione finale. Noi ci siamo imposti fin dall’inizio <strong>di</strong><br />
considerare solo vincoli ed operatori binarî.<br />
Questa scelta è dovuta a coerenza con il funzionamento dei calcolatori elettronici,<br />
la cui algebra <strong>di</strong> base è, per forza <strong>di</strong> cose, <strong>di</strong>cotomica.<br />
Esempio 40 . Con un vincolo ed un operatore ternario si potrebbe ad<br />
esempio ottenere il resto modulo 3 del numero <strong>di</strong> elementi <strong>di</strong> un insieme,<br />
cosí come avevamo trovato il quantificatore Q| (che può essere visto anche<br />
come il resto modulo 2).<br />
Si consideri infatti il seguente operatore ternario:<br />
◦ =<br />
0 1 2<br />
0 1 1 1<br />
1 2 2 2<br />
2 0 0 0<br />
Il quantificatore inizializzato a 0, chiamiamolo Qmod3, sod<strong>di</strong>sferà l’esigenza<br />
richiesta, impossibile per una formula binaria, se non altro per il numero<br />
<strong>di</strong> risposte possibili. ♦<br />
Si ricaverebbe un vero salto <strong>di</strong> qualità qualora si accettassero vincoli ed<br />
operatori N-arî, cioè non ristretti ad un numero finito <strong>di</strong> possibilità.<br />
In effetti quando (esempio 38 a pagina 42) abbiamo parlato della possibilità<br />
<strong>di</strong> contare la car<strong>di</strong>nalità <strong>di</strong> un’istanza, ci riferivamo proprio a questo, ed è<br />
quanto normalmente fanno molti software per la gestione <strong>di</strong> databases.<br />
Esempio 41 Immaginiamo una funzione dalle istanze ad N che conta il numero<br />
dei records, chiamiamo questa funzione count (come è spesso definita<br />
nei gestori <strong>di</strong> databases in commercio).<br />
Se poi ammettiamo <strong>di</strong> costruire vincoli binarî inserendo nelle formule il risultato<br />
<strong>di</strong> count, si possono ottenere risultati molto più ampi.<br />
Molti vincoli si potevano ottenere anche senza questo ausilio, come (count(I)<br />
è pari) o (count(I) ≤ 10) , altri no: (count(I) è multiplo <strong>di</strong> 3) .<br />
Con l’aggiunta <strong>di</strong> count nelle formule si può facilmente costruire un vincolo<br />
45