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


Introduzione alla Teoria degli Algoritmi: Definizioni, Computabilità e Modello di Turing, Schemi e mappe concettuali di Algoritmi E Strutture Di Dati

Un'introduzione alla teoria degli algoritmi, esplorando le diverse definizioni di algoritmo, il concetto di computabilità e il modello di turing. Esempi concreti di algoritmi e macchine di turing, illustrando il loro funzionamento e le loro applicazioni.

Tipologia: Schemi e mappe concettuali

2024/2025

Caricato il 02/03/2025

pasquale-mafrici
pasquale-mafrici 🇮🇹

1 documento

1 / 53

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
Cenni di teoria degli algoritmi
E.Mumolo. DEEI
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

Anteprima parziale del testo

Scarica Introduzione alla Teoria degli Algoritmi: Definizioni, Computabilità e Modello di Turing e più Schemi e mappe concettuali in PDF di Algoritmi E Strutture Di Dati solo su Docsity!

Cenni di teoria degli algoritmi

E.Mumolo. DEEI [email protected]

Cenni di computabilita’.^ Definizione di algoritmoa^ ^1 definizione (Goedel)^ ^ E’ una sequenza di regole per formare funzioni matematiche complesse da funzioni piu’semplicia^ ^2 definizione (Church)^ ^ Un algoritmo e’ un formalismo chiamato

λ-calcolo

a^  3 definizione (Turing) ^ Un algoritmo e’ una sequenza di istruzioni (programma) per il calcolatore ipoteticochiamato “macchina di Turing”a^  4 definizione ^ Un algoritmo e’ una sequenza di operazioni di base effettuate su una struttura dati econtrollata da schemi operativi, sequenziali e di selezionea^  5 definizione ^ Un algoritmo e’ qualsiasi funzione complessa svolta da un calcolatore  Tesi di Church-Turing  Tutte queste definizioni sono tra loro equivalenti  Qualsiasi definizione ragionevole di algoritmo e’ equivalente alle definizioni checonosciamo  InoltreOgni volta che scriviamo una serie di passi discreti per risolvere un problema, esiste unalgoritmo per risolvere il problemaTutti i calcolatori sono equivalenti (interpreti) e sono equivalenti alla macchina di Turing

Preliminari: dimensione di un’insieme^ ^ Cardinalita’ di un insieme finito: numero di elementi dell’insieme^ ^

Es: se S e’ un insieme finito di M elementi,

card(S)=M)

^ Ma: se l’insieme e’ infinito? ^ Due insiemi hanno la stessa cardinalita’ se i loro elementi possonoessere messi in corrispondenza biunivoca

(es. numeri naturali, numeri

pari)  Se gli elementi di un insieme S

possono essere messi in corrispondenza 1

biunivoca con gli elementi di un sottoinsieme di un altro insieme, S

, allora 2

si dice^ card(

S)^ ≤^ card(^1

S)^2 ^ Se gli elementi di un insieme S

possono essere messi in corrispondenza 1

biunivoca con gli elementi di un sottoinsieme PROPRIO di S

allora 2

card(S)^ <^1

card(S)^2 ^ Insieme finito S di M elementi: un sottoinsieme puo’ essere rappresentatocon una parola binaria di M bit ^ Numero di sottoinsiemi: 2

M^ ^ card(

insieme di sottoinsiemi di S

M)) = 2

^ card(S ))^ <^ card(insieme di sottoinsiemi di S

))

Preliminari: dimensione di un’insieme (cont)^ ^ INSIEMI INFINITI: Per es.

Cardinalità

dei numeri naturali, N, e dell’insieme dei sottoinsiemi di N

^ Un sottoinsieme di N si puo’ rappresentare con un numero binario di infinite cifre ^ C’e’ corrispondenza biunivoca tra N e numeri binari di infinite cifre?Supponiamo che sia possibile. Cifre binarie: b

bb9 bbi j^ k^ n^

(^9) m 0 1 2

0 bb^00

bb... 02 03 1 bb^10

bb... 12 13 2 bb^20

bb... 22 23 3 bb^30

bb... 32 33

.^ ....^ ....^ ...i^ bbi0^ i

bb... i2^ i^

.^ ...

Elenco deinumeri naturali

Prendiamo il numero binario di infinite cifre sulla diagonale: B= b

bbb 00 11 22 33

Esiste sicuramente un numero naturale dell’elenco. B

= bbbkk0^ k1^ k

b9, uguale a B: basta che k^

b= bper ogni iki^ ii^ MA: il numero B? Se B=B

, sarebbe bk

= bper ogni iki kk^

^ assurdo!

^ B non compare

nell’elenco^ ^ card(N)^ )

<^ card(insieme di sottoinsiemi di N

Preliminari: dimensione di un’insieme (cont) ^ Quindi:^ card(N

)^ <^ card()

insieme di sottoinsiemi di N

) = card() =

F)^ <^ card()b^

F))

^ card(N

)^ <^ card()

F))

^ Ovvero: l’insieme delle funzioni N su N non è numerabile ^ possiamo renderci già conto ora che devono esserci funzioni per cuinon esistono programmi di calcolatore per calcolarle^ ^ infatti, l’insieme dei programmi è numerabile (basta metterli in ordinelessicografico)^ ^ mentre l’insieme delle funzioni non è numerabile ^ vediamolo un pò meglio

Primo problema ^ Ci sono moltissimi compiti che si possono fare con un algoritmo ^ Domanda:

esistono compiti per cui non esiste un algoritmo?

Sia S = {linguaggio, macchina di calcolo}. ^ S e’ un sistema formale nel quale si possono scrivere algoritmi.Algoritmo A in S che termina = funzione f

, calcolata da AA

^ Un problema è computabile se esiste un algoritmo (che termina) per risolverloFunzione totale = termina per tutti i valori di ingressoFunzione parziale = termina solo per alcuni valori^ ^ Insieme di tutti gli algoritmi in S = A

s

^ Insieme di tutte le funzioni calcolabili in S = F

s

Esiste un sistema formale S dove si possono risolvere tutti i problemi esistenti? Cioe’, esiste S tale che F

comprende tutte le funzioni?s

Il modello di Turing

Programma Controllo dellatestina dilettura/scrittura

Legge/scrive un simbolo alla volta



Nastro di lunghezza infinita

Caselle:contengono i simboli di un alfabeto S={s0, s1,9sn}

-^ il controllo si trova in uno degli stati q

, q, 9q 01 m

-^ la macchina si trova nello stato q

e legge il simbolo si

.j

-^ il controllo contiene una descrizione dell’azione che deve essere eseguita: s

qxkrt

-^ azione: scrivere un simbolo s

, portarsi nello stato qk

, spostarsi a destra (xr

=D) ot

sinistra(x=S) o restare fermo (-)t • il comportamento del controllo puo’ essere descritto con la matrice funzionale (stati,simboli)

Il modello di Turing Esempio: sostituisce tutti gli 0 con ‘Z’ e tutti gli 1 con ‘U’stato iniziale=q

stato finale (fermata)=q 0

b=casella vuota 1

Rappresentazione grafica (

AUTOMA)

Rappresentazione alternativa (

CINQUINE)

quintuple

qssqxi^ j^ k^ r^

t

Nel caso sopra:

q0ZqD^00 q1UqD^01 qbbqS^01

b

qZq^0

D^ UqD 00

bqS^1

q^1

Simboli di ingresso

stati

q^0

q^1 inizio^

fine Z,D 0 1 U,D Stato e Simbolo letto

Azione da intraprendere

Il modello di Turing^ Esempio: programma per la MdT che valuti se la stringa di ingresso contiene unnumero pari o dispari di ‘1’ (controllo di parita’)Ipotesi: la stringa binaria e’ circondata da caselle bianche (‘b’)Inizialmente la testina sta sul primo bit a sinistra.Macchina a quattro stati: stato iniziale q

, stati finali q 0

(pari), q 2 3

(dispari)

Descrizione funzionaleDescrizione alternativaq

0 0 qD 0 0 q1 1 qD 0 1 qb b qS 0 2 q0 0 qD 1 0 q1 1 qD 1 0 qb b qS 1 3

b q0^ 0 q0 D

1 q1 D^

b q2 S q1^ 0 q1 D

1 q0 D^

b q3 S q2 q

Il modello di Turing^ Esempio: programma per la MdT che conta gli zeri di una stringa binaria di ingressoin 'unario' (sistema di numerazione posizionale in base 1)^0

1 b^

Q0^ Q^1

  • D^ Q1 D^0

Qb S^4 Q1^ Q^1

0 D^ Q1 D^1

Qb D^2 Q^

Q1 D^ Q^2 1 S Q3^ Q^3

0 S^ Q1 S^3

Qb S^ Q^3

0 D 0

Q^

Q

Q Q3 Q Q b^1

0 1

b^ b b^1

0 1

b^1

b

fine

prima dopo

1, D^1

1, D (^1 0) 0, D

1, D 1 1, S^0 0, S^1 bb, S b b, D b

b, - (^0) b b 0, D

Esempio:

0

1, Sb start

Il modello di Turing Esempio: programma per una MdT che calcola il successivo di un numero in decimaleIpotesi: sul nastro c’e’ il numero iniziale, la testina e’ sull’ultima cifra a destraEs.^

b^ b^0

9 b^ b MdT a due stati, alfabeto: S={b,0,1,2,9,8,9}

stato iniziale q

0

Matrice funzionaleDescrizione con cinquine

q0 1 qD^0

q6 7 qD^0 q1 2 qD^0

q7 8 qD^0 q2 3 qD^0

q8 9 qD^0 q3 4 qD^0

q9 0 qS^0 q4 5 qD^0

qb 1 qD^0 0 1 q5 6 qD^0

b

q1 q^0

D^ 2 qD^1

3 qD^ 4 q^1

D^ 5 qD^1

6 qD^ 7 q^1

D^ 8 qD^1

9 qD^ 0 q^1

S^ 1 qD 0 1

q

Il modello di Turing^ Esempio: programma per una MdT che conta in decimaleIpotesi: nastro tutto bianco o con un numero di partenza: in questo caso la testinasta sul numero. Due stati, stato iniziale q

0

MdT a due stati, alfabeto: S={b,0,1,2,9,8,9}

stato iniziale q

0

Matrice funzionale^0

9 b

q1 q^0

D^ 2 qD^1

3 qD^ 4 q^1

D^ 5 qD 1 1 6 qD^ 7 q^1

D^ 8 qD 1 1 9 qD^ 0 q^1

S^ 1 qD 0 1

q1^ 0 q1 D

1 q1 D^ 2 q1 D

3 q1 D^ 4 q1 D

5 q1 D^ 6 q1 D

7 q1 D^ 8 q1 D

9 q1 D^ b q0 S

Il modello di Turing

b^1

0 1 b^1

0 1 primadopo

b^1 b b (^1 ) b^ b^ b^ b^1 10

b b b b

Dalla slide precedente: programma per la MdT che copia una stringa di 1 e 0 a destradopo il blank

(^1) Q

Q3 Q1 Q7 (^1) Q

1

Q

Q5 Q

(^11)

1 1

1

0 0

(^00)

(^00)

b 0

b b

b b

  • b *

Il modello di Turing Programma per la MdT che fa la negazione logica di una stringa di 1 e 0 e la riscrive adestra dopo il blank.Questo programma si puo' facilmente ricavare dal programma precedente. Bastasostituire la riga Q3 e Q4 con:^ Q

Q3,1,D

Q3,0,D

Q5,0,S Q^

Q4,1,D^

Q4,0,D^

Q6,1,S

Cosi' facendo quando si riscrive la stringa a destra, se si parte da un 1 si scrive 0 e se siparte da 0 si scrive 1.Funzionamento sulla stringa di prima:

b^1

0 1 b^1

0 1 primadopo

b^1 b b (^0 ) b^ b^ b^ b^0 01

b b b b