





















































































Studia grazie alle numerose risorse presenti su Docsity
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Prepara i tuoi esami
Studia grazie alle numerose risorse presenti su Docsity
Prepara i tuoi esami con i documenti condivisi da studenti come te su Docsity
Trova i documenti specifici per gli esami della tua università
Preparati con lezioni e prove svolte basate sui programmi universitari!
Rispondi a reali domande d’esame e scopri la tua preparazione
Riassumi i tuoi documenti, fagli domande, convertili in quiz e mappe concettuali
Studia con prove svolte, tesine e consigli utili
Togliti ogni dubbio leggendo le risposte alle domande fatte da altri studenti come te
Esplora i documenti più scaricati per gli argomenti di studio più popolari
Ottieni i punti per scaricare
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Dispensa utilissima per algoritmi e programmazione lineare
Tipologia: Dispense
1 / 93
Questa pagina non è visibile nell’anteprima
Non perderti parti importanti!






















































































Prof. M. Ornaghi
Prof. M. Ornaghi
1.1. Introduzione 1.2. Il linguaggio LP della logica proposizionale 1.3. Semantica di LP 1.4. Principi logici e dimostrazioni (cenni) APPENDICE
INSIEMI, RELAZIONI, FUNZIONI 2.1. Insiemi (richiami) 2.2. Relazioni come sottoinsiemi 2.3. Funzioni come particolari relazioni 2.4. Esempi di rappresentazioni di funzioni e relazioni
CARDINALITA' E CONTEGGI 3.1. Cardinalità 3.2. Operazioni di costruzione di insiemi finiti e loro conteggio
ALGORITMI E LORO PROPRIETÀ 4.1. La nozione di algoritmo 4.2. Cenni sulla complessità di un algoritmo 4.2.1. Misura di spazio e di tempo 4.2.2. Complessità in tempo e in spazio 4.3. Ingresso ed uscita 4.4. Algoritmi che "usano" altri algoritmi
DIMOSTRAZIONI DI CORRETTEZZA 5.1. Correttezza di un algoritmo rispetto ad una specifica 5.2. Correttezza parziale e totale 5.3. Invarianti e dimostrazioni di correttezza parziale 5.4. Metodo di dimostrazione di correttezza parziale 5.5. Metodo per dimostrare la terminazione
ESEMPI DI ALGORITMI Esempio 1. L'algoritmo di Euclide Esempio 2. Algoritmi di ordinamento
LINGUAGGI DI PROGRAMMAZIONE E PROGRAMMAZIONE STRUTTURATA DISCENDENTE 7.1. Generalità 7.2. Gruppo (A). Linguaggi logici e funzionali 7.3. Il gruppo (B1) e la programmazione strutturata 7.4. Il gruppo (B2) e cenni sulla programmazione ad oggetti
Prof. M. Ornaghi
Scopo:
a) significato dei connettivi proposizionali mediante le tavole di
verità
b) primo esempio di linguaggio formale e distinzione fra sintassi e
semantica
Prof. M. Ornaghi
Enunciato (o proposizione ) = "frase" interpretabile come vera o come
falsa (ma non contemporaneamente vera e falsa).
Esempio :
" 0 è minore di ogni altro numero " è un enunciato; esso è vero , se interpretato nell'insieme N dei numeri naturali, falso se
interpretato nell'insieme Z dei numeri relativi.
Connettivi proposizionali: Più enunciati (o proposizioni) possono essere collegati fra loro mediante i
"connettivi" e, o, non, implica, detti connettivi proposizionali.
Esempio. A partire dagli enunciati a , b, c, mediante il connettivo o e il connettivo
implica , costruiamo l'enunciato composto:
" a implica ( a o c )"
La logica proposizionale studia:
il significato dei connettivi proposizionali, le proprietà ed i principi logici che ne derivano.
I principi logici sono "enunciati" veri in virtù della loro “forma”,
indipendentemente dalle interpretazioni. Ad esempio, la frase " piove o
( non piove )" è vera sia che piova (interpretazione piove =vero), sia che
non piova (interpretazione piove = falso); essa è un'istanza del principio
del "terzo escluso" , che ha la forma enunciativa :
" a o (non a ) ".
Prof. M. Ornaghi
a) Alfabeto di LP.
Simboli enunciativi : useremo le lettere minuscole a, b, …,z.
Simboli logici:
Simboli ausiliari: le parentesi (, ).
b) Formule di LP. L'insieme delle formule di LP è definito induttivamente come segue:
base : ogni simbolo enunciativo è una formula di LP ;
passo : se A, B sono formule di LP , lo sono anche:
nient'altro è una formula di LP.
Esempi di formule.
Precedenze e omissione di parentesi.
quindi:
Prof. M. Ornaghi
Significato dei simboli enunciativi: interpretazioni
I simboli proposizionali denotano generici enunciati.
Pertanto una loro interpretazione viene formalmente definita come un
assegnamento di un valore di verità (" vero " o " falso ") a ciascuno di essi.
ESEMPIO. Le interpretazioni dei simboli a, b sono le 4 riportate qui
sotto (dove v sta per "vero" e f per "falso")
Simbolo Interpr.1 Interpr. 2 Interpr. 3 Interpr. 4
a f f v v b f v f v
Esercizi.
E1. Elencare le 8 interpretazioni dei simboli enunciativi a,b,c.
E2. Dimostrare che le interpretazioni di n simboli enunciativi sono 2 n
(per la soluzione, vedere il modulo 3)
Prof. M. Ornaghi
ESEMPI.
E3. Supposto di interpretare " i cani hanno la coda " come vero (v) e " gli asini volano " come falso (f), abbiamo:
i cani hanno la coda → gli asini volano = v → f = f
gli asini volano → i cani hanno la coda = f → v = v
E4. Il seguente esempio illustra ulteriormente il significato dato all'implicazione dalle tavole di verità:
"x < y → x < y+1" è vero per ogni coppia di naturali x,y;
infatti, ad esempio:
con x=3, y=4 : 3<4 → 3<4+1 = v → v = v
con x=3, y=3 : 3<3 → 3<3+1 = f → v = v
con x=4, y=3 : 4<3 → 4<3+1 = f → f = v;
non si dà mai l'unico caso falso v → f = f.
Prof. M. Ornaghi
Valore di verità di una formula F in un'interpretazione I.
I sia un'interpretazione dei simboli enunciativi di F ; il valore di verità di F in I è quello ottenuto con il seguente procedimento:
sostituire in F i simboli proposizionali con i valori di verità ad essi assegnati da I ;
valutare l'espressione così ottenuta in base alle tavole di verità (e in base alle parentesi e alle precedenze)
Esempio E5.
interpretaz. formula suo valore di verità
Prof. M. Ornaghi
A livello proposizionale, la nozione di dimostrazione può essere formulata come segue: A1, …, Ak siano degli enunciati, che chiameremo assunzioni ; una
dimostrazione di un teorema Fn a partire dalle assunzioni A1, …, Ak è
una successione di formule F1, F2, …, Fn, dove Fj (1 ≤ j ≤ n) è
introdotta: a) perchè è una delle assunzioni; b) perchè è un principio logico, cioè è valida; c) per modus ponens da due formule precedenti, dove il modus ponens è la seguente
regola di inferenza : da H e H → K si può inferire K
Rappresenteremo una dimostrazione F1, F2, …, Fn come una
successione di "righe di dimostrazione" della forma (1) F1 ( per …)
(2) F2 ( per …)
… (n) Fn ( per …)
dove, in ogni riga (j), la parentesi ( per …) indica se la formula Fj è stata introdotta perchè è un assioma ( per assunzione ), perchè è un principio logico ( per pr. log. ) o per modus ponens da due righe precedenti (h), (k) ( per MP da h, k). Vediamo ora un esempio di dimostrazione, rappresentata in questo modo.
Prof. M. Ornaghi
Esempio E9. Assumiamo che l'enunciato " è autunno → piove o è nuvolo " sia vero e che oggi ci sia il sole, cioè che l'enunciato " non piove e non è nuvolo " oggi sia vero; vogliamo inferire dalle due precedenti assunzioni che oggi " non è autunno ". Indichiamo "è autunno" con a, "piove" con p, "è nuvolo" con n; abbiamo: Assunzioni: a → p∨n, ¬p∧¬n ;
Dimostrazione di ¬a:
(1) a → p∨n ( per assunzione )
(2) (a → p∨n) → (¬p∧¬n → ¬a) ( per pr. log .)
(3) ¬p∧¬n → ¬a ( per MP da 1, 2)
(4) ¬p∧¬n ( per assunzione )
(5) ¬a ( per MP da 4, 3)
Come si vede, abbiamo utilizzato un principio logico nella riga (2), per passare da (1) a (3).
In questo senso, un principio logico della forma A → B rappresenta una "regola di dimostrazione" (per passare da A a B).
Prof. M. Ornaghi
Sui linguaggi e sulle definizioni induttive.
LP è il primo esempio di linguaggio formale che incontriamo nel corso di
TAMC; il secondo sarà il Pascal. La definizione data nel § 1.2 fornisce la sintassi di LP , cioè definisce l'insieme delle frasi (dette formule) di LP. Qui la sintassi è data in italiano senza ricorrere ad un particolare formalismo, mentre per il Pascal si userà il formalismo delle carte sintattiche. Possiamo però individuare alcuni elementi e concetti che ritroveremo anche nel caso del Pascal (o più in generale nella definizione della sintassi di un linguaggio):
ALFABETO: è costituito da:
simboli proposizionali: a, b, c …
parentesi: (, )
Abbiamo usato come metasimboli:
A, B per indicare due formule del linguaggio (arbitrarie, atomiche o
meno).
Ad esempio, (A → B) potrebbe essere:
→
∨ → ∧
( p^ q p a
Il linguaggio (o il formalismo) usato per definire un linguaggio è detto
metalinguaggio; si noti che i metasimboli A, B fanno parte del
metalinguaggio ma non di LP (gli unici simboli di LP sono quelli
dell’alfabeto).
Prof. M. Ornaghi
DEFINIZIONI INDUTTIVE
Sono uno strumento frequentemente usato; definiscono un insieme
(generalmente infinito) stabilendo:
a) un insieme di "oggetti base" appartenenti all'insieme (nel nostro caso i
simboli proposizionali a, b, c…);
b) un insieme di operazioni di costruzione che, applicate ad elementi
dell'insieme, producono nuovi elementi dell'insieme; (nel nostro caso, da A e B si producono (A ∨ B), (A ∧ B), ecc.).
c) gli elementi dell'insieme così definito sono gli oggetti base e tutti
quelli che si possono produrre a partire da essi.
La seguente figura illustra i passi di costruzione della formula
a partire dalle formule atomiche (caso base) a, b, c.
( ( a ∨ b ) ∧ ( ∼ c ) )
a b
) (^) ( ∼ c )
c
( a ∨ b
Un altro tipico esempio di definizione induttiva è quello dell'insieme N
dei numeri naturali, così definito: base : 0 è un numero naturale; passo : se i è un numero naturale, allora i +1 è un numero naturale; nient'altro è un numero naturale.
Un insieme è una collezione d'oggetti, detti elementi dell'insieme. Si dice anche che
" x appartiene ad I ", scritto " x ∈ I ",
per indicare che x è un elemento dell'insieme I.
Useremo le seguenti notazioni: {e 1 , e 2 , …, e n } per indicare l'insieme i cui elementi sono e 1 , e 2 , …, e n ;
{x / P(x)} per indicare l'insieme i cui elementi sono tutti e soli gli x che
verificano la proprietà P.
Vocali = { a, e, i, o, u }
Nat = { 0, 1, 2, … } (i naturali)
Pari = {x / ( x è un naturale) e ( x è divisibile per 2) }
LP = {F / F è una formula del linguaggio LP definito nel modulo 1 }
a ∈ Vocali
non (b∈ Vocali ), scritto anche: b ∉ Vocali
0 ∈ Pari
1 ∉ Pari
(a → (a ∧ b)) ∈ LP
(a ∧ (b → (a ∨ b)) ∉ LP
Insieme vuoto. Esiste l'insieme privo di elementi, detto insieme vuoto e indicato con φ.
Abbiamo: per ogni x, x ∉ φ
Sottoinsiemi.
A ⊆ B sse: per ogni x, x ∈ A → x ∈ B ;
A ⊆ B si legge: " A è un sottoinsieme di B " o " A è contenuto in B "
Esempi.
{a, b} ⊆ {b, a} è vero;
{a, b} ⊆ {b, c, d} è falso;
{a, b} ⊆ {b, c, a} è vero;
φ ⊆ A è vero per ogni insieme A.
Identità fra insiemi.
A = B sse: A ⊆ B e B ⊆ A (cioè sse A e B contengono gli stessi elementi) ;
" A = B " si legge " A è eguale a B ".
Esempi.
{a, b} = {b, a} è vero;
{a, b} = {a, c} è falso.
Principali operazioni.
unione : A ∪ B = { x / x ∈ A o x ∈ B }
intersezione : A ∩ B = { x / x ∈ A e x ∈ B }
differenza: A – B = { x / x ∈ A e x ∉ B }
cartesiano : A × B = { 〈 x, y 〉 / x ∈ A e y ∈ B }
insieme potenza : Pow( A ) = { X / X ⊆ A }
Esempio.
{a, b, z} ∪ {b, c} = {a, b, c, z}
{a, b, z} ∩ {b, c} = {b}
{a, b} × {b, c} = {〈a, b〉, 〈a, c〉, 〈b, b〉, 〈b, c〉 }
Pow ({a, b}) = {φ, {a}, {b}, {a, b}}
Pow(φ) = {φ}
Pow({φ}) = {φ, {φ}}