Corso di Matematica Discreta

Transcript

Corso di Matematica Discreta
Corso di Matematica Discreta
Corso di Matematica Discreta
I Anno
Gabriella Muratore
Programma:
1.
2.
3.
4.
5.
6.
7.
8.
Insiemi e funzioni
Equivalenze ed ordinamenti
Numeri interi
Calcolo combinatorio
Strutture algebriche (cenni)
Spazi vettoriali, matrici e calcolo matriciale
Introduzione ai grafi
Argomenti scelti (opzionale)
Introduzione:
Connettivi logici:
¾ E (AND) congiunzione
¾ O (OR) disgiunzione
¾ NON (NOT) negazione
Connettivo condizionale:
¾ Se ….. Allora…. P ⇒D (⇒ connettivo implicazione).
Se è vera P e se è vera P ⇒D allora è vera D. La proposizione P ⇒D è falsa solo se P è vera e D è falsa.
(P ipotesi - D tesi)
Notazione:
N = Insieme dei numeri interi naturali ⎨1,2,3,… ⎬ (con o senza zero, 0) (N+, N⎨∪0⎬)
Z = Insieme dei numeri interi relativi (compreso lo zero), ⎨…-3,-2,-1,0,1,2,3 …⎬ Z+, ZQ = Insieme dei numeri razionali ⎨ …3/4, 2/3 … ⎬
R o ℜ = Insieme dei numeri reali
C = Insieme dei numeri complessi
In tutti i casi vale N⊂ Z ⊂ Q ⊂ R ⊂ C
Dimostrazione per assurdo: P (ipotesi)⇒D (tesi)
Assumere vera l’ipotesi e falsa la tesi. Se il ragionamento logico deduttivo ci porta ad una
contraddizione abbiamo dimostrato che: P (ipotesi)⇒D (tesi).
Doppia implicazione (se e solamente se): P ⇔ D equivalente (P ⇒ D) e (D ⇒ P)
P è condizione necessaria e sufficiente perché accada D.
P ⇒ D : P è sufficiente perché accada D e D ⇒ P : P è condizione necessaria perché accada D
1
Corso di Matematica Discreta
P ⇔ D è vera se e solamente se P e D sono entrambe vere o entrambe false.
Quantificatori:
∃ (esiste) quantificatore esistenziale
∀ (per tutti - per ogni) quantificatore universale
Connettori “/” o “:” (tale che):
∃ x / P(x) significa: “esiste almeno un x tale il predicato P è vero”
∀ x P(x) significa “ per tutti gli x il predicato P è vero”
Esempi:
∃ x / x2≥ 1 (è vera) mentre ∀ x x2≥ 1 (è falsa)
∀ x x2≥ 0 (è vera) mentre ∃ x / x2< 0 (è falsa)
Importanza dell’ ordine dei quantificatori.
Esempio:
Supponiamo che L(x,y) significhi: la persona x è in grado di svolgere il lavoro y
∀ y ∃ x / L(x,y) significa: “qualunque sia il lavoro, esiste una persona in grado di svolgerlo”
∃ x ∀ y / L(x,y) significa: “ esiste una persona che è in grado di svolgere qualunque lavoro”
Negazione e quantificatori:
non (∀ x P(x)) ⇔ ∃ x / (non P(x))
non (∃ x / P(x)) ⇔ ∀ x (non P(x))
Uguaglianza: x = y
L’uguaglianza è una relazione (predicato tra due variabili) che esprime il fatto che x e y sono
intercambiabili a tutti gli effetti.
Uguaglianza:
Se R è un qualunque predicato in una variabile allora è vero che:
∀x ∀ y / x=y ⇒ (R(x) ⇔ R(y) )
Proprietà dell’uguaglianza:
∀x
x=x
∀x ∀y x = y ⇒ y = x
∀x ∀y ∀z (x = y) e (y = z) ⇒ x = z
2
(proprietà riflessiva)
(proprietà simmetrica)
(proprietà transitiva)
Corso di Matematica Discreta
Insiemi:
Assumiamo il concetto di insieme come “nozione primitiva”.
es. Insieme degli alunni di questa classe; insieme dei numeri interi; insieme delle rette del piano; ecc.
Sinonimi: aggregato, classe, famiglia, …
L’espressione x ∈T si legge: “x appartiene all’insieme T” o “ x è un elemento di T”
Scriveremo invece x ∉T per negare l’espressione precedente cioè per affermare che x non appartiene a
(o non è un elemento di) T.
L’intuizione ci suggerisce di considerare uguali due insiemi che abbiano gli stessi elementi.
In simboli: (∀ x x ∈A ⇔ x ∈B ) ⇔ A = B
Il significato che abbiamo dato al segno di uguaglianza ci assicura che due insiemi aventi gli stessi
elementi devono avere il medesimo ruolo in tutte le enunciazioni che fanno parte della nostra teoria.
Per indicare un insieme basterà (quando è possibile) elencarne gli elementi; converremo di elencarli
entro parentesi graffe. Ad esempio ⎨2,5,6⎬ indica l’insieme i cui elementi sono appunto i numeri 2, 5 e
6. La notazione ⎨a⎬ indica l’insieme costituito dal solo elemento a; mentre con il simbolo ∅
indicheremo uno speciale insieme, detto insieme vuoto, che non contiene alcun elemento.
Relazione di inclusione:
Se ogni elemento di un insieme A è un elemento dell’insieme B, cioè: ∀ x: x∈A ⇒ x ∈B, allora diciamo
che A è contenuto in B, oppure A è una parte o un sottoinsieme di B, e scriviamo A⊆ B.
A
B
Notiamo che la relazione A⊆ B è verificata nel caso in cui A = B.
3
Corso di Matematica Discreta
Per esprimere il fatto che A⊆ B ma A≠B, cioè esistono elementi di B che non sono elementi di A, si
scrive A⊆ B. Si dice in questo caso che A è sottoinsieme proprio di B, ovvero A è propriamente contenuto
in B.
Costruzioni insiemistiche:
Procedimenti che, partendo da insiemi assegnati, ci forniscono nuovi insiemi.
Supponiamo che T sia un insieme e che P(x) sia una proprietà che ha senso per gli elementi di T.
Scriviamo allora ⎨x: (x∈T) e P(x)⎬ per indicare il sottoinsieme di T formato dagli elementi per cui P(x)
è vera.
es. ⎨x: (x∈R) e (sin x=0) ⎬ rappresenta l’insieme dei multipli interi di π.
Operazioni insiemistiche:
Unione:
L’unione di due insiemi A e B è l’insieme formato da quegli elementi che appartengono ad almeno uno
dei due insiemi A, B. Esso viene indicato con A∪ B.
In simboli A∪B = ⎨x: (x∈A) o (x∈B)⎬.
es. A = ⎨1,3,5,7,9⎬
B = ⎨2,3,4,5,6,8⎬
A∪B=C= ⎨1,2,3,4,5,6,7,8,9⎬
Intersezione:
L’intersezione di due insiemi A e B è l’insieme formato dagli elementi che appartengono sia ad A sia a
B. Esso si indica con il simbolo A ∩ B.
In simboli A ∩ B = ⎨x: (x∈A) e (x∈B)⎬.
4
Corso di Matematica Discreta
B
A
es. A = ⎨1,3,5,7,9⎬
B = ⎨2,3,4,5,6,8⎬
A ∩ B=C= ⎨3,5⎬
A
B
Può accadere che i due insiemi siano disgiunti (cioè non abbiano alcun elemento in comune). Allora si
scrive A ∩ B = ∅
Differenza:
La differenza di B da A, che si indica con A\B oppure con A-B, è l’insieme degli elementi di A che non
appartengono a B. In simboli A-B= ⎨x: (x∈A) e (x∉B)⎬.
B
A
es. A = ⎨1,3,5,7,9⎬
B = ⎨2,3,4,5,6,8⎬
A - B=C= ⎨1,7,9⎬
5
Corso di Matematica Discreta
Differenza simmetrica:
La differenza simmetrica A e B, che si indica col simbolo AΔB, è l’insieme costituito dagli elementi che
appartengono a uno solo degli insiemi A e B, cioè dagli elementi di A che non appartengono a B e dagli
elementi di B che non appartengono ad A.
In simboli A Δ B = (A-B) ∪ (B-A)
B
A
es. A = ⎨1,3,5,7,9⎬
B = ⎨2,3,4,5,6,8⎬
A Δ B=C= ⎨1,2,4,6,7,8,9⎬
Insieme delle parti:
Dato un insieme T, ammettiamo di poter considerare un insieme i cui elementi sono tutte le parti o
sottoinsiemi di T; questo insieme sarà detto insieme delle parti di T e si indicherà con il simbolo P(T). Ad
esempio, se è:
T = ⎨a,b,c⎬ si ha
P(T)= ⎨∅, ⎨a⎬, ⎨b⎬, ⎨c⎬, ⎨a, b⎬, ⎨a, c⎬, ⎨b, c⎬, ⎨a, b, c⎬⎬.
Le operazioni ∪ e ∩, nell’insieme P(T), hanno proprietà formali molto interessanti.
Proprietà formali di ∪ e ∩:
1.
2.
3.
4.
5.
A∪A=A
A∪B=B∪A
(A∪B)∪C = A∪(B∪C)
A∪(B∩C) = (A∪B)∩(A∪C)
A∩(A∪B)=A
Proprietà di idempotenza
Proprietà commutativa
Proprietà associativa
Proprietà distributiva
Proprietà di assorbimento
A∩A=A
A∩B=B∩A
(A∩B)∩C = A∩(B∩C)
A∩(B∪C)=(A∩B)∪(A∩C)
A∪(A∩B)=A
Operazioni insiemistiche:
Complementare:
Se A∈ P(T), chiamiamo complementare di A rispetto a T l’insieme di tutti gli elementi di T che non
appartengono ad A.
In simboli A′= T - A.
6
Corso di Matematica Discreta
Valgono le seguenti proprietà:
6. (A′) ′=A
7. (A ∪ B)′= A′ ∩ B′
8. (A ∩ B) ′=A′ ∪ B′
Algebra di Boole:
Si dice Algebra di Boole la struttura che si ottiene assegnando in un insieme (nel nostro caso P(T)) tre
operazioni: ∪, ∩, ′ (unione, intersezione e complemento) aventi le proprietà 1-8 precedentemente
definite.
Notiamo che le proprietà 1- 8 valgono anche per la logica delle proposizioni, pur di sostituire il simbolo
∪ con il connettivo logico “o”, il simbolo ∩ con il connettivo logico “e”, il simbolo ′ con il connettivo
logico “non” ed infine il simbolo = con il connettivo logico di doppia implicazione ⇔
Famiglie infinite di insiemi:
Le operazioni di unione ed intersezione si possono estendere al caso di famiglie infinite di insiemi. Sia F
una famiglia qualunque di insiemi. Si indica con
UX
X ∈F
l’insieme costituito dagli elementi che
appartengono a qualcuno degli insiemi X∈F. Questo insieme viene detto insieme unione della
famiglia F.
In simboli:
UX
X ∈F
= ⎨x: (∃ X / X∈ F e x ∈ X)⎬. Similmente si indica con
IX
X ∈F
l’insieme costituito
dagli elementi che appartengono a ciascuno degli insiemi X∈F. Questo insieme viene detto insieme
intersezione della famiglia F.
In simboli:
I X = ⎨x: (∀ X / X∈ F
X ∈F
⇒ x ∈ X)⎬.
Considerazioni:
Sia T un insieme e sia P(x) un predicato che abbia senso in T. Possiamo interpretare P(x) come
un’equazione posta in T.
L’insieme P ⎨x: (x∈T) e P(x) ⎬ è evidentemente l’insieme delle soluzioni di P(x) in T. Sia ora Q(x) un
secondo predicato e sia Q =⎨x: (x∈T) e Q(x)⎬. Se per ogni x∈T è vero P(x) ⇒ Q(x) allora si ha P⊆Q.
Se invece, per ogni x∈T è vero P(x) ⇔ Q(x) si ha P = Q.
2
es. Sia T = R (retta reale). Supponiamo che P(x) significhi x + 1 =2x e che Q(x) significhi x2+1=4 x2.
1
1
Allora per ogni x ∈ R è vero P(x) ⇒ Q(x). Si ha quindi P⊆Q. E’ poi Q= ⎨
;⎬ ma poiché
3
3
1
1
non verifica P(x) si ha P =⎨ ⎬
3
3
Insieme prodotto:
Assumiamo come nozione primitiva la nozione di coppia ordinata. Per aiutare l’intuizione possiamo pensare
a due caselle (la prima e la seconda casella) e di inserire in esse, rispettivamente, due elementi, non
necessariamente distinti, x e y. Per indicare la coppia così ottenuta useremo la notazione (x,y). E’
7
Corso di Matematica Discreta
importante notare come la coppia (x,y) sia cosa ben diversa dall’ insieme ⎨x,y⎬ costituito dagli elementi
x e y. Infatti si ha ⎨x,y⎬ = ⎨y,x⎬ (per gli insiemi non ha rilevanza l’ordine con cui sono elencati gli
elementi), mentre per le coppie si ha: (x,y)=(x′,y′) ⇔ x= x′ e y= y′.
Definizione insieme prodotto:
dati due insiemi A e B, diremo insieme prodotto di A per B, e lo indicheremo con A X B, l’insieme di tutte
le coppie ordinate (x,y) con x ∈A e y ∈B. In simboli: A X B = ⎨(x,y) / x ∈A e y ∈B⎬.
Notiamo che non abbiamo richiesto ai due insiemi A e B di essere diversi. Un ben noto esempio di
prodotto è ℜ X ℜ, dove ℜ indica la retta reale. La geometria analitica ci insegna a rappresentare il
piano mediante l’insieme di tutte le coppie ordinate di numeri reali, cioè mediante ℜ X ℜ.
ℜ
(x,y)
y
x
ℜ
Perciò l’insieme ℜ X ℜ, che comunemente viene scritto come ℜ2, viene detto anche piano (numerico).
Dati, in un certo ordine, tre insiemi A, B, C, si chiama loro prodotto, e si indica con A X B X C,
l’insieme di tutte le terne ordinate (x,y,z) con x ∈A, y ∈B, z∈C. La definizione si estende in modo ovvio al
caso di un numero finito qualsiasi di spazi, A1, A2,… An. Ad esempio si indica con ℜn l’insieme di tutte
le n-uple ordinate (x1, x2… xn) di numeri reali. Il prodotto di più insiemi può essere introdotto, peraltro,
utilizzando solo la nozione di prodotto di due insiemi. E’ facile vedere infatti che A X B X C si può
introdurre indifferentemente come (A X B) X C oppure come A X (B X C).
Relazioni:
Con il termine relazione indichiamo un predicato in 2 variabili. Sia ora R(x,y) una relazione che abbia
senso nella teoria degli insiemi.
Possiamo allora considerare l’insieme ⎨(x,y): (x,y) ∈A X B e R(x,y) ⎬, cioè il sottoinsieme di A X B
costituito da tutte le coppie per cui la relazione è verificata. Esso viene detto grafico della relazione. Dato
un sottoinsieme G di A X B risulta individuata immediatamente una relazione di cui essa è il grafico:
(x,y) ∈G. Nella teoria degli insiemi, spesso, il termine “relazione” viene usato nel significato di grafico.
Anche noi utilizzeremo spesso lo stesso simbolo per indicare una relazione ed il suo grafico: scriveremo
perciò indifferentemente R(x,y) oppure (x,y) ∈R.
Esempi:
a) In N X N=N2 si consideri la relazione R(m,n) che significa m è divisore di n. Il grafico di
questa relazione è:
8
Corso di Matematica Discreta
n
4
3
2
1
1
2
3 m
b) In R2 si consideri la relazione x2+y2≤1. Il suo grafico è rappresentato dal cerchio con centro
nell’origine degli assi e raggio 1.
Funzioni (o applicazioni):
Definizione di funzione (o applicazione):
Una relazione f definita in A X B si dice applicazione o funzione di A in B se per ogni x ∈A esiste uno ed
un solo y ∈B tale che (x,y)∈ f .
f
x
A
y
B
Possiamo interpretare intuitivamente la nozione introdotta pensando che f “porti” i punti di A in punti
di B.
L’insieme A viene chiamato dominio di f, l’insieme B codominio di f.
I termini “funzione” e “applicazione” sono equivalenti, tuttavia il termine “funzione” è più tradizionale
e lo si impiega di preferenza quando dominio o codominio sono insiemi di numeri reali o complessi.
L’espressione: f: A→B scritta anche come A→B mette in evidenza il dominio e il codominio di f.
Per ogni x ∈A l’unico elemento y ∈B tale che (x,y)∈ f si indica con f(x) e si dice valore assunto dalla
funzione f in x.
9
Corso di Matematica Discreta
B
y
y=f(x)
x
A
Partendo dall’espressione di f(x), la notazione completa che rappresenta l’applicazione f è la seguente:
⎨x→f (x): A →B ⎬. In questa espressione la lettera x è “muta” e può essere sostituita con un’altra
lettera qualsiasi. Spesso, però, questa notazione (che è evidentemente ingombrante) può venire più o
meno abbreviata, se non vi sono equivoci. Spesso la funzione si indica semplicemente con un’
espressione f(x), dove appunto è sottointeso che la lettera x ha il ruolo di “variabile indipendente”.
Ad esempio si potrà parlare della funzione x2+1 in luogo di ⎨x→ x2+1 : ℜ → ℜ⎬.
In certi casi si usa indicare il valore di un’applicazione scrivendo la variabile indipendente come indice:
fx anziché f(x). Ad esempio se il dominio dell’applicazione è l’insieme N degli interi naturali,
l’applicazione viene detta successione; i valori di una successione a (ma più frequentemente si parla dei
termini della successione) sono indicati con la notazione: a0, a1,… an,…
Le nozioni di funzione di variabile reale e di successione, che nei testi matematici più recenti sono
comprese nella nozione generale di applicazione, venivano un tempo considerate come diverse: ciò
spiega la difformità di notazione, che è rimasta.
Esempi:
a) Dato un qualunque insieme A, l‘applicazione ⎨x→x : A →A⎬ si dice applicazione identica di A
e si indica con IA.
b) Dato l’insieme A ed un suo sottoinsieme B, l’applicazione ⎨x→x : B →A⎬ si dice
applicazione di inclusione di B in A.
c) Siano A e B insiemi qualunque; l’applicazione ⎨(x,y)→x : A B →A⎬ si dice proiezione
canonica su A. Similmente l’applicazione ⎨(x,y)→y : A B →B⎬ si dice proiezione canonica su B.
Data un’applicazione f:A→B e dato un sottoinsieme X di A si dice immagine di X il sottoinsieme di B
costituito dagli elementi che provengono da qualche elemento di X. Questo sottoinsieme viene indicato
con f(X). Pertanto: f(X)=⎨y: y ∈B e (∃ x ∈X / f(x)=y⎬, si potrà anche scrivere, più brevemente: f(X)=
⎨f(x): x ∈X ⎬.
L’insieme f(A) si dirà immagine dell’applicazione f.
Applicazione costante:
Un applicazione f: A→B si dice costante se la sua immagine consta di un unico elemento (cioè ∀ x1 ∈A,
∀ x2 ∈A si ha f(x1)= f(x2)).
Definizione di applicazione surgettiva:
Un’ applicazione f:A→B si dice Surgettiva se è f(A)=B cioè se l’immagine di f coincide con B.
Se f:A→B è surgettiva si usa dire che f è un’applicazione di A su B.
10
Corso di Matematica Discreta
Esempi:
•
•
L’applicazione identica in un qualunque insieme;
le proiezioni canoniche del prodotto.
Definizione di applicazione iniettiva:
Un’ applicazione f:A→B si dice Iniettiva se porta punti distinti in punti distinti. In altre parole: f è
iniettiva ⇔(∀ x1 ∈A, ∀ x2 ∈A : f(x1)= f(x2) ⇒ x1= x2).
Esempi:
•
•
L’applicazione identica in un qualunque insieme;
l’applicazione di inclusione di un sottoinsieme in un insieme
Definizione di applicazione biiettiva:
Un’ applicazione f:A→B si dice Biiettiva se è sia iniettiva sia surgettiva.
Esempi:
•
•
L’applicazione identica in un insieme qualsiasi;
l’applicazione ⎨x→ax+b: R →R ⎬ è biiettiva se è a≠0. Quando invece a=0 abbiamo
un’applicazione costante che non è iniettiva né surgettiva.
Molte volte non è necessario specificare il dominio ed il codominio di un’ applicazione, essendo
sufficiente conoscere un’espressione che la definisce. Certe volte, però, la precisazione del dominio e
del codominio è essenziale: per esempio, ovviamente, quando ci si chiede se un’applicazione è iniettiva
e/o surgettiva. Ad esempio (indicando con R+ l’insieme dei numeri reali non negativi, ≥) l’applicazione
⎨x→x2: R →R⎬ non è iniettiva né surgettiva, l’applicazione ⎨x→x2: R → R+⎬ è surgettiva ma non
iniettiva, l’applicazione ⎨x→x2: R+ → R⎬ è iniettiva ma non surgettiva ed infine l’applicazione ⎨x→x2:
R+ → R+ ⎬ è sia iniettiva sia surgettiva cioè è una biiezione.
Spesso è comodo rappresentare gli insiemi come immagini di opportune applicazioni. Ad esempio
l’insieme degli interi naturali pari si potrà indicare con P =⎨ 2n : n∈N⎬ cioè P =g(N) dove g: N→N
n →2n. Sia ora F una famiglia di insiemi, J un insieme e supponiamo che esista un’applicazione ⎨j →Xj :
J → F⎬ surgettiva. Allora si possono impiegare le seguenti notazioni per indicare l’insieme unione e
l’insieme intersezione di F:
UX
oppure
X ∈F
UX ; IX
j
j∈J
X ∈F
oppure
IX
j
j∈J
Definizione di applicazione composta:
Date due applicazioni f: A→B e g: B→C si dice Applicazione composta di f e g l’applicazione g • f così
definita: g • f = ⎨x →g(f (x)) : A → C⎬.
Si noterà che il codominio di f è stato assunto coincidente con il dominio di g: solo in questo caso si
può definire l’applicazione composta (si dice anche: f e g sono componibili). Nel simbolo g • f
(equivalentemente g(f (x)) si scrive a destra l’applicazione che viene eseguita per prima.
11
Corso di Matematica Discreta
f
B
•x
g
•
f(x)
A
•
C
g(f(x))
Esempio:
L’applicazione ⎨x→ x + 1 : R →R⎬ si può considerare come composta con l’applicazione ⎨x→x2+1
: R →R+⎬ e l’applicazione ⎨y→: y R+ →R⎬.
2
Se è f:A→B si ha f • IA = f e IB • f = f dove IA e IB sono le applicazioni identiche di A e di B
rispettivamente.
La composizione di applicazioni gode della proprietà associativa: se f e g sono componibili e se g e h
sono componibili si ha h•(g• f )=(h• g)• f . Basta infatti notare che si ha (h•(g• f ))(x)=(h(g(f (x)))=
((h• g)• f)(x).
Se f è un’applicazione di un insieme A in sé si possono considerare le iterate di f, cioè le applicazioni f•f ,
f• f• f, ecc. Si possono anche indicare con i simboli f 2, f 3,ecc.
B
Definizione di applicazione inversa:
Data un’applicazione f:A→B si chiama inversa della f un’applicazione g:B→A tale che g• f =IA e f• g =IB.
Non sempre un’applicazione è invertibile cioè esiste la sua inversa.
Per esempio l’applicazione costante non è ovviamente invertibile. Daremo adesso una caratterizzazione
delle applicazioni invertibili.
B
Teorema:
Sia f un’applicazione f:A→B. Allora f è invertibile se e solamente se f è biiettiva.
Dim.
⇒ Supponiamo che f ammetta inversa, g. Dimostriamo che f è surgettiva. Infatti ∀y ∈B si ha
f(g(y))=y. Dunque esiste un elemento di A, x = g(y) tale che f(x)=y. Dimostriamo che f è iniettiva.
Sia quindi f(x1)= f(x2)=y. Allora è x1= g(f(x1))= g(y) e x2= g(f(x2))= g(y). Dunque x1= x2.
⇐ Supponiamo adesso che f sia biiettiva. Essendo f surgettiva ∀y ∈B esiste qualche x tale che
f(x)=y. Ma essendo f anche iniettiva questo x è unico. Quindi è ben individuata un’applicazione
g:B→A che fa corrispondere a y l’unico elemento x ∈A tale che f(x)=y. Dunque per ogni y ∈B è
f(g(y))=y cioè f• g= IB. Inoltre per ogni x ∈A è anche g(f(x))=x cioè g• f = IA. cvd.
Teorema:
L’applicazione inversa di un’applicazione f:A→B, se esiste, è unica.
Dim.
12
Corso di Matematica Discreta
Supponiamo dunque che g e g′ siano applicazioni B→A tali che g• f =IA e f• g =IB. e g′ • f =IA e f• g′
=IB.
Per la proprietà associativa della composizione si ha: (g′ • f)• g = g′ • ( f• g). Ma è g′ • f = IA e f• g = IB.
⇒ IA • g = g′ • IB. cioè g = g′ . cvd
B
B
L’applicazione inversa di f si indica con il simbolo f -1. E’ evidente che (f -1)-1=f. Dunque se f è invertibile
lo è anche la sua inversa.
Dati due insiemi A e B, se esiste un’applicazione A→B invertibile, diciamo che A e B (senza più
necessità di considerarli in ordine) si possono mettere in corrispondenza biunivoca.
Definizione della restrizione di un’applicazione:
Data un’applicazione f:A→B e dato un sottoinsieme C di A, si dice restrizione di f a C e si indica con f |C
l’applicazione ⎨x →f (x) : C → B⎬.
In altre parole, indicando con j l’applicazione di Inclusione, C → A, si ha f |C = f • j
Data un’applicazione f:A→B, abbiamo già definito l’immagine f(X) di un sottoinsieme X di A.
L’applicazione X → f(X) è un’applicazione P(A)→ P(B) che, benché impropriamente, verrà indicata
con il medesimo simbolo f. Ovviamente è f(∅)= ∅.
Analogamente si potrà introdurre un’applicazione f -1: P(B) → P(A) ponendo, per ogni Y⊂B: f -1(Y)=
⎨x: x∈A e f (x) ∈ Y⎬.
L’insieme f -1(Y) si dirà immagine inversa di Y. Osserviamo che questa applicazione, denotata (anch’essa
impropriamente f -1) esiste anche quando f non è invertibile. E’ evidente poi che, quando Y∩ f(A) )= ∅
è f -1(Y) = ∅.
Teorema:
Se f è un’applicazione f:A→B e X e Y sono sottoinsiemi di A, si ha:
1. f(X∪Y)=f(X) ∪ f(Y)
2. f(X∩Y)⊆ f(X) ∩ f(Y)
Dim.
1. Ricordiamo che f(X)=⎨y: y ∈B e (∃ x ∈X / f(x)=y)⎬.
Allora f (X∪Y)=⎨y: y ∈B e (∃ x ∈X ∪Y / f(x)=y)⎬= ⎨y: y ∈B e (∃ x ∈X / f(x)=y)⎬ ∪ ⎨y: y ∈B e (∃ x
∈Y / f(x)=y)⎬=⎨y: y ∈B e (∃ x ∈X / f(x)=y)⎬. cvd
2. w ∈ f(X∩Y) ∃ z ∈ X∩Y / f(z)=w.
z ∈ X ⇒f(z)=w ∈ f(X)
z ∈ Y ⇒f(z)=w ∈ f(Y).
Quindi w ∈ f(X) ∩f(Y) cioè f(X∩Y) ⊆ f(X) ∩f(Y) . cvd.
Teorema (esercizio):
Sia f un’applicazione f:A→B e siano X e Y sottoinsiemi di B. Si ha:
•
•
f -1(X ∪ Y)= f -1(X) ∪ f -1(Y)
f -1(X ∩ Y)= f -1(X) ∩ f -1(Y)
13
Corso di Matematica Discreta
•
f -1(X′)= (f -1(X))′ dove X′ indica il complementare di X in B e, analogamente, (f -1(X))′ indica il
complementare di f -1(X) in A
Dim:
1. f -1(X ∪ Y)= ⎨a: a∈A / f (a) ∈ X ∪ Y⎬=⎨ a: a∈A / (f (a) ∈ X) o (f (a) ∈ Y)⎬=
=⎨ a: a∈A / (f (a) ∈ X) ⎬ ∪ ⎨ a: a∈A / (f (a) ∈ Y) ⎬= f -1(X) ∪ f -1(Y). cvd.
2. f -1(X ∩ Y)= ⎨ a: a∈A / f (a) ∈ X ∩ Y⎬=⎨ a: a∈A / (f (a) ∈ X) e (f (a) ∈ Y)⎬=
=⎨ a: a∈A / (f (a) ∈ X)⎬ ∩ ⎨ a: a∈A / (f (a) ∈ Y)⎬= f -1(X ) ∪ f -1(Y ). Cvd
3. f -1(X′)=⎨a: a∈A / f (a) ∈ X⎬′= ⎨a: a∈A / f (a) ∉ X⎬=⎨a: a∈A e a ∉ f -1(X)⎬=
⎨a: a∈A e a ∈ (f -1(X)) ′ ⎬=(f -1(X)) ′. cvd.
Cardinalità di un insieme:
Preso un n∈N consideriamo l’insieme degli interi che precedono n, cioè l’insieme In=⎨0, 1, 2,…n-1⎬.
Gli insiemi In si prestano bene come insiemi campione.
Definizione:
Si dice che un insieme X è finito se esiste un n∈N tale che X si possa mettere in corrispondenza
biunivoca con In ; in questo caso si dice che X ha numero cardinale n e si scrive c(X)=n. Se non esiste
alcun n per cui questo è possibile, si dice che X è infinito.
La nozione di corrispondenza biunivoca sta alla base della nozione i numero: contare significa stabilire una
corrispondenza biunivoca tra un insieme di oggetti ed un insieme “campione”. Risulta molto naturale la
seguente definizione:
Dati due insiemi, si dice che essi hanno lo stesso numero cardinale se essi possono essere posti in
corrispondenza biunivoca.
Per indicare che due insiemi X e Y hanno lo stesso numero cardinale scriveremo c(X)=c(Y). Questa
relazione gode della proprietà riflessiva, simmetrica e transitiva.
Principi di somma, prodotto e quoziente:
Il problema fondamentale che vogliamo affrontare è il seguente: dati certi insiemi finiti (anzi: dati
semplicemente i loro numeri cardinali) calcolare il numero cardinale di insiemi che si ottengono da essi
mediante le operazioni insiemistiche fondamentali.
Principio della somma:
Se X e Y sono insiemi finiti disgiunti si ha: c(X∪Y)= c(X) ∪ c(Y)
Principio del prodotto:
Se X e Y sono insiemi finiti, si ha: C(X
Y)= c(X) *c(Y)
Principio del quoziente:
Nell’insieme X, sia R una relazione di equivalenza tale che tutte le classi di equivalenza abbiano il
medesimo numero cardinale r. Allora si ha c(X)=r * c(X/ R).
Notiamo che i termini insieme prodotto ed insieme quoziente prendono nome proprio da questi
principi.
14
Corso di Matematica Discreta
Relazioni di equivalenza:
Definizione:
Sia dato un insieme E. Diremo che una relazione R(x,y) definita in E X E è:
¾ Riflessiva : se ∀ x∈E è vera R(x,x);
¾ Simmetrica: se ∀ x∈E, ∀ y∈E R(x,y)⇒ R(y,x):
¾ Transitiva: se ∀ x∈E, ∀ y∈E ∀ z∈E / R(x,y) e R(y,z) ⇒ R(x,z).
Definizione:
Una relazione che sia riflessiva, simmetrica, transitiva si dice relazione di equivalenza.
Esempi:
a) La relazione x = y, nell’ambito di un insieme E, è una relazione di equivalenza.
b) Nell’insieme E possiamo porre equivalenti due elementi qualsiasi; il grafico di questa relazione
coincide con tutto l’insieme prodotto E X E.
c) Nella geometria euclidea, il parallelismo tra le rette di un piano è una relazione di equivalenza (a
patto di considerare ogni retta parallela a sé stessa); la proprietà transitiva in questo caso è un’
affermazione equivalente al famoso assioma delle parallele.
Le equivalenze in a) e b) sono in un certo senso casi estremi. In a) ogni elemento risulta equivalente
solo a sé stesso, in b) risulta equivalente a tutti gli altri. Indicheremo una relazione di equivalenza tra x e
y con x ≈ y. Ovviamente in uno stesso insieme si possono definire più relazioni di equivalenza: occorre
allora distinguerle con notazioni opportune.
Data una relazione di equivalenza in un insieme E e preso un x ∈E, indichiamo con [x] l’insieme di
tutti gli elementi di E equivalenti a x o, come si usa dire, la classe di equivalenza di x. In simboli si ha
dunque: [x]=⎨ y: ( y∈E) e (x≈y)⎬
Teorema:
Due classi di equivalenza o sono disgiunte o coincidono.
Dim.
Siano [x] e [z] due classi di equivalenza e supponiamo che esse abbiano un elemento w in comune:
pertanto è w≈ x e w≈ z. Allora è x≈ z per la proprietà transitiva. Sia ora y∈[x], cioè y≈ x. Per la proprietà
transitiva è y≈ z cioè y∈[z]; si conclude che è [x] ⊆ [z]. Analogamente si dimostra che è [z] ⊆ [x]. cvd.
Consideriamo ora l’insieme F di tutte le classi di equivalenza. F è un sottoinsieme di P(E) con le
seguenti proprietà:
1. S∈F è S ≠ ∅ (infatti la classe di equivalenza [x] contiene almeno x);
2. ∀ S∈F , ∀ T∈F / S ≠ T ⇒S ∩ T=∅ (vedi teorema precedente);
3.
US
S ∈F
=E (infatti un qualunque elemento di E appartiene alla classe di equivalenza che
individua).
Una famiglia F di sottoinsiemi di E aventi le proprietà 1), 2) e 3) si dice una partizione di E. Dunque una
15
Corso di Matematica Discreta
relazione di equivalenza R individua una partizione F: questa viene detta Insieme Quoziente di E rispetto
alla relazione R e viene indicata col simbolo E/R. Reciprocamente, data una partizione F, è subito
individuata in modo unico una relazione R tale che F = E/R. Questa sarà evidentemente la seguente:
x≈ y ⇔ x e y appartengono ad un medesimo elemento di F.
Data in E una relazione R risulta individuata l’applicazione E →E/R che porta ogni x∈E nella sua
classe di equivalenza [x]. Si tratta di un’applicazione surgettiva che viene detta applicazione canonica sul
quoziente.
Consideriamo adesso un’applicazione f surgettiva di un insieme A in un insieme B. Per ogni y∈B
l’insieme f -1(⎨y⎬) non è vuoto; la famiglia F= ⎨ f -1(⎨y⎬) : y∈B ⎬ è costituita da insiemi disgiunti e ricopre
A: è dunque una partizione di A. Evidentemente questa partizione può essere individuata dalla relazione
di equivalenza: x1≈ x2 ⇔ f(x1)= f(x2).
Definiamo ora un’applicazione F:F→B nel seguente modo: F([x])=f(x). Si vede subito che questa
definizione è legittima perché se è [x]=[u], allora essendo x≈ u si ha F([u])= f(u)=f(x). L’applicazione F
oltre ad essere surgettiva è anche iniettiva (infatti classi diverse vanno a finire in punti diversi di B
proprio per il modo in cui sono state definite le classi). Si è ottenuta un’applicazione iniettiva
contraendo in un unico punto tutti i punti aventi uno stesso corrispondente in B.
Se indichiamo con C l’applicazione canonica di A sul quoziente si ha: f=F•C.
Possiamo ora pensare ad un altro modo di ricavare dalla f un’applicazione iniettiva che rimanga ancora
surgettiva: quello di sostituire f con una restrizione opportuna. Come dovrà essere il dominio della
nuova applicazione? Dovrà evidentemente contenere uno ed un solo punto preso da ciascuno degli
insiemi f -1(⎨y⎬) che costituiscono F.
Che sia possibile compiere questa scelta è cosa abbastanza accettabile dalla nostra intuizione: tuttavia
nessuna delle costruzioni insiemistiche che abbiamo introdotto ci permette di affermare l’esistenza di un
insieme come quello desiderato. Occorre introdurre appositamente un assioma.
Assioma della scelta:
Data comunque una partizione ⎨X: X∈F⎬di un insieme E esiste un sottoinsieme di E che ha uno ed un
solo elemento in comune con ciascuno degli X∈F.
Concetto di assioma:
Un assioma è un’affermazione che non si dimostra.
Gli assiomi sono alla base di ogni teoria.
Relazioni d’ordine e pre-ordine:
Definizione:
Si dice preordinamento (o preordine) una relazione binaria assegnata in un insieme che goda della proprietà
riflessiva e transitiva.
Se R è un preordinamento occorre tener presente che, non essendo più assicurata la proprietà
simmetrica la scrittura R(x,y) non è più, in generale, equivalente a R(y,x).
Esempi:
a)
b)
c)
d)
16
Ogni relazione di equivalenza è un pre-ordinamento.
La relazione x ≤ y nell’ambito degli interi (o razionali, o reali) è un pre-ordinamento.
Sia E un insieme qualunque; la relazione X⊆Y è un pre-ordinamento in P(E).
Nell’insieme dei numeri reali, la relazione x2 ≤ y2 è un preordinamento.
Corso di Matematica Discreta
Definizione:
Si dice che una relazione binaria R in un insieme E è antisimmetrica se:
x∈E, ∀ y∈E : (R(x,y) e R(y,x)) ⇒ x=y.
In altre parole il sussistere di entrambe le relazioni R(x,y) e R(y,x) è possibile solo quando x e y
coincidono.
Definizione:
Si dice ordinamento un preordinamento che goda anche della proprietà antisimmetrica.
Pertanto un ordinamento è una relazione che gode della proprietà riflessiva, antisimmetrica e transitiva.
Le relazioni definite in b) e c) sono ordinamenti; quella in a) lo è soltanto nel caso in cui si tratti della
relazione di uguaglianza; mentre quella in d) non è un ordinamento.
Definizione:
Dato un pre-ordinamento (rappresentato dal simbolo ≤) in un insieme E, si pone x <y ⇔ (x≤y) e (x≠y).
Definizione:
Potremo chiamare pre-ordinato un insieme in cui sia stata assegnata una relazione di pre-ordine.
Definizione:
Potremo chiamare ordinato un insieme in cui sia stata assegnata una relazione di ordine.
Definizione:
Un insieme pre-ordinato viene detto insieme diretto o insieme filtrante se, dati due suoi elementi qualsiasi x,y
esiste almeno un elemento z tale che x ≤ z e y ≤ z.
b), c) e d) definiscono insiemi filtranti.
Definizione:
Un elemento M di un insieme ordinato E si dice massimo se (per ogni) ∀ x∈E si ha x ≤M; si dice invece
massimale se non vi è alcun elemento di E che lo supera, cioè se y ≥M ⇒ y=M.
Definizione:
Un elemento m di un insieme ordinato E si dice minimo se (per ogni) ∀ x∈E si ha x ≥m; si dice invece
minimale se non vi è alcun elemento di E ad esso inferiore, cioè se y ≤ m ⇒ y=m.
Evidentemente ogni elemento che sia massimo (minimo) è anche massimale (minimale) ma non viceversa.
Un insieme ordinato può avere più elementi massimali (minimali) ma non può avere più di un massimo
(minimo).
In un insieme ordinato non sempre accade che due elementi x e y siano fra loro confrontabili, cioè
sussista una delle due relazioni x ≤ y o y ≤ x .
¾ Sia E un insieme qualunque; la relazione X⊆Y è un ordinamento in P(E).
17
Corso di Matematica Discreta
Se l’insieme E ha più di un elemento si possono trovare coppie X e Y di sottoinsiemi di E tali che X⊄Y
e Y ⊄X.
¾ La relazione x ≤ y nell’ambito degli interi (o razionali, o reali) è un ordinamento. In questo
esempio tutti gli elementi sono confrontabili
Definizione:
Un ordinamento ≤ definito in un insieme E si dice totale o lineare se per ogni coppia (x,y) di elementi di
E si ha x ≤ y oppure y ≤ x. Altrimenti si dirà parziale.
Un sottoinsieme T di un insieme ordinato E risulta anch’esso ordinato con l’ordinamento che gli viene
subordinato da E.
Definizione:
Si dice catena un sottoinsieme K (di un insieme ordinato E) totalmente ordinato.
Sia K una catena in E e supponiamo che esista un elemento w∉K che sia confrontabile con tutti gli
elementi di K. Allora la catena può venire ampliata in modo ovvio con l’aggiunta di w, cioè K∪⎨w⎬ è
ancora una catena di E.
Teorema:
In ogni insieme ordinato esistono catene non ampliabili
Teorema:
Sia E un insieme ordinato non vuoto in cui ogni catena ammetta una limitazione superiore (cioè esiste in
E un elemento s tale che ∀ x ∈K è x≤s. Allora in E esiste almeno un elemento massimale.
Dim.
Dal teorema precedente sappiamo che in E esiste una catena K non ampliabile: essa è certamente non
vuota. Sia s una limitazione superiore per K. Deve essere s∈K perché K non è ampliabile. Vogliamo
dimostrare che s è un elemento massimale di E. Supponiamo, infatti, che per un certo y ∈E sia y ≥s.
Allora anche y è una limitazione superiore per K, perciò (sempre per il fatto che K non è ampliabile) è y
∈K. Quindi è y≤s. Si deduce allora che (visto che vale anche y ≥s) y=s. Dunque non esiste alcun y in E
tale che y>s cioè s è un elemento massimale.
Teorema:
Sia assegnato in un insieme E un preordinamento ≤ e sia R(x,y) la relazione: (x≤y) e (y≤x). Allora R è
una relazione di equivalenza e il pre-ordinamento di E induce un ordinamento nell’insieme quoziente
E/R. Esso è il seguente [x] ≤[y] se è x≤y
Dim.
Dimostrare per esercizio che R una relazione di equivalenza.
Dobbiamo verificare che questa relazione che si vuole stabilire per le classi di equivalenza non dipende
dal particolare elemento con cui esse sono designate. Sia dunque x≤y e sia [x]=[x′] e [y]=[y′] cioè x≈ x′
18
Corso di Matematica Discreta
e y≈ y′ cioè (x ≤ x′ e x′ ≤ x ) ed ancora (y ≤ y′ e y′ ≤ y ). Quindi è x′ ≤ x ≤y ≤ y′ , implicando x′ ≤ y′ .
Dimostrare per esercizio che la relazione introdotta in E/R è un ordinamento.
Operazioni sui numeri interi:
E’ definita un’applicazione
+: N X N→N
(n,m) →n+m
E’ definita un’applicazione
*: N X N→N
(n,m) →n*m
Si suppongono note le proprietà delle operazioni su interi (associativa, distributiva,…)
Operazioni sui numeri interi relativi:
E’ definita un’applicazione
+: Z X Z→Z
(n,m) →n+m
E’ definita un’applicazione
*: Z X Z→Z
(n,m) →n*m
E’ definita un’applicazione
- : Z X Z→Z
(n,m) →n-m
Si suppongono note le proprietà delle operazioni sui numeri relativi.
Assioma del buon ordinamento:
Assioma del buon ordinamento dei numeri naturali, N:
“Se S è un qualunque insieme non vuoto di numeri naturali, allora in S esiste un elemento minimo
(rispetto all’ordinamento dei numeri), cioè esiste un s∈S tale che s≤t per ogni t ∈S”.
Lo stesso assioma non vale per gli interi relativi. Per esempio l’insieme degli interi negativi non ha
minimo. Però questo assioma vale anche per gli altri ordinamenti di numeri. Ad esempio lo stesso
assioma vale per i numeri interi non negativi.
Principio di induzione:
Indichiamo con P(n) un’affermazione relativa ad un numero naturale generico n, che può essere vera o
falsa in dipendenza da n.
es. P(n)=“n è un numero pari”
Se n=2 allora P(n) è vera, se n=5 allora P(n) è falsa.
Ci chiediamo: esiste un criterio che ci consenta di determinare quando una data affermazione
concernente i naturali è vera per ogni naturale n?
Teorema (principio d’induzione):
Se sono verificate le seguenti ipotesi:
1. l’affermazione è vera per il numero 1 P(1) è vera;
19
Corso di Matematica Discreta
2. ogni volta che per un certo naturale n l’affermazione è vera allora è vera anche per il successivo
n+1 (cioè vale P(n) ⇒ P(n+1)).
Allora (tesi) P(n) è vera per tutti i naturali n. Qui si considerano i naturali senza lo zero.
Dim. (principio d’induzione):
Ragioniamo per assurdo e supponiamo falsa la tesi ossia supponiamo che esista almeno un naturale n
per cui P(n) è falsa. Costruiamo il seguente insieme:
S = ⎨naturali n per cui P(n) è falsa⎬.
Per la nostra ipotesi di assurdo S non è vuoto. A questo punto sfruttiamo l’assioma del buon
ordinamento: in S esiste un elemento minimo s. Per definizione di S, P(s) è falsa. Dalle ipotesi sappiamo
che s ≠1 (P(1) è vera) e quindi (essendo S ⊂N) s>1. Allora esiste il suo precedente, il numero naturale s1. s-1 è strettamente minore di S quindi non appartiene ad S. Ma allora P(s-1) è vera.
Ma dalla seconda ipotesi sappiamo che P(s-1) vera implica che P(s) è vera. Contraddizione. La tesi non
potendo essere falsa è necessariamente vera.
Principio di induzione (2a forma):
Teorema (principio di induzione nella 2a forma):
Sia P(n) un’affermazione relativa ad un numero intero n≥0 generico. Se sono vere le seguenti ipotesi:
1. l’affermazione è vera per il numero 0;
2. fissato un numero n>0, se l’affermazione è vera per tutti gli interi k tali che 0≤ k <n allora è
vera anche per n;
Allora (tesi) è vera per ogni n≥0.
Dim. (principio di induzione nella 2a forma):
Per assurdo, supponiamo falsa la tesi e vera l’ipotesi.
Consideriamo l’insieme S =⎨tutti gli interi n≥0 per cui P(n) è falsa⎬. S, per ipotesi d’assurdo, non è
vuoto. Per l’assioma del Buon Ordinamento esiste s∈S minimo in S. Quindi P(s) è falsa. Dall’ipotesi 1)
s>0. Allora per ogni k tale che 0≤ k <s si ha che k∉S e quindi P(k) è vera. Dall’ipotesi 2) si ha però che
P(s) deve essere vera. Contraddizione. La tesi, non potendo essere falsa, è necessariamente vera.
Algoritmo della Divisione per gli interi ≥0:
Teorema (divisione tra interi non negativi):
Dati due interi n,m ≥0 comunque presi, con m≠0 (n dividendo e m divisore ) esistono due interi q ed r ≥0
(q quoziente e r resto) tali che n=mq+r con 0≤r<m.
Dim.
Fissiamo il divisore m>0 (comunque preso). In questo caso c’è una sola variabile, n. Dobbiamo
dimostrare che l’affermazione P(n)=“per ogni n≥0, esistono q ed r ≥0 tali che n=mq+r con 0≤r<m” è
vera per ogni n ≥0. Applichiamo il principio di induzione nella 2a forma.
1) P(0) è vera? Si perché basta prendere q=r=0.
20
Corso di Matematica Discreta
2) Supponiamo vera la P(k) per tutti i k tali che 0≤ k <n e dimostriamo che P(n) è vera.
Supponiamo cioè che possiamo dividere per m ogni numero 0≤ k <n, trovando quindi qk ed rk.
Distinguiamo due casi:
1) n<m. Basta prendere in tal caso q=0 e r=n. Infatti è n=m*0+n, 0≤r<m poiché r=n.
2) n≥m. In questo caso il numero k=( n-m) è ≥0 e <n cioè 0≤ k <n.
Per ipotesi si ha che P(k) è vera cioè esistono qk ≥0 ed rk ≥0 tali che k=mqk + rk e 0≤ rk <m. Quindi è
n-m= mqk + rk cioè n= m(qk+1)+ rk con 0≤ rk <m. Ponendo q=qk+1 e r= rk abbiamo dimostrato che P(n)
è vera. Applicando il principio di induzione abbiamo che P(n) è vera per ogni n ≥0.
Valore assoluto:
Il valore assoluto (o modulo) di un intero relativo n∈Z è l’intero ≥ 0 definito da:
n se n ≥0
|n|=
-n se n<0
Proprietà del valore assoluto:
1. Il valore assoluto di n è zero se e solamente se n=0;
2. Se n,m ∈Z allora |n*m|=|n|*|m|;
3. Se n∈Z allora n+|n| ≥0.
(Dim. Esercizio).
Algoritmo della divisione esteso agli interi relativi, Z:
Teorema:
Dati gli interi relativi n,m con m≠0 esistono degli interi relativi q ed r tali che n=mq+r e 0≤r<|m|
Dim:
1° caso m>0
Consideriamo il seguente insieme: S = ⎨interi x≥0 tali che x si può scrivere nella forma x=n-my per un
opportuno intero relativo y⎬.
Verifichiamo che S non è vuoto e precisamente esibiamone un elemento. L’intero x=n+m|n| è in S.
Infatti è della forma richiesta: basta prendere y=-|n|. Inoltre è x≥0 in quanto per ipotesi m≥1. Per
l’assioma del buon ordinamento esiste s∈S, elemento minimo di S.
Segue che:
1. s≥0;
2. s si può scrivere come s=n-my (per un opportuno y intero relativo).
Quindi n=my+s. Basta porre quindi q=y e r=s. Si deve però ancora verificare che r=s<m. Ragioniamo
per assurdo e supponiamo che sia r≥m cioè s≥m. E’ x=r-m=s-m=(n-my)-m=n-m(y+1) ≥0
Allora x ∈S e quindi x≥s. Ma x=s-m implica x<s. Contraddizione. Allora è vero che r=s<|m|.
21
Corso di Matematica Discreta
2° caso m<0
Allora –m>0. Da quanto sopra segue che ∃ q1,r1 ∈Z tali che n=-mq1+r1 con 0≤ r1<|-m|. Ma |-m|=|m|
Quindi possiamo scrivere 0≤ r1<|m|. Da n=-mq1+r1 possiamo scrivere n=m(-q1)+r1. Per avere la tesi
basta prendere q = -q1 e r = r1
Teorema:
Quoziente e resto sono unici.
Dim.
Per assurdo supponiamo che non lo siano cioè n=mq1+r1 e n=mq2+r2 con 0≤ ri<|m| i=1,2. Sottraendo
membro a membro si ha: 0=m(q1-q2)+ (r1-r2). Passando al valore assoluto è |r1-r2|=|m(q2- q1)|=
=|m|*| q2- q1|.Si analizzano due casi: 1) r1≥r2 e 2) r1<r2. Analizziamo il 1° caso (il secondo è analogo e
lasciato per esercizio).
r1-r2 <|m|. Essendo r1-r2 ≥0 è r1-r2 =| r1-r2 |. Quindi |m|> r1-r2 =| r1-r2 |=|m|*| q2- q1|.
Essendo m≠0 possiamo scrivere 1>| q2- q1|≥0. Quindi | q2- q1|=0 ⇒ q2- q1=0 cioè q2=q1.
Da |r1-r2|=|m(q2- q1)|=|m|*| q2- q1| segue che r2=r1
Divisibilità fra interi relativi:
Definizione:
Dati due interi relativi a,b∈Z si dice che a è un divisore di b se esiste un intero relativo c ∈Z tale che
b=a*c.
Proprietà della divisibilità
1. Proprietà transitiva:
Se a,b,c sono interi relativi e se a/b ,b/c allora a/c.
Dim:
Se a/b allora ∃ x∈Z tale che ax=b. Se b/c allora ∃ y∈Z tale che by=c. Moltiplicando ambo i membri di
ax=b per y si ottiene axy=by cioè az=c dove z=xy ∈Z.
2. Proprietà dello zero:
Ogni intero relativo a∈Z è divisore di 0 cioè a/0 . Lo zero, 0, è divisore solo di se stesso.
Dim:
a*0=0 cioè ∀ a∈Z ⇒a/0. Se 0/a ⇒ ∃ x∈Z : 0x=a ⇒ a=0.
3. Proprietà:
Presi a,b∈Z, se a/b e b/a allora a=+ b
Dim:
Dalle ipotesi ∃ x,y∈Z / ax=b by=a. Moltiplicando la prima uguaglianza per y si ha: axy=by=a.
Quindi a(xy-1)=0. Se il prodotto fra interi è nullo almeno uno dei fattori deve essere nullo.
22
Corso di Matematica Discreta
Supponiamo quindi che a=0. Dalla Proprietà 2. è b=0 quindi è vero che a=+ b.
Supponiamo quindi che xy-1=0 cioè xy=1. L’unico modo di ottenere 1 come prodotto di interi relativi è
se entrambi sono uguali a +1 oppure a –1. Quindi è y=+ 1 allora a=+ b.
4. Proprietà (divisori banali)
∀ a ∈Z ⇒ + 1/a e + a/a cioè i numeri + 1 e + a sono sempre divisori di a.
Dim.
+1a=a e (–1)(-a)=a.
Numeri primi:
Definizione di numero primo:
Si definisce numero primo un intero relativo p ∈Z, tale che p ha come unici divisori quelli banali (+ 1,+ p)
e tale che p≠ + 1
Notare che un numero primo è sempre diverso da zero (perché ogni numero intero divide 0).
Numeri primi: +2, +3, +5, +7, +11, …
Non esiste ad oggi un metodo (algoritmo) che permetta di stabilire a priori se un numero è primo o
meno: è necessario dividerlo per tutti i suoi predecessori.
Massimo Comune Divisore fra due interi relativi:
Definizione di MCD:
Dati due interi relativi, a,b∈Z, non entrambi nulli, si chiama MCD fra a e b un terzo intero d∈Z, tale
che:
1. d/a e d/b cioè d è un divisore sia di a sia di b
2. Se x è un divisore comune di a e b, x/a e x/b, allora x/d cioè d è multiplo di ogni altro divisore
comune di a e b
Teorema:
Il MCD fra due interi relativi non è unico. Se d è un MCD fra due interi a,b∈Z allora –d è anch’esso un
MCD fra a,b ma è l’unico.
Converremmo di chiamare il MCD fra a,b quello dei due che è positivo e lo indicheremo con d=(a,b).
Dim.
Siano d e d′ due MCD per a,b∈Z. Allora soddisfano entrambi le proprietà 1) e 2) cioè d/a e d/b e d′/d ;
d′/a e d′/b e d/d′ . Da d′/d e d/d′ segue che d=+ d′ .
Teorema:
Dati comunque a,b∈Z, non entrambi nulli, esiste un loro MCD.
Dim.
Costruiamo il seguente insieme di interi positivi: S=⎨interi x>0 / x=aa′ + bb′ per opportuni a′,b′∈Z⎬
23
Corso di Matematica Discreta
Questo insieme non è vuoto. Infatti, poiché a e b non sono entrambi nulli, uno dei due per esempio a è
diverso da zero. Allora a=a1+b0 e –a=a(-1)+b0. a oppure –a è positivo e sono entrambi della forma
richiesta, x=aa′ + bb′ . Quindi S≠∅. Per l’assioma del buon ordinamento S ha un minimo, d.
Vogliamo dimostrare che d è il MCD fra a e b. Dimostriamo che d/a. Dall’algoritmo della divisione
sappiamo che ∃ q,r ∈Z tali che a=dq+r con 0≤r<|d| cioè 0≤r<d essendo d positivo.
Se r=0 allora ho la tesi cioè d/a. Per assurdo supponiamo allora che r≠0 cioè 0<r<d.
E’ r=a-dq=a-(aa′ + bb′ )q =a(1- a′ q)+b(- b′ q) per opportuni a′,b′∈Z (essendo d in S).
Ma (1- a′ q), (- b′ q)∈Z allora r, essendo strettamente positivo, appartiene anch’esso ad S. Ma questo
contraddice la minimalità di d in S. Analogamente si dimostra che d/a. Adesso dobbiamo dimostrare
che x/a e x/b ⇒ x/d.
Dalle ipotesi ∃ y,z ∈Z / xy=a e xz=b. Allora è d=aa′ + bb′ = xya′ + xzb′ =x(ya′ + zb′ ) cioè x/d essendo
ya′ + zb′ =l ∈Z. cvd.
Dalla precedente dimostrazione segue
Corollario:
Il MCD tra due interi (non entrambi nulli) è una combinazione lineare con coefficienti interi relativi di a
e b cioè d=(a,b)= aa′ + bb′ con a′,b′∈Z.
Il viceversa però non è vero, cioè se un numero c≠0 si può scrivere come c=(a,b)= aa′ + bb′ con
a′,b′∈Z non è detto che sia il MCD tra a e b.
Esempio: 6=6*1+4*0 ma 6 non è il MCD tra 6 e 4. Se invece c=1 allora è vero.
Nota che il MCD d=(a,b) è multiplo di ogni altro divisore comune di a e b cioè è il più grande dei
divisori comuni di a e b.
Esempio:
Sia a=6 e b=4.
Divisori di a= 6 : +1, +2, +3, +6
Divisori di b= 4 : +1, +2, +4
Divisori Comuni: +1, +2
Multipli di ogni altro divisore comune: +2
MCD è per definizione quello positivo: +2
MCD(a,b)= MCD(4,6)= 2
Algoritmo di Euclide:
Teorema (algoritmo di Euclide):
Dati comunque a,b∈Z+, il loro MCD d=(a,b), è l’ultimo termine non nullo della sequenza X1, X2, X3,…
Xt, 0 dove X1=max(a,b), X2=min(a,b), Xk+1 è il resto della divisione tra Xk-1 e Xk.
Esempio: MCD(330,156)
X1=330; X2=156; X3=18; X4=12; X5=6; X6=0
330=156*2+18 ; 156=18*8+12; 18=12*1+6; 12=6*2+0
Dim.
Per prima cosa notiamo che poiché Xk+1 è il resto della divisione tra Xk-1 e Xk allora è Xk+1 < Xk. Quindi
(Xk), k>2 è una sequenza strettamente decrescente di interi non negativi.
24
Corso di Matematica Discreta
Allora la sequenza è finita e l’ultimo numero della sequenza è zero. Adesso dimostriamo che
MCD(Xk+1, Xk)=MCD(Xk, Xk-1) per ogni k. E’ Xk+1=Xk-1- qXk dove q è il quoziente della divisione tra
Xk-1 e Xk. Quindi la nostra tesi diventa: MCD(Xk-1- qXk , Xk)=MCD(Xk, Xk-1). Basta dimostrare allora
che ogni divisore comune di Xk e di Xk-1-qXk è anche un divisore di Xk-1 e che ogni divisore di Xk, Xk-1
è anche un divisore di Xk-1- qXk
Sia quindi d/ Xk-1- qXk e d/ Xk. Allora d*A= Xk-1- qXk e d*B= Xk. Quindi Xk-1 = d*A+ qXk = d*A+
d*B=d*(A+B) cioè d è un divisore di Xk-1. Viceversa sia d/ Xk e d/ Xk-1 cioè d*A= Xk e d*B= Xk-1.
Allora Xk-1- qXk= d*B-q d*A=d*(B-qA) cioè d/ Xk-1- qXk.
Se MCD(Xk+1, Xk)=MCD(Xk, Xk-1) allora è MCD(b, a)= MCD(X2, X1)=MCD(X3, X2)….
MCD(0, Xt)= Xt dove Xt è l’ultimo numero non nullo della sequenza (Xk). Cvd.
Minimo Comune Multiplo:
Definizione:
Dati due interi relativi, a,b∈Z, si chiama Minimo Comune Multiplo fra a e b il più piccolo intero
positivo k, tale che k è un multiplo sia di a sia di b.
Numeri coprimi:
Teorema:
Se il numero 1 è della forma 1=aa′ + bb′ , con a,b,a′,b′∈Z, allora 1 è il MCD tra a e b cioè 1=(a,b).
Dim.
Sia d=(a,b) ⇒ d/a e d/b ⇒ dx=a e dy=b con x,y ∈Z. Per ipotesi è 1=aa′ + bb′ . Allora 1= dx aa′ + dy b′
= d(x aa′ + y b′ ). Quindi d/1.Ma l’unico divisore positivo di 1 è 1 ⇒d=1=(a,b)
Corollario:
Il massimo comune divisore tra un numero intero a ed il suo successivo a+1 (o precedente a-1) è 1.
Dim.
1=a*(-1)+(a+1)*1 . Dal teorema precedente sappiamo che 1=(a,a+1). Cvd.
Definizione di numeri coprimi:
Due numeri interi a,b ∈Z si dicono primi fra loro o coprimi se il loro MCD è 1 cioè 1=(a,b).
Corollario 1:
Siano a, b, c∈Z. Se uno dei tre, es. c, è un divisore del prodotto degli altri due, c/ab, e se tale divisore è
coprimo con uno dei fattori, es. 1=(c,a) allora è divisore dell’altro, c/b.
Dim.
Dalle ipotesi sappiamo che ab=cx con x∈Z e 1=cc′ + aa′ con c′,a′ ∈Z. Moltiplicando per b ambo i
membri dell’ultima uguaglianza otteniamo: b= bcc′ + baa′ cioè b= bcc′ + cxa′ =c(bc′ + xa′ ) cioè c/b. cvd.
Corollario 2:
Siano a ,b, c∈Z. Se a/c, b/c e (a,b)=1 allora ab/c.
25
Corso di Matematica Discreta
Dim.
Dalle ipotesi è c=ax,c=by e 1=aa′ + bb′ con x,y,a′,b′ ∈Z. Moltiplicando per c l’ultima equazione
otteniamo: c=caa′ + cbb′ =byaa′ +axbb′ =ab(ya′ +xb′ ) cioè ab/c.
Notiamo che l’ipotesi che a e b siano coprimi è essenziale. Infatti, per esempio, 4/12, 6/12 ma
6*4=24/12
Corollario 3:
Se un numero primo p è divisore di un prodotto ab allora il numero primo p è un divisore di almeno
uno dei due fattori.
Dim.
Supponiamo che p/a e dimostriamo che necessariamente è p/b. Qual è il MCD fra p ed a?. Per
definizione di numero primo gli unici divisori di p sono +1 e +p. Poiché per ipotesi p non è un divisore
di a non lo è neanche –p. I divisori comuni tra p ed a sono allora +1. Essendo il MCD tra a e p positivo
allora è 1. Dal corollario 1 si deduce che p/b. Analogamente si dimostra che se p/b ⇒ p/a.
Fattorizzazione degli interi:
Teorema:
Ogni intero n>1 si può esprimere come prodotto di numeri primi positivi ed in modo unico a meno
dell’ordine dei fattori.
Nota:
Unicità significa che se n=p1• p2•…pr= q1• q2•…qs con pi e qj numeri primi positivi allora r=s e pi=qi se
opportunamente ordinati. In questo teorema il prodotto è inteso anche come prodotto di un solo
fattore (es. nel caso di n numero primo).
Dim:
Dimostriamo per prima cosa l’esistenza della fattorizzazione.
Ragioniamo per assurdo e supponiamo che esistano interi >1 che non siano prodotto di numeri primi
positivi. Costruiamo l’insieme S = ⎨interi n>1 che non sono prodotto di numeri primi positivi⎬.
Dall’ipotesi di assurdo è S≠∅. Applichiamo l’assioma del buon ordinamento dei naturali. Esiste allora
s∈S, minimo in S. Questo s non è un numero primo positivo. (Se lo fosse sarebbe prodotto (con un
solo fattore) di primi positivi (se stesso) e quindi non sarebbe in S). Allora s ha almeno un divisore d ≠+
1;+ s. Se ci limitiamo ai soli divisore positivi, s ha almeno un divisore positivo d ≠1, s. Si ha allora che
1<d<s. Per la definizione di divisore ∃ c∈Z tale che s=dc. Anche c>0 ed è c ≠1, s.
Si ha quindi 1<c<s. Poiché sia c sia d sono strettamente minori di s allora c,d ∉S. Allora c e d sono
prodotto di primi positivi. Ma essendo s=cd si ha che anche s è prodotto di primi positivi. Contraddizione.
Adesso dimostriamo l’unicità della fattorizzazione.
Sia n= p1• p2•…pr= q1• q2•…qs con pi e qj numeri primi positivi. La tesi è che r=s (il numero dei fattori è
uguale) e che i pi e qj coincidano (a meno dell’ordine). Applichiamo il principio d’induzione sul numero
dei fattori r:
1. L’affermazione è vera per r=1?
26
Corso di Matematica Discreta
Se r=1 si ha p1= q1• q2•…qs. La tesi è che anche s=1 e quindi p1= q1. Da p1= q1• q2•…qs otteniamo che
q1è un divisore di p1. Ma p1 è un numero primo positivo allora i suoi unici divisori sono quelli banali. Ma
anche q1 è un numero primo positivo e quindi p1= q1. Se per assurdo s fosse maggiore di 1, dividendo
per p1 avremmo 1= q2•…qs cioè 1 si potrebbe scrivere come prodotto di numeri interi positivi
strettamente maggiori di 1. Assurdo.
Supponiamo adesso che l’affermazione sia vera per r e dimostriamo che è vera per r+1. La tesi è che se
p1• p2•…pr+1= q1• q2•…qt allora r+1=t e che i pi coincidano con i qj a meno dell’ordine. Si ha che q1 è
divisore del prodotto di numeri primi p1• p2•…pr+1. Da un teorema precedente sappiamo che se un
numero primo divide un prodotto divide almeno uno dei due fattori. A meno di riordinare i fattori sia
p1 il multiplo di q1. Con ragionamento analogo al punto primo si ha allora che p1= q1. Dividendo
membro a membro per p1 otteniamo p2•…pr+1= q2•…qt. Il numero dei fattori a primo membro è r.
Applicando l’ipotesi induttiva abbiamo che il numero dei fattori a primo membro è uguale al numero
dei fattori a secondo membro, cioè r=t-1 ovvero r+1=t, ed inoltre che i p2•…pr+1 coincidono con i
q2•…qt a meno dell’ordine. Poiché è anche p1= q1 abbiamo dimostrato che i fattori a primo membro
coincidono, a meno dell’ordine, con i fattori a secondo membro.
Teorema di Euclide:
Teorema di Euclide:
I numeri primi sono infiniti.
Dim:
Ci limitiamo a dimostrare che i numeri primi positivi sono infiniti. Ragioniamo per assurdo e
supponiamo che i numeri primi positivi siano finiti ad esempio in numero di t e siano p1• p2•…pt.
Consideriamo il seguente numero intero positivo: n= (p1• p2•…pt )+1. E’ ovviamente n>1.
Dal teorema precedente sulla fattorizzazione sappiamo che n si può scrivere in modo unico come
prodotto di primi positivi. Quindi n è divisibile per almeno un primo positivo. Questo primo positivo è
uno dei pi per i=1…t. Sia pj questo divisore di n.
Allora è n= pj*c. Quindi n= (p1• p2•…pt )+1= pj*c.
Mettendo in evidenza pj si ha: 1= pj(c- p1• p2• pj-1 • pj+1 …pt) cioè pj è divisore di 1. Contraddizione.
Congruenze aritmetiche:
Congruenza modulo m:
Fissiamo un intero relativo m. Nell’insieme Z degli interi relativi definiamo una relazione (detta
congruenza modulo m) in questo modo: un intero a∈Z è in relazione con b∈Z se (a-b) è un multiplo di
m. Se ciò si verifica cioè se a e b sono in relazione si scrive a≡b (mod m) e si dice che “a è congruo b
modulo m”. Se ciò non si verifica si scrive a≡b (mod m) (cioè a non è congruo b modulo m).
Esempio: 12 ≡9 (mod 3); 12 ≡6 (mod 3); -15 ≡9 (mod 4); 7 ≡1 (mod 4);
La relazione di congruenza è una relazione di equivalenza ed è “infinita” perché il modulo fissato m può
variare come si vuole tra gli interi relativi Z.
Teorema:
Fissato l’intero relativo m la relazione di congruenza è una relazione di equivalenza.
Dim:
27
Corso di Matematica Discreta
Riflessiva: ∀ a∈Z è vero che a≡a (mod m)? a-a=0 che è multiplo di qualunque numero e quindi anche di
m.
Simmetrica:
Se a≡b (mod m) è vero che b≡a (mod m)? Dall’ipotesi abbiamo che a-b=km con k∈Z. Moltiplicando ambo
i membri per –1 si ha b-a=-km con -k ∈Z cioè b≡a (mod m).
Transitiva:
Se a≡b (mod m) e b≡c (mod m) è vero che a≡c (mod m)? Dalle ipotesi abbiamo a-b=km e b-c=hm con k,h
∈Z. Sommando membro a membro si ha a-c=(k+h)m ⇒ a≡c ( mod m).
Quali sono le classi di equivalenza in cui viene “partizionato” Z dalla relazione di congruenza modulo
m?
Alcune congruenze notevoli:
Congruenza modulo 0
a≡b (mod 0) ⇔ a-b=k*0 ⇔ a-b=0 cioè se a=b. La relazione di congruenza modulo 0 coincide con la
relazione di uguaglianza. Se a è un intero relativo la sua classe di equivalenza modulo 0 è [a]=⎨a⎬. Ogni
classe contiene un solo elemento. Z viene partizionato in infinite classi ognuna contenete un solo
numero.
Congruenza modulo 1
a≡b ( mod 1) ⇔ a-b=k*1 cioè se a-b è un multiplo di 1. Ma ogni numero è multiplo di 1 quindi ogni
numero a è in relazione modulo 1 con ogni altro intero relativo b. Esiste quindi un’unica classe di
equivalenza modulo 1 contenente tutti gli interi cioè coincidente con Z.
Nota:
La congruenza modulo m coincide con la congruenza modulo –m. Infatti se a≡b ( mod m) ⇒ a-b=km con
k ∈Z ⇒ a-b=(-k)(-m) e -k ∈Z ⇒ a≡b ( mod -m). Ci limiteremo a studiare allora le congruenze con m≥0.
Abbiamo già analizzato i casi con m=0 e m=1. Analizziamo quindi il caso m>1.
Convenzione:
Converremo di indicare con [a]m la classe rappresentata dall’intero a nella relazione di congruenza
modulo m, cioè [a] m=⎨b∈Z / a≡ b (mod m)⎬.
Teorema:
Fissato un intero m>1, le classi di equivalenza della relazione di congruenza modulo m sono in numero
di m e sono esattamente: [0]m, [1]m, [2]m, … [m-1]m.
Dim:
Dobbiamo dimostrare che presa una qualunque classe [a]m essa coincide con una di quelle della tesi.
Applicando l’algoritmo della divisione con a dividendo ed m divisore si ottiene che esistono q,r∈Z tali
che a=mq+r e 0≤r<|m|=m. Quindi a-r= mq cioè a≡ r (mod m). Quindi a ed r rappresentano la stessa
classe di equivalenza. Ma poiché r può assumere soltanto i valori da 0 a m-1 si ha che [a]m è proprio una
di quelle della tesi. Fino ad ora abbiamo dimostrato invero che [0]m, [1]m, [2]m, … [m-1]m sono tutte le
possibili classi. Per dimostrare che sono in numero di m dobbiamo dimostrare che sono a due a due
disgiunte. Ragioniamo per assurdo e supponiamo che ∃ x,y∈Z x≠ y 0≤ x,y ≤m-1 tali che [x]m=[y]m.
Senza perdita di generalità supponiamo che x>y. Dall’ipotesi possiamo scrivere x-y=km cioè x-y è un
multiplo di m. Da 0≤ x,y ≤m-1 e da x>y segue che 0< x-y ≤m-1. Ma non esistono multipli di m in ]0,m[.
Contraddizione.
28
Corso di Matematica Discreta
Come abbiamo appena dimostrato le classi della relazione di congruenza modulo m sono esattamente
[0]m, [1]m, [2]m, … [m-1]m. Ma 0,1,…(m-1) sono tutti i possibili resti della divisione di un intero per m.
Queste classi allora si chiamano anche classi resto modulo m.
Esempio. Sia m=5 (congruenza modulo 5). Le classi resto modulo 5 sono [0]5, [1]5, [2]5, [3]5, [4]5, [5]5.
Dato ∀ a∈Z come facciamo a stabilire in quale classe resto sta? Nella dimostrazione precedente
abbiamo visto che [a]m= [r]m dove r è il resto della divisione di a per m. Quindi se m=5 e a=22 allora
facendo la divisione, 22:5=4 con resto di 2, ottengo che [22]5= [2]5.
Nota che in classe 0, [0]5 ci sono tutti i multipli di 5 ed in generale in [0]m ci sono tutti i multipli di m.
Proprietà della congruenza (simili a quelle dell’uguaglianza)
1. Invarianza (o compatibilità) rispetto alla somma:
sommando ad ambo i membri di una congruenza uno stesso numero intero, la congruenza non cambia.
Cioè se a≡ b (mod m) ⇒ a+c≡ b+c (mod m) ∀ c∈ Z.
Dim:
Per ipotesi è a-b=km con k∈ Z. E’ a+c- b-c=a-b= km cioè a+c≡ b+c (mod m) ∀ c∈ Z.
2. Invarianza rispetto al prodotto.
Se a≡ b (mod m) ⇒ ac≡ bc (mod m) ∀ c∈ Z.
Dim:
ac-bc=(a-b)c=kmc=(kc)m ⇒ ac≡ bc (mod m). Il viceversa non è però vero. Se ac≡ bc ( mod m) ⇒ a≡ b (mod
m). Non si possono cioè dividere ambo i membri di una congruenza per uno stesso intero non nullo.
Esempio:
2*3 ≡2*1 (mod 4) ma 3 ≡1 (mod 4).
Teorema:
Se ac≡ bc ( mod m) e se MCD(c,m)=1 (cioè c ed m sono coprimi) ⇒ a≡ b ( mod m).
Dim:
Dall’ipotesi è ac-bc=(a-b)c=km con k∈Z. Ricordiamo da un teorema precedente che se un numero
intero divide un prodotto ed è coprimo con uno dei due fattori allora divide l’altro fattore. Nel nostro
caso m è un divisore del prodotto (a-b)c ed è coprimo con c allora divide (a-b) cioè ∃ h∈Z
tale che (a-b)=hm ) ⇒ a≡ b (mod m). Cvd.
Congruenze di I° grado ad una incognita:
Siamo m>1, a,b∈Z. Sia x un’incognita. Risolvere la congruenza ax≡ b (mod m) significa trovare un intero
x0 ∈Z tale che a x0 –b=km con k∈Z cioè a x0 ≡ b (mod m).
Ci chiediamo: quando la congruenza di primo grado ad un’incognita ammette almeno una soluzione? E
se ne ammette una quante sono tutte le soluzioni?
Teorema:
29
Corso di Matematica Discreta
La congruenza ax≡ b (mod m) ha almeno una soluzione se e solamente se il MCD(a,m) è un divisore di b,
(a,m)/b. Se x0 ∈Z è una soluzione della congruenza allora tutte le altre soluzioni sono del tipo: x0
+k*m/(a,m) ∀ k∈Z.
Dim:
⇒Ipotesi: ax≡ b (mod m) ha almeno una soluzione x0 ∈Z. Tesi: (a,m)/b.
Dall’ipotesi è a x0-b=km per qualche k ∈Z. Dalla definizione di MCD possiamo scrivere:a=(a,m)h e
m=(a,m)t con h,t ∈Z
Da a x0-b=km ricavando b è: b= a x0- km= (a,m)h x0- k(a,m)t= (a,m)(h x0- kt) cioè (a,m)/b. cvd.
⇐Ipotesi: (a,m)/b. Tesi: La congruenza ammette almeno una soluzione x0.
Dall’ipotesi possiamo scrivere: b=(a,m)k con ∈Z. Ricordiamo che il MCD tra due numeri si può sempre
scrivere come loro combinazione lineare: (a,m)=aa′ +mm′ con a′ ,m′ ∈Z. Sostituendo abbiamo b=aa′
k+mm′ k cioè a(a′ k)-b=(- m′ k)m. Ponendo x0= (a′ k) si ha la tesi. cvd.
Nota che la dimostrazione del Teorema fornisce anche un metodo di calcolo (algoritmo) per trovare
una soluzione della congruenza. Infatti x0= a′ k dove k=b/(a,m) e a′ =((a,m)-mm′ )/a.
Adesso dobbiamo dimostrare che se la congruenza di primo grado ad un’incognita ammette soluzione
ne ammette infinite del tipo x0 +k*m/(a,m) ∀ k∈Z.
Sia x0 una soluzione della congruenza. Sappiamo allora che (a,m)/b e che ax0-b=tm con t∈Z. Sia x1
un’altra soluzione della congruenza cioè ax1-b=hm con h∈Z.
Sottraendo membro a membro si ottiene:
a(x1-x0)=(h-t)m. Dividiamo ambo i membri per (a,m).
(a/(a,m))(x1-x0)=(m/(a,m))(h-t). Ma è (a,m)=aa′ +mm′ con a′ ,m′ ∈Z. Dividendo ambo i membri per (a,m)
si ha 1=(a/(a,m)) a′ +(m/(a,m))m′ cioè MCD(a/(a,m), m/(a,m))=1
In conclusione abbiamo: da (a/(a,m))(x1-x0)=(m/(a,m))(h-t)
⇒(m/(a,m))/ (a/(a,m))(x1-x0) e da MCD(a/(a,m), m/(a,m))=1
che a/(a,m) e m/(a,m) sono coprimi. Da un teorema precedente sappiamo che queste due ipotesi
implicano che (m/(a,m))/ (x1-x0) cioè x1-x0= (m/(a,m))k con k∈Z cioè x1=x0+ k(m/(a,m)). Cvd.
Esempio:
Trovare tutte le soluzioni della congruenza 16x ≡24 (mod 36).
Innanzitutto verifichiamo se una soluzione esiste. Applicando il teorema precedente dobbiamo
verificare che il MCD tra 16 e 36 sia un divisore di 24. E’ MCD(16,36)=4 e 4/24.
Una soluzione è quindi x0= ka′ dove k=24/4=6 e a′ =-2 poiché 4=(16,36)=16* a′ +36*m′ =
= 16*(-2)+36*1. Quindi x0= ka′ =6*(-2)=-12 è una soluzione della congruenza. Tutte le altre soluzioni
sono: x1= x0+ k(m/(a,m)) cioè x1= -12+k9 con k∈Z . Quindi per k=0 x1= -12; per k=1 x1= -3, per
k=-1 x1= -21, ecc.
Sistema di congruenze di I° grado ad una incognita:
Date delle congruenze di primo grado ad un’incognita:
ax≡ b (mod m)
a1x≡ b1 (mod m1)
….
si dice che esse formano un sistema. Risolvere il sistema significa trovare un intero x0 ∈Z che sia
soluzione comune di tutte le congruenze del sistema.
30
Corso di Matematica Discreta
Teorema cinese del resto:
Se r ed s sono interi coprimi (cioè (r,s)=1) allora il sistema
x≡ a (mod r)
x≡ b (mod s)
con a,b∈Z ammette una soluzione x0 ∈Z. Tutte le altre soluzioni sono del tipo x1 = x0 +krs con k∈Z.
Dim:
Dimostriamo innanzitutto che una soluzione esiste. Notiamo che ogni numero x0 =a+yr con y∈Z è
soluzione della prima congruenza. Si tratta di trovare, fra gli infiniti valori di x0 (e quindi di y) quello che
sia anche soluzione della seconda congruenza. Vogliamo trovare cioè y tale che a+yr≡ b (mod s).
Applichiamo la proprietà invariantiva rispetto alla somma e sommiamo ad ambo i membri (-a).
Si ha yr≡ b-a (mod s) che è una congruenza di primo grado ad un’incognita. Dal teorema sulle
congruenze di primo grado ad un’incognita sappiamo che essa ammette soluzione se e solamente se
MCD(r,s)/ (b-a). Dalle ipotesi del teorema cinese del resto sappiamo però che MCD(r,s)=1 che è
divisore di qualunque numero. Allora la congruenza yr≡ b-a (mod s) ammette soluzione y0 cioè y0 r≡ b-a
(mod s). Sommando ad ambo i membri (+a) si ha dunque a+y0 r≡ b (mod s). x0= a+y0 r è dunque una
soluzione sia della prima sia della seconda congruenza cioè è una soluzione del sistema. Caratterizziamo
adesso tutte le altre soluzioni.
Se x1 è un’altra soluzione del sistema si ha:
x1≡ a (mod r) e
x0≡ a (mod r)
x1 ≡ b (mod s) e
x0 ≡ b (mod s)
cioè:
x0-a =tr
x0-b =cs
x1-a =dr
x1-b =es
Quindi possiamo scrivere:
x1-a-x0+a =dr-tr ⇒ x1-x0=(d-t)r ⇒ r è un divisore di (x1-x0)
x1-b-x0+b =es-cs ⇒ x1-x0=(e-c)s ⇒ s è un divisore di (x1-x0)
Da un corollario sui numeri coprimi sappiamo che se due numeri a,b, coprimi fra loro, dividono un
terzo numero c allora il loro prodotto ab divide lo stesso numero c.
Nel nostro caso abbiamo che rs/(x1-x0) cioè x1-x0=krs con k∈Z cioè x1= x0+krs con k∈Z. cvd.
Esempio:
Risolvere il sistema:
x ≡5 (mod 8)
x ≡1 (mod 3)
Poiché 8 e 3 sono coprimi fra di loro dal teorema precedente sappiamo che esiste una soluzione.
Seguendo proprio la dimostrazione di questo teorema sappiamo che ogni numero del tipo x0=5+y8 è
soluzione della prima congruenza.
Se vogliamo che sia soluzione anche della seconda deve essere 5+y8≡1 (mod 3) cioè 8y ≡ -4 (mod 3) .
Questa congruenza ammette soluzione perché (8,3)=1 è un divisore di -4. Una soluzione della
precedente congruenza si ottiene come è noto come y0 =ka′ dove k=-4/(8,3)=-4
1=(8,3)=8*a′ +3m′ =8*(-1)+3*(+3) ⇒ a′ =-1.
Quindi y0 =ka′ =-4*-1=4.
La soluzione comune cercata è: x0=5+ y0 8 =5+8*4=37
Verifichiamo: 37 ≡5 (mod 8)? Si perché 37-5=32=4*8
31
Corso di Matematica Discreta
37 ≡1 (mod 3)? Si perché 37-1=36=12*3.
Tutte le altre soluzioni sono del tipo: x1= x0+krs=37+k24 con k∈Z.
Nota sul teorema cinese del resto:
Fra le soluzioni del sistema
x≡ a (mod r)
x≡ b (mod s)
con (r,s)=1, ne esiste una compresa tra 1 e rs. (Nell’esempio precedente è 13). Infatti sia x0 una
qualunque soluzione del sistema e dividiamola per rs. Si ha x0=qrs+ r0 con 0≤ r0<rs.
Il resto r0 è pure soluzione del sistema essendo della forma r0= x0-qrs cioè è del tipo y= x0+krs.
Esistono 2 casi:
1° caso: Il resto r0 è compreso tra 1 e rs-1 (cioè non è zero). Allora r0 è proprio la soluzione cercata.
2° caso: Il resto r0 è zero. In questo caso x0=qrs.Quindi x0-rs=qrs-rs ⇒ x0-rs=(q-1)rs ⇒ x0-rs è multiplo
sia di r sia di s. Allora x0 ≡rs (mod r) e x0 ≡rs (mod s).
Sappiamo però che è anche x0 ≡a (mod r) e x0 ≡b (mod s).
Ricordiamo che la congruenza è una relazione di equivalenza per cui vale la proprietà transitiva. Quindi
rs ≡a ( mod r) e rs ≡b ( mod s) cioè il numero (rs) è soluzione del sistema di congruenze ed è compreso tra
1 ed rs.
Funzione di Eulero:
Sia n un intero positivo, cioè n>0.
Definiamo ϕ(n)= numero degli interi x tali che 1≤x≤n (cioè interi positivi che precedono n+1) e tali che
(x,n)=1 (e che sono coprimi con il numero n).
Esempio:
n=1 ⇒ ϕ(1)=1
n=2 ⇒ ϕ(2)=1
n=3 ⇒ ϕ(3)=2
n=4 ⇒ ϕ(4)=2
n=5 ⇒ ϕ(5)=4
1≤x≤1 e (x,1)=1 ⇒ x=1
1≤x≤2 e (x,2)=1 ⇒ x=1
1≤x≤3 e (x,3)=1 ⇒ x=1, x=2
1≤x≤4 e (x,4)=1 ⇒ x=1, x=3
1≤x≤5 e (x,5)=1 ⇒ x=1, x=2, x=3, x=4
Domanda: esiste una formula generale per il calcolo di ϕ(n)?
Analizziamo alcuni casi.
1° Caso: n è un numero primo. Sappiamo allora che tutti i predecessori di n sono ad esso coprimi, 1, 2,
…n-1, e quindi ϕ(n)=n-1
2° Caso: n è una potenza di un numero primo. E’ n=pk con p numero primo.
Quali sono i numeri compresi tra 1 e n che non sono coprimi con n? Un tale numero x deve avere in
comune con n un divisore diverso da 1. I divisori di n sono:
1, p, p2,… pk e quindi in ogni caso x deve essere un multiplo di p. Quindi gli x compresi tra 1 e n che
non sono coprimi con n sono tutti i multipli di p:
p, 2p,3p,…pk-1p=n e sono ovviamente in numero di pk-1.
Quindi i numeri compresi tra 1 ed n e che sono coprimi con n sono in numero di n-pk-1=pk-1p-pk-1=pk -pk-1.
Quindi ϕ(n)= ϕ(pk )= pk -pk-1.
Es. ϕ(81)= ϕ(34)= 34- 33=81-27=54.
Teorema:
32
Corso di Matematica Discreta
Siano r e s due interi strettamente positivi tali che siano coprimi fra loro, (r,s)=1. Allora ϕ(rs)= ϕ(r) ϕ(s).
Dim:
Siano R=⎨x∈Z : 1≤ x ≤ r e (x,r)=1⎬, S=⎨x∈Z : 1≤ x ≤ s e (x,s)=1⎬ e T=⎨x∈Z : 1≤ x ≤ rs e (x,rs)=1⎬.
Per definizione della funzione di Eulero si ha che ϕ(r) =|R|= numero di elementi di R;
ϕ(s) =|S|=numero di elementi di S; ϕ(rs) =|T|=numero di elementi di T.
Dobbiamo dimostrare che |T|=|R|*|S|
Se riusciamo a costruire un’applicazione biunivoca f dall’insieme R X S nell’insieme T avremo
dimostrato la tesi, perché | R X S |=|R|*|S| e due insiemi in corrispondenza biunivoca hanno la
stessa cardinalità.
f: R S →T
(x,y) →t
x∈R ⇒ 1≤ x ≤ r e (x,r)=1
y∈S ⇒ 1≤ y ≤ s e (y,s)=1
Consideriamo il sistema di congruenze:
X ≡ x (mod r)
X ≡ y (mod s)
Per il teorema cinese del resto il sistema ammette soluzione h, essendo (r,s)=1. Inoltre sappiamo che
esiste una soluzione t compresa tra 1≤ t≤ rs. Sarà proprio t il valore associato alla coppia (x,y) cioè
f(x,y)=t. Dobbiamo verificare ovviamente che t∈T cioè 1≤ t ≤ rs e (t,rs)=1. La prima condizione, cioè
1≤ t ≤ rs, è verificata. Verifichiamo che (t,rs)=1. Ragioniamo per assurdo e supponiamo che (t,rs)>1.
Dal teorema sulla fattorizzazione degli interi positivi sappiamo che possiamo scomporre l’intero (t,rs) in
prodotto di primi positivi. Se p è uno qualunque dei fattori ⇒ p/ (t,rs)
Per definizione di MCD è (t,rs)/t e (t,rs)/rs. Si deduce allora che p/t e p/rs. Da quest’ultima relazione si
deduce che p/r oppure p/s perché se un numero primo divide un prodotto allora divide almeno uno dei
due fattori.
Per esempio supponiamo che p/r cioè r=pk. Poiché t è soluzione del precedente sistema di congruenze
si ha t≡ x (mod r) cioè t-x=hr. Da p/t abbiamo pc=t e sostituendo si ha x=t-hr=pc-hpk=p(c-hk) cioè p/x.
Poiché però p/r si ha che p/MCD(x,r). Ma MCD(x,r)=1 perché x∈R e quindi si ha una contraddizione
perché un numero primo non può essere un divisore di 1. Allora è vero che MCD(r,s)=1.
Similmente si procede se si suppone che p/s.
Abbiamo dimostrato allora che l’applicazione
f : R S →T
(x,y) →t = soluzione del sistema di congruenze …è ben definita perché effettivamente t ∈T.
Dimostriamo adesso che l’applicazione f è biunivoca.
L’applicazione f è surgettiva. ∀ t∈T ∃x ∈R e ∃ y ∈S tale che f(x,y)=t.
Se t∈T ⇒ 1≤ t ≤ rs e (t,rs)=1. Dividiamo t per r ed otteniamo: t=rq+x 0 ≤ x <r. Dividiamo t per s.
t=sq′+y 0 ≤ y<s. Vogliamo dimostrare che x ∈R e y ∈S.
E’ ovviamente x≠0 perché altrimenti r/t ⇒ (t,rs)≠1.
Quindi è 1 ≤ x <r. Dimostriamo che MCD(x,r)=1.
Ragioniamo per assurdo e supponiamo che (x,r)>1.
Possiamo scomporre allora (x,r) in fattori primi. Se p è uno di questi fattori si ha p/(x,r) ⇒ p/x e p/r
(se p divide il MCD tra x ed r a fortiori divide sia x sia r).
Si ha quindi r=pm e x=pn. Dalla divisione di t per r possiamo scrivere: t=rq+x=pmq+pn=p/mq+n) cioè p
è un divisore di t, p/t. Poiché p/r ⇒ p/rs. In conclusione p/(t,rs)=1. Contraddizione. Abbiamo dimostrato
allora che MCD(x,r)=1 e quindi x ∈R.
33
Corso di Matematica Discreta
Similmente si dimostra che y ∈S. Per concludere la nostra dimostrazione dobbiamo però dimostrare
che t=f(x,y) cioè t è soluzione del sistema di congruenze:
t ≡ x (mod r)
t ≡ y (mod s)
Ma per costruzione è t=rq+x e t=sq′+y cioè t-x=rq e t-y= sq′ cioè t ≡ x (mod r) e t ≡ y (mod s). cvd.
Dimostriamo adesso che f è iniettiva:
Se (x,y)≠(x′,y′)∈R S allora f (x,y)=t≠f(x′,y′ )=t′ .
Ragioniamo per assurdo e supponiamo che t=t′ . Ciò significa che t è soluzione di due sistemi:
t≡x (mod r) t≡x′ (mod r)
t≡y (mod s) t≡y′ (mod s)
Dalla proprietà transitiva delle congruenze si ottiene
x≡x′ (mod r) e y≡y′ (mod s). Supponiamo per esempio che x>x′ e y> y′ . E’ x-x′ =kr e y- y′ =hs.
Ma 1≤x ≤r e (x,r)=1 e 1≤ x′ ≤r e (x′ ,r)=1.
Allora x<r e x′ <r ⇒ x-x′ <r. L’unico multiplo di r strettamente minore di r è 0 ⇒ x=x′.
Analogamente si dimostra che y=y′ e quindi (x,y)=(x′,y′). Contraddizione.
Calcolo della funzione di Eulero ϕ(n) per ∀ n>1:
Fattorizziamo n in prodotto di potenze di numeri primi distinti (si fattorizza n in prodotto di primi e si
raccolgono i fattori uguali fra loro).
Se n=paqb…ki allora ϕ(n)=(pa-pa-1) (qb-qb-1)…(ki – ki-1)
es. ϕ(180)=(22325)=(22-21)(32-31)(51-50)=2*6*4=48
Dim:
Se indichiamo con r=pa e con s= qb…ki si ha MCD(r,s)=1.
Applicando il Teorema precedente si ha:
ϕ(n)= ϕ(rs)= ϕ(r)ϕ(s)= ϕ(pa ) ϕ(qb…ki ).
Iterando il procedimento si ha:
ϕ(n)=ϕ(pa ) ϕ(qb)… ϕ(ki ). Da un teorema precedentemente dimostrato abbiamo:
ϕ(n)=(pa-pa-1) (qb-qb-1)…(ki – ki-1). Cvd.
Congettura di Goldbach:
Il matematico Christian Goldbach (1690-1764) notò che 4=2+2, 6=3+3, 8=3+5, 10=5+5,
12=5+7,14=7+7, 16=5+11, ecc. Questo gli fece pensare che ogni numero pari strettamente maggiore
di 2 si può scrivere come somma di due numeri primi. In simboli
∀n ∈N : (n ≥4 and n pari)⇒(∃ p,q∈ N :p,q primi and n=p+q). Goldbach formulò questa congettura nel
1742 in una lettera ad Eulero (1701-1783). Da allora questa congettura ha affascinato generazioni di
matematici ma ad oggi non è stata ancora risolta. Non è noto cioè se questa congettura sia vera o falsa.
Teorema di Vinogradov:
E’ vero che “Ogni numero dispari sufficientemente grande si può scrivere come somma di tre numeri
primi. In simboli:
∃k∈N : ∀ n≥ k
( n dispari ⇒ ∃ p,q,r ∈N, p,q,r primi : n=p+q+r).
Questo teorema è stato dimostrato da Ivan Vinogradov (1891-1983) nel 1937.
L’ultimo teorema di Fermat:
34
Corso di Matematica Discreta
Nel 1637 Pierre de Fermat (1601-1665) affermò di possedere una prova molto semplice ed elegante
della seguente congettura:
∀n∈N+ (∃ x,y,z ∈N+: xn+yn=zn) ⇔ (n≤2) ma che lo spazio a margine del libro che stava leggendo non
era sufficiente a contenerla. Da allora i più brillanti matematici si sono cimentati senza successo.
Recentemente il matematico Andrew Wiles ha dimostrato questo famoso Teorema ma come Corollario
di una teoria molto più complessa.
Numeri di Fermat:
Un numero di Fermat è un intero della forma Fn=22^n+1 per n∈N. I primi cinque numeri di Fermat
sono: F0=3, F1=5, F2=17, F3=257, F4=65537, F5=4294967297. Nel 1640 Fermat suppose che Fn è
primo per ogni n. Questa congettura è però falsa. Infatti F5=4294967297= 641*6700417 e quindi F5
non è primo.
Numeri di Mersenne:
Un numero della forma Mp=2p-1 dove p è primo è chiamato numero di Mersenne in onore di Marin
Mersenne (1588-1648) che li introdusse. Se Mp è primo allora si chiama primo di Mersenne. M2=3, M3=7,
M5=31, e M7=127 sono primi di Mersenne. M11=23*89 non è primo. Per i numeri di Mersenne si ha la
seguente congettura (ancora non risolta):
∀k∈N ∃ p ∈N, p primo : (p≥ k e Mp primo di Mersenne)
Numeri perfetti:
Il matematico Leonardo Eulero (1701-1783) ha studiato i numeri perfetti ed ha trovato nel 1770 una
relazione notevole tra questi ed i primi di Mersenne. Un numero perfetto n∈N+ è un numero uguale
alla somma di tutti i suoi fattori (tranne se stesso). Il numero perfetto più piccolo è 6=3+2+1. Il
successivo è 28=14+7+4+2+1. E’ noto che:
∀n∈N+ ((∃ p ∈N+, p primo, (n=2p-1Mp) e (Mp primo di Mersenne)) ⇔ n è pari e perfetto. Euclide già aveva
dimostrato l’implicazione ⇒. Eulero ha dimostrato l’implicazione inversa ⇐.
Quindi 22-1M2=6, 23-1M3=28, 25-1M5=496, 27-1M7=8128. Congettura: esistono numeri perfetti dispari?
Calcolo combinatorio:
Vogliamo risolvere i seguenti problemi:
ƒ
ƒ
ƒ
Dati due insiemi A e B, con |A|=c(A)=k, |B|=c(B)=n calcolare il numero delle applicazioni di
A in B. Indichiamo questo numero con Fn,k. Questo numero viene detto numero delle disposizioni
con ripetizione di n elementi di classe k.
Dati due insiemi A e B, con |A|=c(A)=k, |B|=c(B)=n calcolare il numero delle applicazioni
iniettive di A in B. Indichiamo questo numero con Dn,k. Questo numero viene detto numero delle
disposizioni semplici di n elementi di classe k.
Dato un insieme B, con |B|=c(B)=n, e preso un intero k≤ n, trovare il numero dei sottoinsiemi
di B composti di k elementi. Indichiamo questo numero con Cn,k. Il numero Cn,k viene detto
numero delle combinazioni di n elementi di classe k.
Disposizioni con ripetizione:
Per calcolare Fn,k procediamo nel seguente modo:
per k=1 quanto è Fn,1? E’evidente che Fn,1=n. Infatti se A consta di un solo elemento il numero di
possibili applicazioni da A in B è uguale al numero degli elementi di B.
35
Corso di Matematica Discreta
Supponiamo adesso che A sia costituito da k>1 elementi e sia a un qualunque elemento di A.
Ripartiamo le applicazioni da A in B in classi, mettendo nella stessa classe le applicazioni che
coincidono in A-⎨a⎬. Dunque una stessa classe conterrà tanti elementi quante sono le applicazioni da
⎨a⎬→B cioè n mentre il numero delle classi è Fn,k-1. In totale è Fn,k =n Fn,k-1. Poiché è Fn,1=n allora Fn,k
=nk.
Spesso, oltre che con il simbolo Fn,k il numero di disposizioni con ripetizione di n elementi di classe k
si indica con il simbolo Drn,k. Se pensiamo ai k elementi di A come alle coordinate di una k-upla ogni
applicazione di A in B corrisponde biunivocamente ad una k-upla x di elementi di B cioè x∈Bk=B X B
… B. Quindi il numero di applicazioni da A in B corrisponde al numero di k-uple di Bk che è appunto
nk.
Esempio: Sia B = {a, b};
le disposizioni con ripetizione di classe 1 sono:(a), (b); quelle di classe 2 sono: (a, a), (a, b), (b, a), (b, b);
quelle di classe 3 sono: (a, a, a), (a, a, b), (a, b, a), (a, b, b), (b, a, a), (b, a, b), (b, b, a), (b, b, b); ecc.
Disposizioni semplici:
Notiamo che affinché esista un’applicazione iniettiva da A, con |A|=k, in B, con |B|=n deve essere
n≥k. E’ facile vedere che Dn,1=n. Supponiamo ora che A abbia k>1 elementi e sia a uno di essi.
Ripartiamo l’insieme delle applicazioni iniettive da A in B in classi, mettendo in una stessa classe le
applicazioni che coincidono in A-{a}. Una classe conterrà n-(k-1) elementi: tanti sono infatti i valori che
restano disponibili in B, non potendo un’applicazione iniettiva assumere nel punto a alcuno dei k-1
valori già assunti in A-{a}. Quindi Dn,k= Dn,k-1 (n- k+1). Essendo Dn,1=n si ha allora che Dn,k=n(n-1)(n2)…(n-k+1).
Come già visto per le disposizioni con ripetizione possiamo pensare alle applicazioni iniettive da A in B
come k-uple di elementi distinti di B.
Esempio: Sia B={a, b, c} ;
le disposizioni di classe 1 sono: (a), (b), (c) ; quelle di classe 2 sono: (a, b), (a, c), (b, a), (b, c),(c, a), (c, b) ;
quelle di classe 3 sono: (a, b, c),(a,c,b), (b, a, c), (b, c, a), (c, a, b), (c, b, a), ecc.
Permutazioni o sostituzioni:
Il numero di permutazioni semplici o sostituzioni è semplicemente il numero di disposizioni semplici di
classe n cioè Dn,n. Dalla formula precedente segue che Dn,n=n(n-1)(n-2)…(n-n+1)= n! Quindi il numero
delle permutazioni o sostituzioni è il numero delle applicazioni iniettive di un insieme in un altro di
cardinalità uguale. Queste applicazioni sono ovviamente anche surgettive e quindi il numero delle
permutazioni o sostituzioni è il numero delle biezioni di un insieme in un altro della stessa cardinalità.
Spesso però si prende B=A e si indicano le permutazioni (o sostituzioni) di classe n con il simbolo Pn (o
Sn). Esse quindi sono il numero di biiezioni di un insieme in sé stesso. Possiamo vedere una
permutazione come un ri-ordinamento di n elementi.
Esempio. Sia A= {1, 2, 3}.
Pn= {(1,2,3), (1,3,2), (2,1,3), (2,3,1), (3,1,2), (3,2,1)}
| Pn |=3!=3*2*1=6
Combinazioni:
Consideriamo l’insieme di tutte le applicazioni iniettive di un insieme A di k>0 elementi in un insieme
B di n elementi (k≤n). Introduciamo nell’insieme di queste applicazioni la seguente relazione di
equivalenza:
f≈g ⇔ f(A)=g(B)
36
Corso di Matematica Discreta
In altre parole, due applicazioni sono equivalenti se hanno la stessa immagine. Le possibili classi di
equivalenza sono tante quanti i sottoinsiemi di B costituiti da k elementi, cioè Cn,k. Ogni classe contiene
tanti elementi quante sono le applicazioni biiettive di un insieme di k elementi in un insieme di k
elementi.
Possiamo scrivere allora che:
Dn,k= Cn,k* Dk,k cioè Cn,k= Dn,k/ Dk,k =n(n-1)(n-2)…(n-k+1)/k!
Definiamo Cn,0=1 (esiste un solo insieme vuoto!). I numeri Cn,k vengono anche detti coefficienti
binomiali e vengono indicati con il simbolo: (nk)
Infatti se moltiplichiamo numeratore e denominatore dell’espressione precedente per (n-k)! si ottiene:
Cn,k= n(n-1)(n-2)…(n-k+1)(n-k)!/k!(n-k)!=n!/(n-k)!k!
Poiché è 0!=1 questa relazione vale anche per k=0 e k=n.
Coefficienti binomiali:
Abbiamo visto che (nk)= n!/(n-k)!k! ⇒ (nk)= (nn-k).
Questa relazione può essere dimostrata anche notando che vi è un’ovvia corrispondenza biunivoca tra
la famiglia dei sottoinsiemi di k elementi e quella dei sottoinsiemi di n-k elementi: quella che associa ad
ogni insieme il suo complementare.
Vale inoltre la seguente uguaglianza (nk)= (n-1k)+ (n-1k-1).
La dimostrazione di questa uguaglianza si può ottenere tramite semplici calcoli applicando la
definizione di coefficiente binomiale. E’ interessante però darne una dimostrazione di tipo
combinatorio. (nk)= Cn,k è il numero di sottoinsiemi di k elementi contenuti in un insieme B di n
elementi. Fissato un elemento a∈B i sottoinsiemi di k elementi di B si possono ripartire in quelli che
non contengono a ed in quelli che lo contengono: i primi sono in numero di (n-1k) (perché sono i
sottoinsiemi di B-⎨a⎬ costituiti da k elementi), gli altri sono in numero di (nn-k) (perché sono i
sottoinsiemi di k-1 elementi di n-1 elementi a cui aggiungiamo a).
Triangolo di Tartaglia o Pascal:
La formula precedente ci permette di calcolare i coefficienti binomiali tramite il cosiddetto Triangolo di
Tartaglia. Questa è una tabella di numeri disposti su righe e colonne: il numero (nk) viene scritto
all’incrocio della n-esima riga e della k-esima colonna (k≤n).
Si ha (n0) = (nn) =1. Per 0<k<n si ha che (nk) è somma di due numeri che si trovano nella riga
precedente: uno nella stessa colonna e l’altro nella colonna precedente.
1
1
1
1
1
2
1
2
3
4
5
1
3
6
10
1
4
10
1
5
1
k=0
k=1
k=2
k=3
k=4
k=5
n=1
n=2
n=3
n=4
n=5
Formula di Newton dello sviluppo del binomio:
Teorema (formula di Newton):
Siano a e b numeri reali. Allora vale l’uguaglianza:
n
(a+b)n= ∑ (nk)an-k bk
k =0
37
Corso di Matematica Discreta
Dim:
La potenza (a+b)n è il prodotto di n fattori tutti uguali a (a+b). Il suo sviluppo è una somma di monomi
tutti di grado n in a e b del tipo an-k bk con 0≤ k ≤n. Il monomio an-k bk compare tante volte quanti sono i
modi di fissare i k fattori da cui estrarre b (estraendo a dai rimanenti n-k, cioè (nk)).
Rappresentazione di problemi tramite grafi:
Problema:
Il signor Rossi e sua moglie Giulia danno ad una festa di compleanno a cui invitano 4 coppie sposate di
amici. Alcune coppie si stringono la mano (non ovviamente mariti e mogli). Alla fine della festa il signor
Rossi chiede a ciascuno a quante persone abbia stretto la mano e riceve nove risposte differenti. Quante
persone hanno stretto la mano alla signora Giulia?
Indichiamo ciascuna persona con un tondo. Le persone coinvolte sono 10 e quindi dobbiamo disegnare
10 tondi. Una di queste persone è il signor Rossi, indicato con una R.
R
Poiché ogni persona può stringere la mano ad al più 8 persone, ed il Signor Rossi riceve 9 risposte
differenti deduciamo che queste risposte siano: 0,1,2,3,4,5,6,7,8
R
38
Corso di Matematica Discreta
Etichettiamo ciascun tondo con uno dei numeri precedenti. Questo numero x identifica univocamente
la persona che ha scambiato x strette di mano.
R
Disegniamo un segmento tra due tondi se le persone che rappresentano si sono strette la mano.
Dobbiamo quindi disegnare 8 segmenti che partano dal tondo 8. Poiché nessun segmento può essere
incidente al tondo 0 il tondo 8 è collegato a tutti i tondi numerati da 1 a 7 ed al tondo R.
1
0
2
3
R
8
4
Poiché il sig./sig.ra 8 non può aver stretto la mano al suo sposo/a allora i tondi (8,0) rappresentano una
coppia. Il sig./sig.ra 7 deve essere collegato ad altri 7 tondi. E’ gia collegato ad 8 e quindi dobbiamo
collegarlo ad altri 6 tondi. Questi tondi non possono essere 0 ed 1 (collegato già ad 8) e quindi sono:
2,3,4,5,6,R. Poiché il sig./sig.ra 7 non può aver stretto la mano al suo sposo/a allora i tondi (7,1)
rappresentano una coppia.
39
Corso di Matematica Discreta
1
0
2
3
R
8
4
7
6
5
Procedendo come sopra si deduce che (6,2), (5,3) e (4,R) sono le altre coppie. La signora Giulia ha
quindi stretto la mano a quattro persone.
1
0
2
3
R
8
4
7
6
5
Problema dell’Assignment:
Supponiamo di avere n persone ed m “lavori” da svolgere. I lavori devono essere tutti eseguiti da una
sola persona ed una persona può svolgere al più un lavoro. Quindi deve essere n≥m. Ogni persona può
40
Corso di Matematica Discreta
fare ciascun lavoro e se la persona i esegue il lavoro j deve essere pagata cij euro. Il problema è quello di
scegliere m persone che facciano gli m lavori in modo da minimizzare il costo totale.
Il problema può essere rappresentato graficamente tramite n nodi (tondi) che rappresentano le n
persone ed m nodi che rappresentano gli m lavori.
n=6
m=4
Esiste un arco (segmento) che congiunge due nodi i e j se la persona i può eseguire il lavoro j. Per
ipotesi ogni persona può fare ciascun lavoro quindi ogni nodo che rappresenta una persona è collegato
tramite un arco ad un nodo che rappresenta un lavoro.
1
2
3
n=6
4
5
6
a
b
c
d
m=4
Etichettiamo ciascun arco (i,j) con il costo di assegnare il lavoratore i al lavoro j. Dobbiamo trovare
quindi 4 archi, tali che nessuno di essi sia incidente allo stesso nodo, e tali che il loro costo totale,
somma dei costi di arco, sia il minimo possibile.
41
Corso di Matematica Discreta
1
2
3
4
5
c1b
b
c4
c4c
b
n=6
a
:
c
d
m=4
Problema del commesso viaggiatore:
Un commesso viaggiatore deve visitare n città. Alcune città sono collegate direttamente da una linea
ferroviaria, altre no. Date comunque due città esiste però sempre un percorso ferroviario che li collega
(facendo tappa in una o più città intermedie). Possiamo rappresentare questo problema tramite un grafo
con n nodi, dove ogni nodo rappresenta una città. Esiste un arco tra il nodo i ed il nodo j se e
solamente se esiste una linea ferrovia diretta tra la città i e la città j. Etichettiamo ciascun arco (i,j) con cij
che rappresenta il numero di Km sulla linea diretta (i,j). Il problema del commesso viaggiatore è quello
di trovare un tour completo di costo minimo (numero di km percorsi) che, partendo da una data città,
visiti tutte le altre città esattamente una volta ritornando infine alla città di partenza.
Grafi:
Definizione di grafo (finito) (non diretto):
Un grafo G=(V,E) consiste di un insieme finito, non vuoto V=⎨1,2,…m⎬, i cui elementi sono chiamati
vertici o nodi del grafo, e di un insieme finito E= ⎨e1, e2,… en ⎬, i cui elementi sono sottoinsiemi di V di
cardinalità due, ek= ⎨i,j⎬ con i,j ∈V, detti archi del grafo.
I grafi, come già visto, si possono rappresentare nel piano R2 tramite punti e linee (segmenti).
Grafi planari e non planari:
Definizione di grafo planare:
Un grafo G=(V,E) si dice planare se può essere disegnato su un piano senza fare intersecare nessuno
dei suoi archi. In caso contrario il grafo si dice non-planare.
Esempi:
42
Corso di Matematica Discreta
6
1
2
1
2
4
3
4
3
5
4
1
2
3
Grafo Planare
Grafo Planare
Esempi (i più piccoli grafi non planari):
Grafo Non Planare
Grafo Non Planare
Grafi diretti o digrafi:
Definizione di digrafo (finito) (grafo diretto):
Un digrafo D=(V,A) consiste di un insieme finito, non vuoto V=⎨1,2,…m⎬, i cui elementi sono
chiamati vertici o nodi del digrafo, e di un insieme finito A = ⎨e1, e2,… en ⎬, i cui elementi sono coppie
ordinate di elementi di V, ek= (i,j) con i,j ∈V, detti archi del digrafo. Possiamo rappresentare un arco di
un digrafo tramite una freccia orientata da i verso j.
Es.
2
1
3
4
5
Grafi:
43
Corso di Matematica Discreta
Definizione:
Due nodi v, u di un grafo G=(V,E) (digrafo D=(V,A)) si dicono adiacenti se l’arco ⎨v,u⎬∈E ( (v,u) ∈A).
Dato un digrafo D=(V,A) possiamo sempre costruire un grafo, G=(V,E), detto sottostante di G,
sostituendo ogni freccia con un segmento ed eliminando i segmenti duplicati. Quindi E=⎨ e= ⎨u,v⎬:
(u,v) ∈A oppure (v,u) ∈A ⎬. Quando è chiaro dal contesto possiamo sostituire la notazione e= ⎨u,v⎬ di
arco di un grafo con la notazione e= (u,v)
Sottografi:
Definizione di sottografo:
Dato un grafo G=(V,E), si chiama sottografo di G, un grafo G′=(V ′,E ′) tale che V′⊆V ed E ′⊆ E(V ′)
dove E(V′)=⎨ ⎨ i,j⎬ ∈E / i,j ∈ V ′⎬ cioè è l’insieme di tutti gli archi del grafo G con entrambi gli
estremi in V ′.
2
1
4
3
2
1
5
3
Sottografi di copertura (spanning):
Definizione di spanning subgraph:
Sia G=(V,E) un grafo. Un sottografo G′=(V′, E′) si dice sottografo di copertura (o spanning subgraph)
se V= V′.
Definizione di sottografo indotto:
Sia G=(V,E) un grafo. Un sottografo G′=(V′, E′) si dice sottografo indotto da V′ se E′=E(V′) dove
E(V ′)=⎨ (i,j) ∈E / i,j ∈ V ′⎬
Isomorfismi tra grafi:
Problema: In che senso due grafi possono essere considerati uguali?
La cosa importante riguardo ai grafi non è certamente il nome dei nodi o la loro rappresentazione
grafica. Potremmo dire che la proprietà caratteristica di un grafo è il modo in cui i vertici sono collegati
dagli archi.
Definizione di isomorfismo tra grafi:
Due grafi G1=(V1,E1) e G1=(V2,E2) si dicono isomorfi se esiste una applicazione biunivoca α dall’insieme
dei vertici V1 nell’insieme dei vertici V2 tale che ⎨α (u),α (v)⎬ è un arco di E2 se e solamente se ⎨u,v⎬ è
un arco di E1. La biezione α è detta isomorfismo.
44
Corso di Matematica Discreta
G1=(V1=⎨a,b,c,d⎬,E1= ⎨e1=⎨a,b⎬, e2=⎨a,d⎬, e3=⎨b,c⎬, e4=⎨b,d⎬, e5=⎨c,d⎬ ⎬)
G2=(V2=⎨t,u,v,w⎬,E1= ⎨e1=⎨t,u⎬, e2=⎨t,v⎬, e3=⎨u,v⎬, e4=⎨u,w⎬, e5=⎨v,w⎬ ⎬)
G1 e G2 sono isomorfi. Infatti α: V1→ V2 tale che α(a)=t, α(b)=v, α(c)=w, α(d)=u è un isomorfismo.
t
a
b
w
d
c
G1
v
G2
u
Per dimostrare che due grafi non sono isomorfi è necessario dimostrare che non può esistere una
biezione tra l’insieme dei vertici che conserva la relazione tra gli archi (porta archi in archi). E’ ovvio
che se due grafi non hanno lo stesso numero di nodi non possiamo costruire una biezione tra gli
insiemi dei nodi dei due grafi. E se due grafi hanno lo stesso numero di nodi ma non lo stesso numero
di archi non possiamo costruire un isomorfismo tra i grafi. Infine anche se due grafi hanno lo stesso
numero di nodi e di archi non è detto che siano isomorfi.
a
1
e
b
d
c
G1
5
2
4
3
G2
I grafi G1 e G2 hanno lo stesso numero di nodi e di archi ma non sono isomorfi. Infatti se lo fossero
ogni sottografo di G1 dovrebbe essere isomorfo ad un sottografo di G2. Ma al sottografo H=(V′=
⎨a,b,d,e⎬, E′= ⎨(ab),(ad),(ae),(bd ),( be),( de)⎬ di G1 non corrisponde nessun sottografo in G2. Tutti i
sottografi di G2 formati da 4 nodi hanno infatti meno di 6 archi.
Grado di un nodo:
Definizione di grado di un nodo:
45
Corso di Matematica Discreta
Dato un grafo G=(V,E) dicesi grado di un nodo v ∈V, e si indica con il simbolo δ(v), il numero di archi
ad esso incidenti, cioè δ(v)=|Iv| dove Iv=⎨e∈E : v ∈ e⎬.
Dato un digrafo D=(V,A) indichiamo con δ+(v) il numero di archi diretti di A che vanno da v verso un
altro nodo w di V, cioè δ+(v)=| ⎨ w : (v,w) ∈A ⎬|. Similmente indichiamo con δ-(v) il numero di archi
diretti di A che vanno da un qualunque w in V verso il nodo v, cioè δ-(v)=| ⎨ w : (w,v) ∈A ⎬|. Si ha che
δ(v)= δ+(v) + δ-(v)
Teorema:
La somma dei gradi di ciascun nodo in un grafo G=(V,E) è uguale al doppio del numero dei vertici cioè
∑
v∈V
δ(v)=2|E|.
Definizione:
Un nodo v di un grafo G si dice dispari se il suo grado δ(v) è dispari, pari altrimenti.
Possiamo partizionare l’insieme dei nodi V tramite l’insieme l’insieme dei nodi dispari Vo e l’insieme dei
nodi pari Ve cioè V= Vo ∪Vo dove Vo =⎨v∈V: δ(v) è dispari⎬ e Ve =⎨v∈V: δ(v) è pari⎬.
Teorema:
In ogni grafo G=(V,E) il numero di nodi dispari è pari.
Dim:
Dal teorema precedente sappiamo che
E’
∑
v∈V
quindi
δ(v)=
∑
v∈Vo
∑
v∈V
δ(v)=2|E|.
δ(v)+ ∑ δ(v)= 2|E|. La somma di un numero qualunque di numeri pari è pari e
∑ δ(v) è pari. Si deduce allora che ∑ δ(v)= 2|E|- ∑ δ(v)
v∈Ve
v∈Ve
v∈Vo
v∈Ve
è pari.
L’unico modo di ottenere un numero pari dalla somma di numeri dispari è se il numero degli addendi è
pari. Cvd.
Definizione di grafo regolare:
Un grafo in cui ogni nodo ha lo stesso grado r è detto regolar di grado r o r-valente.
Da un teorema precedente si deduce che se G=(V,E) è un grafo regolare di grado r allora |V|=2|E|/r
Definizione di grafo completo:
Un grafo G=(V,E) si dice completo se l’insieme E contiene tutti i possibili archi cioè se ogni nodo è
connesso direttamente ad ogni altro nodo.
Corollario 1: Ogni grafo di n nodi completo è regolare di grado n-1
Corollario 2: Se due grafi G1=(V1 E1) e G2=(V2 E2) sono isomorfi (tramite l’isomorfismo α) allora δ(u)=
δ(α (u)) ∀ u∈ V1
Rappresentazione di un grafo (digrafo):
46
Corso di Matematica Discreta
Lista di adiacenza:
Dato un grafo G=(V,E) (digrafo D) possiamo rappresentarlo tramite una lista di adiacenza dove ogni
vertice v è un elemento di una lista in cui ciascun elemento v a sua volta punta ad una lista formata da
vertici ad esso adiacenti.
Es.
a b
f
e
d
a
b
c
c
b a b
e c d
e
d e
f
c
e
f
d
a
b
d
Matrici:
Definizione:
Se m ed n sono interi positivi chiamiamo matrice ad m righe ed a n colonne ad elementi in ℜ (o N, Z,
ecc.) un insieme di mn numeri aij∈ℜ (i=1…m; j=1…n) rappresentato da una tabella rettangolare
a11
M=
a12
…
a1n
a21
…
a22
…
…
…
a2n
…
am1
am2
…
amn
L’indice i è detto
indice di riga, l’indice j
è detto indice di colonna
Rappresentazione di un grafo:
Matrice di incidenza nodo-arco:
Dato un grafo G=(V,E), con |V|=m e |E|=n, possiamo rappresentarlo tramite una matrice mn, M,
detta matrice di incidenza nodo-arco, ponendo aij = 1 se l’arco ej è incidente al nodo i aij = 0 altrimenti.
Quindi ogni colonna della matrice M corrisponde ad un arco del grafo ed ogni riga della matrice M
corrisponde ad un nodo del grafo. La matrice è a valori 0-1 ed ogni colonna contiene esattamente due
1. La somma degli 1 in ogni riga è uguale al grado del nodo ad essa corrispondente.
47
Corso di Matematica Discreta
Rappresentazione di un grafo (digrafo):
Matrice di adiacenza:
Dato un grafo (digrafo) G=(V,E), con |V|=m e |E|=n,possiamo rappresentarlo tramite una matrice
mm, M, detta matrice di adiacenza, ponendo aij = 1 se l’arco (i j) è in E, aij = 0 altrimenti.
La matrice di adiacenza di un grafo è ad elementi 0,1, è simmetrica (cioè aij = aji ) ed ha diagonale nulla
(cioè aii=0 ).
Rappresentazione di un digrafo:
Matrice di Incidenza nodo-arco:
Dato un digrafo D=(V,A), con |V|=m e |A|=n, possiamo rappresentarlo tramite una matrice mn,
detta matrice di incidenza nodo-arco, ponendo aij = 1 se l’arco ej=(k,i) per qualche nodo k≠ i, aij = -1
l’arco ej=(i,k) per qualche nodo k≠ i, aij =0 altrimenti.
Ogni colonna della matrice M corrisponde ad un arco del grafo ed ogni riga della matrice
corrisponde ad un nodo del grafo.
La matrice è a valori 0,1 e –1 ed ogni colonna contiene esattamente due valori non nulli, +1 e
cosicché la somma degli elementi in ciascuna colonna è zero.
M,
se
M
–1
Passeggiata (walk) in grafo (digrafo):
Definizione di passeggiata (walk):
Una passeggiata (diretta) p in un grafo (digrafo) G=(V,E) è una sequenza di nodi v1… vk adiacenti cioè
tale che (vi vi+1)∈E 1≤i ≤k. Il nodo v1 è detto nodo origine della passeggiata ed il nodo vk è detto nodo
destinazione della passeggiata. I nodi vi con 1<i<k sono detti nodi intermedi della passeggiata. Possiamo
rappresentare una passeggiata anche tramite una sequenza di archi e1, e2,…ek-1 dove ei=(vi vi+1) 1≤i ≤k-1.
La lunghezza di una passeggiata è il numero dei suoi archi (nel nostro caso k-1).
Cammino (path) in grafo (digrafo):
Definizione di cammino (path):
Una cammino (diretto) p in un grafo (digrafo) G=(V,E) è una passeggiata (sequenza di nodi v1… vk
adiacenti cioè tale che (vi vi+1)∈E 1≤i ≤k) in cui nessun nodo viene ripetuto. Il nodo v1 è detto nodo
origine del cammino ed il nodo vk è detto nodo destinazione del cammino. I nodi vi con 1<i<k sono detti
nodi intermedi del cammino. Possiamo rappresentare un cammino anche tramite una sequenza di archi e1,
e2,…ek-1 dove ei=(vi vi+1) 1≤i ≤k-1. La lunghezza di un cammino è il numero dei suoi archi (nel nostro
caso k-1).
Circuito (loop) e ciclo (cycle) in un grafo (digrafo):
Definizione di circuito (loop):
Un circuito (diretto) (loop) c in un grafo (digrafo) G=(V,E) è una passeggiata (sequenza di nodi v1… vk
adiacenti cioè tale che (vi vi+1)∈E 1≤i ≤k) chiusa cioè dove v1 =vk. La lunghezza di un circuito è il numero
dei suoi archi.
Definizione di ciclo (cycle):
48
Corso di Matematica Discreta
Un ciclo (diretto) (cycle) c in un grafo (digrafo) G=(V,E) è un cammino (path) chiuso cioè dove v1 =vk e
k≥3. La lunghezza di un ciclo è il numero dei suoi archi.
Grafi aciclici:
Definizione di grafo aciclico:
Un grafo G=(V,E) è detto aciclico se non possiede cicli.
Es.
1
1
4
4
5
5
2
3
2
3
(1,3,4,5) è un cammino di lunghezza 3
(13541) è un ciclo di lunghezza 4
(1235432) è una passeggiata di lunghezza 6
(12354321) è un circuito di lunghezza 7
Walks and paths:
Teorema:
Data una passeggiata dal nodo v1 al nodo vk possiamo sempre costruire un cammino dal nodo v1 al nodo
vk. Similmente dato un circuito possiamo sempre costruire un ciclo.
Dim:
Sia q una passeggiata dal nodo v1 al nodo vk. Se q non possiede nodi ripetuti abbiamo la tesi: q è un
cammino da v1 a vk. Altrimenti, consideriamo una qualunque sottosequenza di nodi vi vi+1…vl =vi.
Eliminando tutti i nodi da vi+1…vl =vi otteniamo una passeggiata da v1 a vk di lunghezza minore.
Eliminando tutte queste sottosequenze otteniamo un cammino da v1 a vk. Similmente si procede nel
caso dei circuiti.
Componenti connesse di un grafo:
Dato un grafo G=(V,E), definiamo la seguente relazione ≈ tra i suoi vertici. Dati u,v∈V diremo che u ≈
v ⇔ esiste un cammino (path) con nodo origine u e nodo destinazione v. Si dimostra facilmente che la
relazione ≈ è una relazione di equivalenza (esercizio) e quindi l’insieme dei nodi V risulta partizionato in
un insieme di classi. In una stessa classe ci sono tutti i nodi che sono collegati da un cammino.
Definizione di componente connessa:
Sia G=(V,E) un grafo e sia V=V1∪ V2∪… Vr la partizione indotta da ≈. Sia Ei⊆ E l’insieme degli archi
con entrambi gli estremi in Vi. E’ ovvio che E= E1∪ E2∪… Er. I grafi Gi =(Vi,Ei) si chiamano
componenti connesse del grafo G.
49
Corso di Matematica Discreta
Grafi connessi:
Definizione di grafo connesso:
Un grafo si dice connesso se ha una sola componente connessa cioè se ∀ u,v∈V ∃ p=u,w1,…wk,v,
cammino da u a v.
Definizione di digrafo connesso:
Un digrafo D=(V,E) si dice fortemente connesso se:
∀u,v∈V esiste un cammino diretto da u a v.
Un digrafo D=(V,E) si dice debolmente connesso se il suo grafo sottostante è connesso
Grafi k-connessi:
Definizione di grafo k-connesso (rispetto agli archi):
Un grafo si dice k-connesso (rispetto agli archi) se ∀ u,v∈V esistono k cammini ad archi disgiunti tra
u,v.Dalla definizione si deduce che per disconnettere il grafo è necessario rimuovere almeno k archi.
Definizione di grafo k-connesso (rispetto ai nodi):
Un grafo si dice k-connesso (rispetto ai nodi) se ∀ u,v∈V esistono k cammini a nodi disgiunti tra u,v.
Dalla definizione si deduce che per disconnettere il grafo è necessario rimuovere almeno k nodi.
Teorema:
Un grafo k-connesso rispetto ai nodi è anche k-connesso rispetto agli archi. Il viceversa invece non è
vero.
Dim: Esercizio.
Grafo 2-connesso
Foresta (forest) e albero (tree):
50
Corso di Matematica Discreta
Definizione di foresta:
Una foresta è un grafo aciclico.
Definizione di albero:
Un albero è una foresta connessa cioè è un grafo connesso ed aciclico. Quindi una foresta è una
insieme di alberi.
Definizione:
Un digrafo è chiamato un albero se il grafo sottostante è un albero.
Definizione di branching:
Un albero è chiamato branching se esiste un nodo, detto radice,tale che esiste un cammino diretto dalla
radice ad ogni altro nodo.
Definizione di foglia:
Una foglia di un grafo è un nodo di grado 1.
Spanning tree:
Definizione di spanning tree (albero di copertura):
Dato un grafo G=(V,E), uno spanning tree è un albero che include tutti i nodi del grafo, cioè è un
sottografo di copertura connesso ed aciclico.
Es.
Grafo
Spanning tree
Definizione di spanning forest (foresta di copertura):
Dato un grafo G=(V,E), una spanning forest è un sottografo di copertura privo di cicli (aciclico).
Alberi
Proprietà 1:
51
Corso di Matematica Discreta
Sia T un albero proprio con m (≥2) nodi e sia (i,j) un suo arco. Eliminando l’arco (i,j) ma lasciando i
nodi i e j otteniamo due alberi disconnessi T1 e T2.
Dim:
Se eliminiamo un arco qualunque (i,j) disconnettiamo l’albero in due componenti, una che contiene i e
l’altra che contiene j. Se così non fosse esisterebbe un ciclo nel grafo che quindi non sarebbe un albero.
Le 2 componenti così ottenute sono alberi cioè sono connesse e acicliche perché lo è T.
Proprietà 2:
Sia T un albero proprio con m (≥2) nodi. Allora possiede almeno 2 foglie.
Dim:
La dimostrazione è per induzione. L’affermazione è vera per un grafo con due nodi. Supponiamo che
sia vera per tutti gli alberi con al più m-1 nodi e dimostriamo che è vera per un albero con m ≥3 nodi.
Scegliamo quindi dal nostro albero T un qualunque arco (i,j). Dalla proprietà 1 sappiamo che
eliminando quest’arco (ma lasciando i nodi i e j) otteniamo 2 alberi. Se uno dei due alberi ha un solo
nodo allora gli alberi T1 e T2 hanno almeno 3 foglie. Rimettendo l’arco (i,j) perdiamo al più una foglia.
Quindi T ha almeno due foglie. Se invece gli alberi T1 e T2 hanno almeno due nodi, dall’ipotesi induttiva
T1 e T2 hanno almeno 4 foglie. Rimettendo l’arco (i,j) perdiamo al più due foglie. Quindi T ha almeno
due foglie.
Proprietà 3:
Un albero con m nodi ha m-1 archi.
Dim:
Per induzione. L’affermazione è ovviamente vera per m=1 e m=2. Supponiamo che sia vera per gli
alberi con m-1 nodi e dimostriamolo per gli alberi con m nodi. Dalla proprietà 2 sappiamo che T ha
almeno 2 foglie. Sia i questa foglia. Disconnettiamo l’unico arco incidente ad i. Otteniamo 2 alberi, uno
con esattamente un nodo e l’altro con esattamente m-1 nodi. Dall’ipotesi induttiva questo ultimo albero
ha m-2 archi. Se aggiungiamo nuovamente l’arco (ki) otteniamo che l’albero T ha esattamente m-1archi.
Caratterizzazioni equivalenti degli alberi:
a.
b.
c.
d.
e.
Il grafo T è connesso ed aciclico;
Il grafo T è connesso ed ha m-1 archi;
Il grafo T ha m-1 archi ed è aciclico:
Il grafo T è connesso ma disconnettendo qualunque arco si ottengono 2 componenti connesse;
Il grafo T è aciclico ma aggiungendo un qualunque arco nuovo a T si ottiene un grafo con
esattamente un ciclo;
f. Il grafo T possiede un unico cammino che collega una qualunque coppia di nodi.
a. ⇒ b. ⇒ c. ⇒ d. ⇒ e. ⇒ f. ⇒ a.
a. ⇒ b. (per la proprietà 3)
b. ⇒ c. Ragioniamo per assurdo e supponiamo che T abbia un ciclo. Eliminando un arco dal ciclo
otteniamo un grafo che è ancora connesso ma ha m-2 archi. Continuiamo così fino a quando non ci
sono più cicli nel grafo. Quindi otteniamo un grafo connesso e aciclico ma che ha strettamente meno
di m-1 archi, contraddicendo la proprietà 3. Quindi T non può avere cicli.
c. ⇒ d. Ragioniamo per assurdo e supponiamo che il grafo T sia sconnesso. Siano r ≥2 le sue
componenti connesse. Se colleghiamo tramite un arco la prima componente alla seconda, la seconda
52
Corso di Matematica Discreta
alla terza e così via otteniamo un grafo connesso ed aciclico che ha più di m-1 archi contraddicendo la
proprietà 3. Quindi T è connesso. Abbiamo quindi un grafo connesso ed aciclico e dalla proprietà 1
segue che eliminando un qualunque arco otteniamo due alberi, cioè due componenti connesse.
d. ⇒ e. T non può possedere cicli perché se ne avesse uno, eliminando qualunque suo arco otterremmo
ancora un grafo connesso contraddicendo l’ipotesi. Inoltre comunque si aggiunga un arco otteniamo un
ciclo perché il grafo è connesso (ed esattamente uno perché è aciclico).
e. ⇒ f. Dalla proprietà e. comunque si aggiunga un arco (i,j) si ottiene un ciclo (che contiene (i,j)).
Quindi deve esistere in T un cammino tra i e j che non contenga l’arco (i,j). Poiché la proprietà vale per
qualunque i e per qualunque j si ha che tra ogni coppia di nodi esiste un cammino. Questo cammino è
unico perché per ipotesi aggiungendo un qualunque arco otteniamo esattamente un ciclo.
f. ⇒ e. Per definizione un grafo è connesso se comunque si prendono due nodi esiste un cammino che
li unisce. T inoltre non può avere cicli perché se ne avesse uno esisterebbero due cammini distinti tra
due nodi qualunque di questo ciclo, contraddicendo l’ipotesi.
Alberi radicati (rooted tree):
Definizione di albero radicato:
Dato un albero, se un vertice viene in qualche modo distinto dagli altri, si parla di albero radicato e questo
vertice distinto dagli altri si chiama radice.
Dato un albero radicato, si possono sistemare i suoi nodi in livelli. Diremo che la radice è a livello 0 ed i
vicini (nodi adiacenti) della radice sono a livello 1. Per ogni k >1 il livello k contiene tutti i vicini del livello
k-1eccetto quei nodi già assegnati al livello k-2.
Es.
r
r
b
a
e
c
f
r
h
g
d
c
b
a
i
g
h
d
e
i
f
Definizione di foglia in un albero radicato:
Un nodo in un albero radicato si dice foglia se se è al livello i e non ci sono suoi vicini a livello i+1.
Definizione di nodo interno in un albero radicato:
53
Corso di Matematica Discreta
Un nodo che non sia una foglia o non sia la radice è detto nodo interno.
Definizione di altezza di un albero radicato:
L’altezza di un albero radicato è il valore massimo di k per cui il livello k non è vuoto.
Proprietà degli alberi radicati:
Poiché un albero è per definizione connesso ogni nodo è contenuto in un livello. Poiché un albero non
ha cicli ogni nodo v a livello i (i>0) è adiacente esattamente ad un nodo u del livello i-1. Per enfatizzare
questa proprietà si dice che u è il padre (father) di v e che v è il figlio (son) di u. Ogni nodo (eccetto la
radice) ha un solo padre ma un padre può avere più di un figlio. Ovviamente un nodo è una foglia se e
solamente se non ha figli.
Alberi m-ari (m-ary tree):
Proprietà degli alberi m-ari:
Un albero radicato si dice m-ario se ogni padre ha al più (o esattamente) m-figli. Se m=2 si parla di alberi
binari, se m=3 si parla di alberi ternari.
r
r
Grafi (digrafi) pesati:
Definizione di grafo (digrafo) pesato:
Un grafo (digrafo) G=(V,E) si dice pesato se è data un’applicazione c:E→ℜ oppure c:V→ℜ.
I pesi (costi, valori) possono essere associati agli archi, ai nodi od ad entrambi. Nella rappresentazione
grafica di un grafo, il peso di un arco o di un nodo si scrive vicino all’arco od al nodo.
Cammino minimo e cammino massimo:
Definizione di costo di un cammino:
Dato un grafo (digrafo) G=(V,E) pesato, con c:E→ℜ il costo di un cammino p è la somma dei costi
associati ai suoi archi cioè se p= e1, e2,…ek-1 allora il costo del cammino è c(e1)+c(e2)+…+c(ek-1).
Definizione di cammino minimo e cammino massimo:
54
Corso di Matematica Discreta
Dato un grafo (digrafo) G=(V,E) pesato, con c:E→ℜ e dati due nodi i e j si dice cammino di costo minimo
(shortest path) tra i e j quel cammino (se esiste) tra i e j che ha costo, rispetto alla funzione c, minimo. Si
dice invece cammino di costo massimo (longest path) tra i e j quel cammino (se esiste) tra i e j che ha costo,
rispetto alla funzione c, massimo. Se la funzione c:E→ℜ è costante (in particolare uguale ad 1) il
cammino di costo minimo coincide con il cammino con il minor numero di archi mentre il cammino di
costo massimo coincide con il cammino con il maggior numero di archi. Se un grafo (digrafo) è
connesso esiste sempre il cammino minimo ed il cammino massimo.
Cammino Hamiltoniano e ciclo Hamiltoniamo:
Definizione di cammino Hamiltoniano:
Dato un grafo G=(V,E) un cammino Hamiltoniano (Hamiltonian path) è un cammino che visita ogni
vertice esattamente una volta.
Definizione di ciclo Hamiltoniano:
Dato un grafo G=(V,E) un ciclo Hamiltoniano (Hamiltonian path) è un cammino Hamiltoniano che
ritorna al nodo di partenza. Un grafo che contiene un ciclo Hamiltoniano è chiamato un grafo
Hamiltoniano. Es. Un grafo completo con più di due vertici è Hamiltoniano.
Grafi bipartiti:
Definizione di grafo bipartito:
Un grafo G=(V,E) si dice bipartito se l’insieme dei vertici può essere partizionato in due insiemi
disgiunti, V1 e V2 , V= V1 ∪ V2 e V1 ∩ V2 , tali che ogni arco in E ha un vertice in V1 ed un vertice in
V2. In genere un grafo bipartito si indica con G=(V1 ∪ V2 E).
Teorema:
Sia G=(V1 ∪ V2 E) un grafo bipartito. Allora
∑ δ (u ) = ∑ δ (v) =| E |
u∈V1
v∈V2
Dim: Esercizio
Teorema:
Un grafo G=(V,E) è bipartito se e solamente se non contiene cicli di lunghezza dispari.
Dim:
⇒ Supponiamo che il grafo sia bipartito. Possiamo partizionare l’insieme dei suoi vertici in due
sottoinsiemi disgiunti V1 e V2 . Coloriamo i nodi in V1 di rosso ed i nodi in V2 di giallo. Poiché il grafo è
bipartito un qualunque arco del grafo avrà un estremo rosso e l’altro giallo. Ragioniamo per assurdo e
supponiamo che esista un ciclo di lunghezza dispari cioè v1, v2… vk con k dispari e k ≥3.
v1 apparterrà o a V1 o a V2. Senza perdita di generalità supponiamo che appartenga a V1 cioè sia un nodo
rosso. Allora v2 sarà un nodo giallo, v3 sarà un nodo rosso ecc. In generale i nodi vi con i dispari saranno
rossi ed i nodi vi con i pari saranno gialli. In particolare vk e v1 sono rossi. Ma essendo un ciclo esiste
l’arco (vk ,v1 ) che unisce due nodi rossi e questo contraddice il fatto che il grafo è bipartito.
⇐ Supponiamo che G=(V,E) sia un grafo senza cicli di lunghezza dispari e dimostriamo che è
bipartito cioè possiamo partizionare l’insieme dei suoi vertici V in due sottoinsiemi disgiunti V1 e V2
55
Corso di Matematica Discreta
tale che ogni arco del grafo abbia un estremo in V1 e l’altro in V2. Sia u un qualunque nodo del grafo e
coloriamolo di rosso. Sia u la radice di un albero T. Mettiamo a livello 1 tutti i vicini di u e coloriamoli di
giallo. In generale a livello i+1 poniamo tutti i vicini dei nodi a livello i che non sono a livello i-1 e li
coloriamo di un colore diverso rispetto a quelli del livello i. Alla fine di questo processo avremo un
albero bicolore, rosso e giallo, dove i livelli pari sono di colore rosso ed i livelli dispari di colore giallo.
Poniamo in V1 tutti i nodi rossi ed in V2 tutti i nodi gialli.
Vogliamo dimostrare che ogni arco del grafo va da un nodo in V1ad un nodo in V2 cioè da un nodo
rosso ad uno giallo. Ragioniamo per assurdo e supponiamo che esista un arco tra due nodi in V1 oppure
tra due nodi in V2. Per esempio tra due nodi u e v in V1 (l’altro caso è analogo) cioè tra due nodi rossi. I
nodi rossi sono a livello pari. Sia quindi u a livello p e v a livello q, con p e q pari (eventualmente uguali).
Per costruzione esiste un cammino dalla radice r a u di lunghezza p ed un cammino dalla radice r a v di
lunghezza q. Se aggiungiamo l’arco (uv) otteniamo un ciclo di lunghezza p+q+1 cioè un ciclo di
lunghezza dispari. Contraddizione.
Algoritmi di ricerca su grafi:
Supponiamo di voler visitare i nodi di un grafo G=(V,E). Esistono fondamentalmente due strategie per
fare ciò: la prima è andare sempre avanti, cioè di visitare un nodo, poi un suo vicino, e così via; la
seconda è quella di visitare un nodo, poi tutti i suoi vicini e così di seguito.
La prima strategia è nota come DFS cioè Depth-First Search mentre la seconda è nota come BFS cioè
Breadth-First search.
Depth-First Search o DFS:
Sia dato un grafo G=(V,E) e sia r∈V un suo nodo qualunque. Costruiamo un albero radicato T, con
radice r nel seguente modo: poniamo sulla radice due etichette: visitato e adesso. Sia w un qualunque
vicino (cioè esiste un arco…) del nodo p con etichetta adesso che non abbia ancora ricevuto alcuna
etichetta. Aggiungiamo il nodo w all’albero T collegando il nodo w al nodo p con etichetta adesso.
Cancelliamo l’etichetta adesso dal nodo p ed aggiungiamola al nodo w che riceverà anche l’etichetta di
visitato. Se w non esiste torniamo indietro (backtracking) sul cammino (pr) fino a quando non troviamo il
primo nodo visitato che abbia un vicino q non visitato. Questo nuovo nodo q verrà aggiunto all’albero
con le etichette di visitato e adesso. L’etichetta adesso viene cancellata dal nodo p. Continuiamo fino a
quando non abbiamo costruito lo spanning tree della componente connessa del grafo che contiene il
nodo r. L’algoritmo si ferma quando ci ritroviamo nuovamente alla radice che ha tutti i suoi vicini
etichettati.
Posiamo facilmente implementare DFS tramite uno stack. Possiamo pensare ad uno stack come ad una
pila di piatti: un piatto può essere aggiunto solo in cima alla pila e può essere tolto solo se è in cima alla
pila. Quindi possiamo aggiungere nodi al nostro stack (lista) , etichettandoli come visitati. Il nodo adesso è
quello che sta in cima allo stack. Se non possiamo aggiungere più nodi allo stack eliminiamo quello che
sta in cima. L’algoritmo si ferma quando lo stack è vuoto.
Stack:= ⎨r⎬;
r-etichetta-1:=visitato;
While Stack ≠ ∅ do
⎨x:=top (stack);
if ((y,x)∈E) and (y-etichetta-1:=non visitato)
add y to stack ( quindi top (stack):= y);
else (remove x from stack)
⎬
Teorema:
56
Corso di Matematica Discreta
Sia G=(V,E) un grafo e r un suo qualunque nodo. Sia T il sottografo costruito tramite DFS. Allora T è
uno spanning Tree della componente connessa di G che contiene r, Co[r].
Dim:
Da come abbiamo costruito T si deduce immediatamente che è un albero, essendo connesso
(comunque si scelgono due nodi a e b in T esiste un cammino (ra) ed un cammino (rb). Unendo questi
due cammini ottengo un cammino (ab) ) ed è aciclico (perché non aggiungo mai un arco tra due nodi
visitati). Per dimostrare che T è uno spanning tree di Co[r], sia w un qualunque nodo di Co[r] e
dimostriamo che w è in T.
Se w∈ Co[r] ⇒∃ p:=(r= v0v1…. vk w). Sia i il più piccolo indice tale che vi-1∈T e vi∉T. Per definizione di
cammino esiste l’arco (vi-1 vi) ∈E. Se vi-1∈T allora sarà etichettato ad un certo punto dell’algoritmo. Ma
se lo è lo saranno tutti i suoi vicini (perché non possiamo fare backtraching da un nodo x al padre z
fino a quando non abbiamo visitato tutti i figli di x). Quindi vi∈T e i non esiste. Allora w∈T. cvd.
Es.
a
e
0 a
c
1
d
b
2
a
b
d
3
c
e
4
b
c
e
d
Breadth-First Search o BFS:
Sia dato un grafo G=(V,E) e sia r∈V un suo nodo qualunque. Costruiamo un albero radicato T, con
radice r nel seguente modo: poniamo a livello 1 tutti i vicini della radice. Supponiamo di numerare i
nodi dell’albero T nell’ordine in cui sono inseriti. Supponiamo di avere k nodi a livello l. Per ogni nodo
del livello l-esimo poniamo a livello l+1 tutti i suoi vicini che non sono già a livello l-1. Continuiamo in
questo modo fino a quando non possiamo aggiungere più nodi all’albero. Nella BFS non c’è quindi
Backtrack.
Teorema:
Sia dato un grafo G=(V,E) e sia r un suo qualunque nodo. Il grafo T ottenuto tramite BFS è uno
spanning tree della componente connessa del grafo G che contiene r.
57
Corso di Matematica Discreta
Dim: Esercizio.
Mentre la DFS può essere paragonata ad uno stack, la BFS può essere paragonata ad una queue (coda): i
nodi si aggiungono alla fine (tail) della coda ma sono eliminati dall’inizio (front) della coda. Lo stack si
comporta seguendo la regola LIFO (Last In First Out) mentre la queue si comporta seguendo la regola
FIFO (First In First Out).
Queue:=⎨r⎬;
r-etichetta-1:=visitato;
While queue ≠ ∅ do
⎨x:=front (queue);
if ((x,y)∈E) and (y-etichetta-1:=non visitato)
add ⎨ y to queue ( quindi tail (queue):= y);
y-etichetta-1:=visitato; ⎬
else
remove x from the queue.
⎬
Es.
a
e
0
c
1
d
b
2
0
1
2
c
b
c
0
b
d
1
2
e
d
a
e
a
e
a
b
c
d
Algoritmi del cammino minimo (shortest path):
Sia dato un grafo pesato G=(V,E) dove c:E→ℜ. Siamo o e d due qualunque nodi del grafo. Il problema
del minimum weight shortest path è quello di trovare un cammino di lunghezza minima tra o e d.
Analizziamo due casi: il primo in cui i pesi sono non negativi ed il secondo in cui i pesi possono essere
comunque presi tra i numeri reali. Sia dato un grafo, connesso, pesato G=(V,E) dove c:E→ℜ+.
L’algoritmo di minimum weight shortest path in questo caso si basa sulla seguente proposizione.
Proposizione:
58
Corso di Matematica Discreta
Se p=(o,d) è un minimum weight shortest path tra o e d allora pk=(o,k), sottocammino di p da o a k (dove
k è un qualunque nodo del cammino p), deve essere un cammino di peso minimo tra o e k.
Dim:
Ragioniamo per assurdo e supponiamo che la proposizione non sia vera. Allora ∃ un nodo k sul
cammino p=(o,d) tale che pk=(o,k) non sia un cammino di peso minimo tra o e k. Sia quindi q(o,k) un
cammino di peso minimo tra o e k. E’ c(q)<c(pk). Se indichiamo con pk(k,d) il sottocammino di p da k a d
possiamo costruire un cammino r da o a d, r(o,d) componendo il cammino q ed il cammino pk. E’ c(r)=
c(q)+c( pk)< c(pk)+ c( pk)=c(p), Contraddizione.
Algoritmi del cammino minimo:
Algoritmo di Dijkstra :
Sia dato un grafo connesso, pesato G=(V,E) dove c:E→ℜ+. Sia |V|=m e supponiamo di indicare i
nodi del grafo tramite un numero da 1 a m. Supponiamo di voler trovare per esempio il cammino di
peso minimo tra il nodo 1 ed il nodo m. Indichiamo con g(i) il valore di un minimum weight shortest
path tra 1 e i (con 1≤i ≤m).
Step 1 g(1)=0; U=⎨1⎬; h(j)=c1j se (1,j)∈E mentre h(j)=∞ se (1,j)∉ E pr(j)=1 se (1,j)∈E mentre pr(j)=∅
se (1,j)∉ E.
Step 2 Sia i=arg(minj∉U h(j)). Poniamo U=U ∪ ⎨i⎬ e g(i)=h(i). Se U=V stop.
Step 3 ∀ j ∉U tale che (i,j) ∈E poniamo h(j)=min (g(i)+ cij, h(j)); se h(j)=g(i)+ cij poniamo pr(j)=i.
Ritorna a Step 2.
Alla fine dell’algoritmo g(i) ci darà il valore del cammino di peso minimo da 1 a i (per ogni i da 1 a m)
mentre pr(i) ci darà il nodo precedente i nel cammino di peso minimo da 1 a i. Utilizzando questa
informazione possiamo costruire il cammino di peso minimo da 1 a m.
Teorema:
L’algoritmo di Dijkstra è corretto.
Dim:
Dimostriamo il teorema per induzione. L’ipotesi induttiva è che dopo aver eseguito lo step 3 n volte g(j)
ci darà il valore del cammino di peso minimo da 1 a j per tutti i j ∈U e che h(j) è il valore di un
cammino di peso minimo da 1 a j i cui nodi intermedi sono tutti in U.
L’affermazione è ovviamente vera per n=0 in quanto allo step 0 abbiamo posto g(1)=0; U=⎨1⎬;
h(j)=c1j se (1,j)∈E mentre h(j)=∞ se (1,j)∉ E. Supponiamo che sia vera per n. Dall’ipotesi induttiva è
h(j)≥ g(j) ∀ j∉U. Al passo n+1 eseguiamo prima step 2 e poi step 3. Sia i=arg(minj∉U h(j)) e supponiamo
che h(i)>g(i). Allora il cammino di peso minimo da 1 a i deve contenere dei nodi che non sono in U. Sia
k il primo nodo di questo cammino minimo che non è in U. Da una proposizione precedente sappiamo
che il sottocammino da 1 a k deve essere un cammino minimo da 1 a k di peso g(k). Ma poiché k è il
primo nodo del cammino non in U si ha che h(k) =g(k) ≤g(i)< h(i). Contraddizione perché h(i)= minj∉U
h(j).Quindi è g(i)=h(i).
Per dimostrare adesso che ∀ j ∉U∪⎨i⎬ h(j) rappresenta un cammino di lunghezza minima tra 1 e j che
utilizza soltanto nodi in U è sufficiente osservare che ogni cammino di questo tipo o rimane quello di
prima oppure contiene i come suo ultimo nodo nel qual caso è h(j)=g(i)+ cij.
Algoritmo di Bellman-Ford:
59
Corso di Matematica Discreta
Sia dato un grafo connesso, pesato G=(V,E) dove c:E→ℜ e supponiamo che il grafo G non contenga
cicli negativi. Sia |V|=m e supponiamo di indicare i nodi del grafo tramite un numero da 1 a m.
Supponiamo di voler trovare per esempio il cammino di peso minimo tra il nodo 1 ed il nodo
m.Indichiamo con g(i) il valore di un minimum weight shortest path tra 1 e i (con 1≤i ≤m). L’algoritmo
si differenzia dal precedente per il fatto che h(j) è posto uguale a g(j) soltanto dopo m iterazioni.
Algoritmi del cammino minimo
Step 1 h0(1)=0; h0(j)= ∞ ∀ j∈V-⎨1⎬; k=1;
Step 2 ∀ j∈V hk(j)= min ⎨(mini:( i,j)∈E (cij+ hk-1(i))); hk-1(j) ⎬; se hk(j)= cij+ hk-1(i) poniamo prk(j)=i; se hk(j)=
hk-1(j) poniamo prk(j)=prk-1(j);
Step 3 Se (hk(j)= hk-1(j) ∀ j∈V) ⎨ poni g(j)= hk(j) ∀ j∈V; Stop. ⎬ Altrimenti ⎨ se ( k<m ) poni k=k+1 e
torna allo Step 2.
Se k=m il grafo contiene un ciclo di peso negativo.
Qui hk(j) è il valore di un cammino di peso minimo da 1 a j che contiene al più k archi. Questo è
banalmente vero per k=0. Supponiamo che sia vero per k-1 e dimostriamolo vero per k. All’iterazione
k noi consideriamo tutti i possibili modi di aggiungere un arco (ij) alla fine di un cammino di peso
minimo da 1 a i che non contiene più di k-1 archi e paragoniamo il minimo tra questi cammini da 1 a j
che non contengono più di k archi con il valore del cammino minimo da 1 a j che non contiene più di
k-1 archi. Il minimo tra questi cammini sarà un cammino da 1 a j con al più k archi. Notiamo che se
hm(j)= hm-1(j) ∀ j∈V allora hk(j)= hm(j) ∀ k>m.
Quindi il cammino di peso minimo tra 1 e j ha un valore limitato dal basso per ogni nodo j e quindi G
non contiene cicli di peso negativo. Come abbiamo visto hm-1(j) è un cammino di peso minimo tra 1 e j
con al più m-1 archi. Ma poiché ogni cammino da 1 a j contiene al più m-1 archi si ha che hm-1(j)=g(j). E’
poi hm(j) =hm-1(j) ∀ j∈V perché se cosi non fosse esisterebbe j*∈V tale che hm(j*) <hm-1(j*) cioè avremmo
un cammino da 1 a j* con esattamente m archi di valore inferiore ad ogni cammino da 1 a j* con al più
m-1archi. Quindi questo cammino contiene un ciclo di peso negativo.
Minimum weight spanning tree:
Sia G=(V,E) un grafo connesso e pesato dove c:E→ℜ. Sia |V|=m e |E|=n.
Vogliamo costruire uno spanning tree di peso minimo, dove il peso di un albero è dato dalla somma dei
pesi sui suoi archi.
Algoritmo (Greedy Algorithm):
Step 1 Ordiniamo in ordine non decrescente i pesi degli archi. c1 ≤c2 ≤… ≤ cn. Poniamo E0=∅ e k=1.
Step 2 Se T=(V, Ek-1∪⎨ek⎬) è aciclico poniamo Ek= Ek-1 ∪⎨ek⎬ altrimenti Ek= Ek-1;
Step 2 Se | Ek|=m-1 stop, T=(V, Ek) è il min. spanning tree altrimenti poniamo k=k+1 e ritorniamo
allo Step 2
Teorema:
Sia G=(V,E) un grafo connesso e pesato dove c:E→ℜ. L’algoritmo greedy dà come risultato uno
spanning tree di peso minimo.
Dim:
Ragioniamo per assurdo e supponiamo che l’algoritmo greedy dia come risultato uno spanning tree T
non minimo. Sia T* uno spanning tree di peso minimo tale che tra tutti quelli di peso minimo abbia
|E(T*)- E(T)| minima. Nota che E(T*)-E(T) ≠∅ e E(T)-E(T*)≠∅. Sia e l’arco di peso minimo in E(T)
ma non in E(T*).
60
Corso di Matematica Discreta
Consideriamo il grafo H=(V, E(T*)∪⎨e⎬). Sappiamo che H contiene un unico ciclo. Indichiamo con C
l’insieme degli archi del ciclo. Esiste un arco e′ ∈C-E(T) tale che il grafo L=(V, E(T*) ∪⎨e⎬- ⎨ e′ ⎬ è un
albero. Chiamiamo questo albero T′. Questo albero è di peso minimo poiché ce≤ ce′ in quanto e′ era
stato selezionato dall’algoritmo greedy. E’ | E(T′)- E(T)|= |E(T*)- E(T)| -1 contraddicendo la scelta di
T*. Quindi l’albero T prodotto dall’algoritmo greedy è minimo.
61