Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


Algoritmi e Programmazione lineare, Dispense di Elementi di Informatica

Dispensa utilissima per algoritmi e programmazione lineare

Tipologia: Dispense

2013/2014

Caricato il 22/01/2014

alebroggi92
alebroggi92 🇮🇹

5

(1)

1 documento

1 / 93

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
Prof. U. Moscato
Prof. M. Ornaghi
ALGORITMI, PROGRAMMI E LINGUAGGI DI
PROGRAMMAZIONE
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33
pf34
pf35
pf36
pf37
pf38
pf39
pf3a
pf3b
pf3c
pf3d
pf3e
pf3f
pf40
pf41
pf42
pf43
pf44
pf45
pf46
pf47
pf48
pf49
pf4a
pf4b
pf4c
pf4d
pf4e
pf4f
pf50
pf51
pf52
pf53
pf54
pf55
pf56
pf57
pf58
pf59
pf5a
pf5b
pf5c
pf5d

Anteprima parziale del testo

Scarica Algoritmi e Programmazione lineare e più Dispense in PDF di Elementi di Informatica solo su Docsity!

Prof. M. Ornaghi

ALGORITMI, PROGRAMMI E LINGUAGGI DI

PROGRAMMAZIONE

Prof. M. Ornaghi

INDICE

CENNI DI LOGICA PROPOSIZIONALE

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

MODULO 1

CENNI DI LOGICA PROPOSIZIONALE.

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

1.1. Introduzione.

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:

∧ , ∨ , →, ¬ (indicheranno rispettivamente e , o , se…allora… , non ).

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:

(¬A), (A∧ Β), (A∨B), (A→B);

nient'altro è una formula di LP.

Esempi di formule.

(p∨(¬p))

((p→q)→((¬p)→(¬q)))

Precedenze e omissione di parentesi.

¬ precede ∧ precede∨ precede →

quindi:

(p∨(¬p)) si scrive p∨¬p

((p→q)→((¬p)→(¬q))) si scrive (p→q)→(¬p→ ¬q)

(p∨(q∧r)) si scrive p∨q∧r

(p∧(q∨r)) si scrive p∧ (q∨r)

Prof. M. Ornaghi

1.3. Semantica di LP.

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:

¬ gli asini volano = ¬f = v

i cani hanno la coda ∧ gli asini volano = v ∧ f = f

i cani hanno la coda ∨ gli asini volano = v ∨ f = v

i cani hanno la codagli asini volano = v → f = f

gli asini volanoi 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:

  1. sostituire in F i simboli proposizionali con i valori di verità ad essi assegnati da I ;

  2. 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à

a=v a∧¬a = v∧¬v = v∧f = f

a=f a∧¬a = f∧¬f = f∧v = f

a=v a∨¬a = v∨¬v = v∨f = v

a=f a∨¬a = f∨¬f = f∨v = v

a=f, b=v ¬a→(a∨b) = ¬f→(f∨v) = v→v = v

a=f, b=f ¬a→(a∨b) = ¬f→(f∨f) = v→f = f

Prof. M. Ornaghi

1.4. Principi logici e dimostrazioni (cenni).

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 " è autunnopiove 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

APPENDICE.

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 …

simboli logici (connettivi): ∧, ∨, →, ¬

parentesi: (, )

METASIMBOLI, METALINGUAGGIO

Abbiamo usato come metasimboli:

A, B per indicare due formule del linguaggio (arbitrarie, atomiche o

meno).

Ad esempio, (A → B) potrebbe essere:

∨ → ∧

( A B

( 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∨b)∧(¬c))

a partire dalle formule atomiche (caso base) a, b, c.

( ( ab )(c ) )

a b

) (^) (c )

c

( ab

ESEMPIO.

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.

2.1. Insiemi (richiami).

Un insieme è una collezione d'oggetti, detti elementi dell'insieme. Si dice anche che

" x appartiene ad I ", scritto " xI ",

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.

ESEMPI.

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.

AB sse: per ogni x, xAxB ;

AB 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: AB e BA (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 : AB = { x / xA o xB }

intersezione : AB = { x / xA e xB }

differenza: A – B = { x / xA e xB }

cartesiano : A × B = { 〈 x, y 〉 / xA e yB }

insieme potenza : Pow( A ) = { X / XA }

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({φ}) = {φ, {φ}}