x - Dipartimento di Matematica

Introduzione
alla
LOGICA MATEMATICA
Corso di Matematica Discreta.
Corso di laurea in Informatica.
Prof. Luigi Borzacchini
VII. Relazioni e funzioni
Le relazioni
• Il trattamento formale delle relazioni è una delle
novità principali della logica e della matematica
moderna.
• Nel formalismo di Frege la relazione è data
sintatticamente da un simbolo predicativo con due
o più argomenti: ama(Michele, Francesca) per
<Michele ama Francesca> o passa_per(r, A, B) per
<la retta r passa per i punti A e B>.
• Semanticamente una relazione R n-aria (cioè con n
argomenti) è data dall’insieme delle n-ple (a1, a2,…,
an) per le quali R(a1, a2,…, an) è soddisfatta. Se M è il
nostro universo, RMn
Consideriamo ad esempio l’insieme di tutti i numeri interi,
una relazione m-aria sarà quindi interpretata come un
sottoinsieme di m. Una relazione binaria su sarà un
sottoinsieme dell’insieme delle coppie: 2={(1,1), (1,2), (1,3),
…, (2,1), (2,2),…, (3,1),…, (n,m),…}.
Consideriamo per esempio la relazione binaria divisore(x,y),x|y
rappresentata dalle coppie
1
2 3 4 5 6 7 8
segnate con  nella tabella.
1         ….



 …. Nell’altro esempio abbiamo
2


3
…. la relazione ‘passa per’ tra due
4
5
6


Po Tevere Dora Adige Arno Aniene
….

…. Bari


…. Pisa


Roma
……………………………………………………….
Milano
insiemi diversi: città e

Torino 
fiumi.

Firenze
I Grafi
• Un grafo è formato da un insieme di vertici V ed un
insieme di archi (formati da due vertici).
• Ma per arco possiamo intendere o una coppia
ordinata (a,b)V2 , come una strada a senso unico,
o una coppia non ordinata {a,b}, come una strada a
doppio senso (o un sentiero). Nel primo caso
parliamo di grafo diretto (o orientato), nel secondo
caso di grafo indiretto (o non orientato).
• Risulta chiaro quindi che nello studio delle relazioni
binarie risulta utile rappresentarle tramite grafi
diretti .
Per le relazioni binarie esiste quindi la rappresentazione
tramite un grafo diretto. Per gli esempi precedenti il grafo è:
(a sinistra per la relazione ‘divisore’ ignorando l’1 che è
divisore di tutti gli interi e le frecce di transitività, a destra per
la relazione ‘passa per’) Bari
Dora
2
4
6
9
3
5
8
10
7
Torino
Pisa
Firenze
Roma
Milano
Po
Arno
Adige
Tevere
Aniene
Un altro esempio già incontrato riguardava le relazioni di
‘inclusione’ tra insiemi o di ‘implicazione’ tra definizioni negli
alberi delle tassonomie o nell’insieme dei domini numerici.
Tutti gli esempi visti riguardavano relazioni binarie, le più
frequenti, ma in computer science si trovano relazioni con
più numerosi argomenti, come vedremo in seguito.
• Da una relazione binaria RXY si definisce la
relazione inversa R-1YX così definita (y,x)R-1
(x,y)R. Nella rappresentazione tramite grafo la
relazione inversa si ottiene semplicemente
invertendo le frecce (padre-1è figlio)
• Date due relazioni binarie RXY e SYZ, si può
definire la relazione composta RSXZ così definita
(x,z)RS  y (x,y)R  (y,z)S. Nella
rappresentazione tramite grafo la relazione
composta si ottiene da un cammino di due frecce.
Roma
Bergamo
Parigi
Cardiff
Milano
Glascow
Lazio
Ile de france
Scotland
Lombardia
Italia
Francia
Regno Unito
• Qual è la relazione inversa della relazione ‘divisore’?
Se divisore(4,20) 4|20 allora…… multiplo (20,4).
E quindi divisore-1 = multiplo. In termini insiemistici:
(x,y)  multiplo  (y,x)  divisore. In termini logici:
multiplo (x,y)  divisore (y,x) ovvero y|x.
Se R è la relazione fratello e S è la relazione padre,
allora RS è la relazione zio , in quanto x è lo zio di y se
esiste un z di cui x è fratello e che è il padre di y. In
termini insiemistici:
(x,y)RS  z (x,z)R  (z,y)S.
In termini logici:
zio(x,y)  z fratello(x,z)  padre(z,y)
Relazioni funzionali e funzioni
• Consideriamo la relazione nella_regione(x,y) da
interpretarsi come la frase <x è nella regione y>. La
sua interpretazione standard sarebbe: {(Firenze,
Toscana), (Torino, Piemonte), (Milano, Lombardia),
(Pisa, Toscana), (Roma, Lazio), (Bari, Puglia),…}.
• Essa ha una particolarità: ogni città può
appartenere al massimo ad una regione; una
relazione f(x,y) con tale proprietà si dice funzionale,
e da essa si può costruire una funzione y=f(x).
• Nel nostro esempio possiamo definire la funzione
regione: Toscana =regione(Firenze), Piemonte
=regione(Torino), Lombardia =regione(Milano), etc.
• L’insieme X su cui la funzione f è definita si dice
dominio, l’insieme Y dei suoi valori si dice
codominio, e si scrive f: XY. Se la funzione assume
un valore per ogni elemento del dominio si dice
totale, altrimenti si dice parziale.
• La funzione stato che ad ogni città associa lo stato
di appartenenza è totale in Europa, parziale negli
USA (in quanto Washington non appartiene a
nessuno stato).
• Una funzione f si dice ingettiva sse x y f(x)=f(y)
x=y, sul grafo cioè non esistono vertici del tipo
. Si dice surgettiva sse y x f(x)=y, cioè se ogni
vertice del codominio è raggiunto da una freccia.
Definizioni equivalenti della ingettività
• x y (f(x)=f(y) x=y) «se due elementi hanno
immagini coincidenti, allora coincidono»
• Dalla conversione: xy (xy f(x) f(y)) «elementi
diversi hanno immagini diverse» e trascrivendo l’ ,
otteniamo x y ( f(x)=f(y) x=y) , e dalle regole
che legano quantificatori e negazione la formula
diventa x y (f(x)=f(y) x  y) «dato un qualsiasi
elemento non ne esiste un altro con la stessa
immagine» . Ovvero
x y ( f(x)=f(y) x  y)
«non esistono due elementi distinti con la stessa
immagine»
• Una funzione si dice bigettiva se è ingettiva e
surgettiva, e si dice anche una corrispondenza
biunivoca o una corrispondenza 1-1.
• La composizione di una funzione f: XY con una
funzione g: YZ dà la funzione gf: XZ definita
come gf(x) = g(f(x)), che si ottiene come sequenza
delle due frecce x f gf g gf(x)
f(x)
• Se f è totale l’inversa f-1: YX, si ottiene -1
f
capovolgendo la direzione delle frecce f
• Se la funzione identica 1X: X X è definita x
1X(x)=x, allora f-1f = 1X, ff-1 = 1Y,
f-1(f(x))=x
f(x)
• Esempio: la relazione ‘a multiplo di b’ è la relazione
inversa della relazione ‘b è divisore di a’, ‘b divide a’.
Relazioni n-arie e funzioni (n-1)-arie
• Le relazioni binarie sono le più diffuse, ma si
trovano anche relazioni n-arie.
• Punto di partenza: il prodotto cartesiano
M1 M2 …Mn, l’insieme delle n-uple, (a1, a2,….
an), in cui a1 M1, a2 M2 ….., an Mn,
• Una relazione è un sottoinsieme di un prodotto
cartesiano: (a1, a2,…. an)R M1 M2 …Mn vuol
dire che gli elementi a1, a2,…. an sono in relazione R
• Se, fissati a1, a2,…. an-1 c’è un unico an per il quale
(a1, a2,…. an)R, allora si può definire la funzione fR
(n-1)-aria: fR (a1, a2,…. an-1 ) = an
• Definiamo ad esempio la relazione S ternaria su :
(a,b,c)S 3 sse aggiungendo b oggetti ad un
gruppo di a oggetti troviamo un gruppo di c oggetti,
ad esempio (3,6,9)S , scritto anche S(3,6,9), mentre
(4,3,8)S. Poiché fissati a e b è univocamente
determinato c, possiamo definire la funzione +:
2→ : a+b=c
• Se S è un alfabeto, S* è l’insieme delle parole su S:
(a,b,c)appendS*3 sse aggiungendo alla parola a la
parola b otteniamo la parola c, ad esempio (car, ta,
carta)append , scritto anche append(car, ta, carta),
mentre (ca, ne, gatto)append . Anche in questo
caso possiamo definire la funzione Append: S*2→
S*, append(car, ta)=carta
Logica e Matematica
• Nella matematica moderna, fondata sulla teoria degli
insiemi, sono molto importanti le distinzioni logiche tra
elementi (variabili e costanti), insiemi, funzioni, predicati
(sottoinsiemi e relazioni), proposizioni (formule).
•
è l’insieme dei numeri interi, i singoli numeri sono le
costanti; x, n, m, etc. denotano variabili che possono
assumere numeri come valori; funzioni sono le operazioni
che ad uno o più numeri associano un altro numero
(somma, prodotto, etc.); predicati sono proprietà vere su
uno o più numeri: nel primo caso individuano sottoinsiemi
(pariinsieme dei numeri pari), nel secondo relazioni (a è
minore di bl’insieme delle coppie (a,b) con a<b);
proposizioni (formule) esprimono fatti aritmetici, veri o falsi
Esempio: il minimo comune multiplo
• Definiamo in la relazione binaria ‘a divide b’ a|b
 m b=ma, e definiamo ‘c multiplo comune di a
e b’  a|c  b|c, relazione ternaria su . Diciamo
‘n minimo comune multiplo di a e b’ il più piccolo dei
multipli comuni di a e b, cioè  a|n  b|n  c (a|c
 b|c) n c. E in tal caso si ha anche n|c
• Per le caratteristiche della relazione tale numero
esiste sempre ed è unico (un sottoinsieme non
vuoto di ha sempre un unico minimo), e quindi la
relazione ternaria ‘n minimo multiplo comune di a e
b’ può essere considerata come una funzione
binaria: n=mcm(a,b).
E proveremo anche che il mcm divide ogni altro comune
multiplo. Consideriamo mcm una relazione ternaria:
mcm(a,b,x) quando x è mcm di a e b.
Supponiamo per assurdo che i due numeri a e b abbiano due
distinti mcm. L’ipotesi assurda ha forma esistenziale: x y
mcm(a,b,x)mcm(a,b,y)  (x=y)
e quindi iniziamo con una doppia sottoderivazione eliminazione: m ed n sono costanti nuove,
a|m  b|m  c (a|c  b|c  m|c )
a|n  b|n  d (a|d  b|d  n|d )
(m=n)
A questo punto entra in gioco l’intuizione: le variabili c e d
sono sostituibili nella -eliminazione con qualsiasi termine,
potrebbe essere utile farle coincidere con le costanti m e n
• possiamo sostituire a c il numero n e a d il numero
m, ottenendo
• a|m  b|m  (a|n  b|n  m|n )
a|n  b|n  (a|m  b|m  n|m)
• m|n
• n|m,
• x n=m x
In algebra studierete il
problema in e non in , e
• y m=n y
quindi la soluzione sarà ±1
• n=m x’
• m=n y’
• n= n y’ x’ e quindi y’ x’ = 1 da cui y’=x’=1 e
allora m=n. Ma (m=n)
e quindi
• Prendiamo a=6, b=15. I multipli di 6 sono: {6, 12,
18, 24, 30, 36, 42, 48, 54, 60 ...}, i multipli di 15
sono: {15, 30, 45, 60, 75, ...}, i loro multipli comuni
sono: {30, 60, 90, 120, 150, ...}, il loro minimo
comune multiplo è 30: 30=mcm(6,15), e gli altri
multipli comuni sono tutti e soli i multipli di 30.
•
3
6 12
24
48
• 2
18
36
45
•
5
15
30
60
• Analogo ragionamento per definire il ‘massimo
comun divisore’: i divisori di 6 sono: {1,2,3}, quelli di
15 sono: {1,3,5}, quelli comuni sono: {1,3} e quindi 3
= MCD(6,15).
Ancora la combinatoria
• La combinatoria conta le configurazioni simboliche,
ad esempio «quante parole distinte di lunghezza n
si possono costruire da una alfabeto di k segni?»
oppure «in quanti modi diversi si possono mettere
n palline distinte in k scatole?».
• Ad esempio se k=3 e n=2, le parole distinte sono
{aa, ab, ac, ba, bb, bc, ca, cb, cc}, mentre le
distribuzioni nelle scatole sono ab/Ø/Ø, a/b/Ø,
a/Ø/b, b/a/Ø, Ø/ab/Ø, Ø/a/b, b/Ø/a, Ø/b/a,
Ø/Ø/ab. In entrambi i casi abbiamo 9=32=kn
configurazioni: è un caso? In entrambi i casi sono le
funzioni da un n-insieme in un k-insieme.
• 1
I
• 2
II
•
III
•
aa
• ab/Ø/Ø
1
2
I
II
III
ab
a/b/Ø
1
2
I
II
III
ac
a/Ø/b
1
2
I
II
III
ba
b/a/Ø
1
2
I
II
III
bb
Ø/ab/Ø
1
2
I
II
III ……
bc
Ø/a/b
• Altro esempio: contiamo quante sono le
proposizioni non equivalenti (che hanno cioè
diversa tavola di verità) che si possono creare con n
proposizioni elementari.
• In primo luogo le diverse interpretazioni sono 2n , in
quanto ogni proposizione elementare può essere
vera o falsa. Poi per ogni interpretazione la
proposizione può essere vera o falsa, e quindi in
totale abbiamo 22 n diverse tavole di verità.
• Sia M un insieme di m elementi (distinti): |M|=m
• Le coppie ordinate di elementi di M sono:
X
• |M 2|= m 2
X
Quante sono le coppie ordinate di
X
X
elementi di M se non sono
X
ammesse ripetizioni? m 2 – m
X
E quante sono le coppie non
ordinate senza ripetizioni? (m 2 – m)/2
Possiamo generalizzare a Mn ? |M n|= m n
Le n-uple ordinate senza ripetizioni sono:
m  (m-1)  (m-2)  …  (m-n+1).
Ad esempio le terne ordinate su M = {a, b, c, d} sono
•
a
b
c
d
ab ac ad ba bc bd ca cb cd da db dc
abc abd acb acd adb adc bac bad bca bcd bda bdc cab cad cba cbd cda cdb dab dac dba dbc dca dcb
Se m=n otteniamo il numero degli ordinamenti
possibili di M: m! = m  (m-1)  (m-2)  …  2  1
Ma una n-upla non ordinata (un sottoinsieme di n
elementi) può essere ordinata in n! modi diversi.
Ad esempio {a,c,d} corrisponde ai 6=3! ordinamenti
acd, adc, cad, cda, dac, dca. E quindi le n-uple su M
non ordinate (i sottoinsiemi di M di cardinalità n)
sono: (m  (m-1)  (m-2)  …  (m-n+1))/n! = (m-n)! 
(m  (m-1)  (m-2)  …  (m-n+1))/ (m-n)!  n!
(m(m-1)(m-2) …2 1)/(m-n)! n! = m!/(m-n)!n!
Il poker
𝑚
𝑛
scriviamo: m!/(m-n)!n! =
Quante ‘mani’ possibili?
52
5
Quanti poker? 13  48
Quanti poker di assi? 48
Quanti full di assi e k?
Full di assi? 24  12
numero di n-sottoinsiemi
da un m-insieme
4
3
4
2

= 24
Quanti full? 24  12  13
Quante doppia coppia di assi e k?
4
Quante doppia coppia? 2
13
Quanti colori a cuori? 5

4
2
4
2

4
2
 44
 44  13  12 / 2
Quante scale? 45  10