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
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
1 / 53
Questa pagina non è visibile nell’anteprima
Non perderti parti importanti!
λ-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^
.^ ...
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:
s
s
Il modello di Turing
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
-^ la macchina si trova nello stato q
-^ il controllo contiene una descrizione dell’azione che deve essere eseguita: s
-^ azione: scrivere un simbolo s
stato finale (fermata)=q 0
b=casella vuota 1
Rappresentazione grafica (
Rappresentazione alternativa (
quintuple
qssqxi^ j^ k^ r^
t
Nel caso sopra:
q0ZqD^00 q1UqD^01 qbbqS^01
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
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
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
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
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
(^1) Q
Q3 Q1 Q7 (^1) Q
1
(^11)
1 1
1
0 0
(^00)
(^00)
b 0
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
b^1
0 1 b^1
0 1 primadopo
b^1 b b (^0 ) b^ b^ b^ b^0 01
b b b b