Come potrete vedere
dalla prova, se l'avete sott'occhio,
i punti totali sono 32,
ok? Ci sono. Dalla prova scritta potete
racimolare 32 punti totali.
Credo che lo mantengo così, al più lo
passo a 31, però dalla prova scritta
avrete un numero di punti superiore a
30.
La domanda è: "Ma perché possiamo
prendere Trendello dallo scritto?" No,
allora la politica del Mamma che
bordello. Ok, la politica del più punti
allo scritto è che così se fate qualche
errorino comunque non vi ammazza il
voto. Ok? Che non facciamo?
Quindi vi do 32 punti allo scritto e
funziona così.
Voi potete, fatto lo scritto, quindi con
il punteggio che realizzate allo scritto
che perciò è un pelino più alto, se
superiore o uguale a 18
potete decidere di registrarlo così
com'è. Ok?
Ho l'altra opcione è rifiutarlo.
Orali. Gli orari, siccome siete
tantissimi, non non posso fare a tutti
voi. E allora ho adottato questa
politica. La politica è il voto un po'
più alto allo scritto, così teniamo le
cose un po' più alte
e poi, ehm
gli orari sono solamente per i voti
altissimi,
che significa che se prendete
da 29 a salire allo scritto
avete
due opzioni.
Non venite a fare l'orale per darvi la
possibilità come gli altri che dice la
questione qual è? Che io prendo 29, devo
venire per forza a fare l'orale, mentre
i miei colleghi che hanno 28 se lo
registrano e a sto punto prendevo 28
pure io. Allora vi do la possibilità di
scegliere. Quindi solo da 29 a salire
potete scegliere se fare o non fare
l'orale.
Se decidete di non fare l'orale prendete
28. Cioè, quindi c'è il cap a 28 è come
se avesse raggiunto 28. Se volete i voti
alti alti dovete venire all'orale, ok?
Il voto dell'orale,
come risaputo, non in questo
dipartimento perché è il primo anno che
faccio esami qua, ma gli altri
dipartimenti dove faccio gli orari, i
voti salgono, i voti scendono, cioè non
vi pongo problemi ad abbassarvi il voto.
Ok? Quindi una volta che prendete 29,
ok? Voglio tentare la fortuna. Vi
sedete, il voto dello scritto è perso,
può salire, può scendere. Ok? Durante la
prova orale posso dare la lode. Ok?
Quindi allo scritto non c'è possibilità
di lode. La lode è solamente all'orare
perché voglio sentirvi come come
ragionate. Wow, ce l'abbiamo fatta.
Alright. Dov'è questo?
Ci siamo più o meno.
Eh, ok. E quindi chiaro più o meno come
organizzato. Sì, prego. Come l'orale è
strutturato, domande di teoria,
dimostrazioni. Poi ovviamente siccome
l'orale saranno solamente per i voti più
alti, son cose
che link c'è fra questo concetto e
quest'altro concetto, quale quale
differenza c'è fra questo e questo? ti
riesci a inventare qualcosa che non
abbiamo visto all'usione. Cioè, devo
capire un attimo quanto alti siete, cioè
una volta che vi presentate con 29 di
iscritto all'orale, io assumo che non
sia stato un colpo di fortuna. Facciamo
l'orale anche per vedere se non sia
stato un colpo di fortuna. Immagino di
no, però ovviamente partendo da lì le
domande saranno un po' trichi. Quindi
cosa serve per dimostrare questo? Qual è
il presupposto di come facciamo a dire
questo? Che che relazione c'è fra le
cose? Oppure boh, domande su cose che
non abbiamo visto espressamente a
lezione e voglio sentire come ragionate
cose cose così. Quindi dallo script
potete arrivare come come avete detto un
po' normalizzato verso l'alto per non
per non penalizzarvi.
Potete scegliere da 18 a salire di
registrare direttamente lo scritto.
Come vedrete spero che me le confermano
oggi le date, senò li presso. C'è uno
scritto gli orali sono tipo quasi due
settimane dopo. Mi serve tempo per
correggere gli scritti.
Allora, per coloro che passano lo
scritto ma non sono in condizione di
superare l'orale, io mi aspetterei una
risposta vostra, se accettiate o meno,
entro le date dell'orale. Dopodiché, se
io non sento nulla, io assumo silenzio a
senso che vi prendete il voto dello
scritto. Ok? E poi non ve lo non ve lo
caccio, eh? Non lo non chiamo negli
uffici, no, dobbiamo cancellare un
esame. Se non vi fate sentire vi
prendete quello. Punto. Ok?
Quindi avete un po' di un po' di tempo,
contate che in realtà non avrete tutto
sto gran tempo perché io metto gli esami
distanti, ma per correggi se mi vi
presentate in 70 di voi allo scritto mi
servirà una settimana, 10 giorni per
correggere tutto, anche perché c'ho
altri appelli di esame nel frattempo,
quindi insomma mi serve del tempo.
Quindi abbiamo detto potete registrare
il voto dello scritto che prendete.
Se prendete sullo scritto da 29 a
salire, non potete prendere il voto
dello scritto a meno che non mi diciate
io non voglio fare l'orale e quindi il
voto è cap a 28 oppure venite a fare
l'orale, ma non è che sale sicuramente
all'orale può salire, può scendere.
L'orale è l'unico modo per avere la
rode. Ok?
È il primo anno che faccio sta cosa. Non
so come funziona, purtroppo. Devo un
attimo testare testare le cose. Altre
cose burocratiche?
No, credo credo che sia questo a livello
di gestione dell'esame in sé. Poi su
virtuale vi scrivo un sommario di queste
cose qua, così ve le ve ritrovate tutti
regolamento.
Ok?
Allora, questa è la Si vede niente.
Questa è la prova
e una
una un template, ok? Cioè, non è che
sarà sicuramente così. Ne ho preparata
una ieri per darvi un po' l'idea delle
cose che ci saranno. Poi, come vedete,
le domande c'hanno i punti, li posso un
po' spostare magari alla macchina di
Touring invece di otto punti e se e due
punti mi sposto in giro da altre parti,
però è un po' per far vedere che cosa ci
sarà qua dentro. Allora, vediamo un po'
la struttura. Come vedete sono 3 ore e
mezza perché eh è lunga perché è lunga
la prova. Ho fatto una stima di massima
larga di quanto tempo vi serva. Ho detto
"Ok, 3 ore e mezza così vanno rilassati
e non devono sbattere la testa sul
banchio." Ok.
Alright. Allora, come vedete ci sarà una
macchina di Touring, ok?
tenore della macchina di Touring è il
tenore degli esercizi difficili, cioè
quelli che abbiamo visto alla fine sulla
macchina di Touring dove devono
controllare cose strambe e sarà più su
quella linea là che non controllare che
due stringhe sono uguali, ok? Cioè
richiederà un po' di tempo per pensarci,
più che altro mi voglio capire quanto
riuscite a gestire il non determinismo.
Questa è la cosa. Ok? Dopodiché ci
saranno, vedete, domanda due, un po' di
domande orali, tipo che cos'è una
macchina di Touring? Definisci un
linguaggio in NP. Che cos'è una
proprietà di linguaggi? Cos'è un
trasduttore? Qua, per esempio, cos'è un
trasduttore? C'è roba di teoria,
domande.
Dopodiché, ed è tutta roba che abbiamo
visto, eh, lì vi chiedo cose che fanno
parte del corso. Che cos'è, che
differenza c'è fra P ed? Qual è la
relazione di contenimento? Cose così.
Ok.
L'uno o l'altro, poi magari ti dico
giustifica perché l'uno sta dentro
l'altro. Ok? E in genere saranno un tre
quattro domande due punti l'uno. Ma cioè
su definizioni,
che cos'è una riduzione? Capito? Cioè
voglio capire se i concetti almeno
quelli base li tenete
alright? Dopodiché ci stanno una o due
dimostrazioni. In questo caso sono
domanda 3 e domanda 4. Vediamo se riesco
a zoommare un po'. Ok. Domanda 3 e
domanda 4.
In questo esempio, poi magari si
raggruppa cos'è? È una dimostrazione
su cose che abbiamo visto in aula. Che
ne so, tipo domanda 3, sia l un
linguaggio, dimostrare che se l è
decidibile lo è anche il suo
complemento. Ok? due tre punti due cose
del genere. Oppure domanda 4, siano a B
C tre linguaggi? Dimostrare che se A si
riduce polinomialmente a B e B si riduce
polinomialmente a C, allora A si riduce
polinomialmente a C. Ok? Quindi sono
proprietà, dimostrazioni, roba che
abbiamo visto in a poi magari che posso
fare? Invece di farvene due semplici, ve
ne faccio una più complessa, dimostrare,
enunciare e dimostrare il teorema di
Rice, per dire, ok? Cioè, quindi
dimostrazioni
di cose che abbiamo visto in aula, cose
del tipo
di mostrare il teorema di Cook, no,
quelle è roba da orale, cioè venite
all'orale e vi tartasso, dimostrami il
teorema di Cook oppure dimostrami che
Direct e Demiltonian Cycle è ehm NP
arduo o dimostra che il problema del
tiling è indecidibile. Cioè queste
dimostrazioni tostarelle, quella è roba
daurale, non tanto da scritto. Ok?
Dopodiché ci saranno perché siccome è
stato un corso formale voglio vedere un
po' come vi approcciate alla formalità.
Ci saranno due domande, in questo caso
sono la domanda 5 e la domanda 6
in cui vi chiedo di dimostrare delle
cose non viste in aula.
Ok? Quindi ve le dovete inventare, però
ovviamente, cioè, non è che vi chiedo di
dimostrare che P è diverso da NP, vi
chiedo cose semp semplici, vi chiede un
minimo di tempo, poi le vediamo assieme
stamattina come si può fare. Domanda 5,
per esempio, discutere la decidibilità
del seguente linguaggio. L è l'insieme
delle codici di dei codici di macchine
di Turing che cambiano stato ad ogni
passo mentre computano. Ok?
Cioè, quindi chiedete, ok, questo
linguaggio è decidibile o non
decidibile? In caso vi dovete inventare
una riduzione per mostrare
l'indecidibilità o se scoprite, che può
essere il caso, no, che è una proprietà
semantica di macchine, allora si applica
il teorema di Rice e quindi mi dite
direttamente, questo è indecidibile per
il teorema di Rice. Ok? Cioè, quindi ci
sarà un esercizietto
sull'indecidibilità.
Date un linguaggio, stabilire
decidibile, non decidibile. Potrebbe
essere necessario fare una dimostrazione
ho ad hoc potrebbe essere utile
utilizzare il teorema di Rice. Come
vedremo in questo esempio qui, il
teorema di vedremo che non si può
applicare. Ok? Che cosa voglio vedere
qui? E nell'altra dimostrazione o se le
becco da qualche parte. Una volta quando
insegnavo in Inghilterra avevo fatto uno
specchietto dei criteri di valutazione.
Quello che voglio vedere è a parte
l'idea che vi viene, ma la sapete
dimostrare
quando fate le dimostrazioni di sé e
solo sé, i due versi sono sensati o
state facendo due volte la stessa cosa?
Quando scrivete le frasi sono collegate
o non c'entrano l'una con l'altra, c'è
un flusso logico, è in grado di guidare
il lettore a capire il flusso della
dimostrazione, cioè voglio capire se
riuscite ad argomentare sostanzialmente.
Ok? Questa è la cosa. Quindi se la
riduzione per dire è corretta, ma poi
non riuscite a dimostrarne la
correttezza, non prendete il massimo dei
punti, ok? Come punti? prendete dei
punti. Certo, non è che così che che
schife,
prendete dei punti. Ok, però quello che
voglio vedere, gradirei vedere è la
vostra abilità nell'argomentare. Quindi
se il flusso di argomentazione sono
frasi sconnesse che non si attaccano
l'una all'altra e non si riesce a capire
dove andate a parare, ecco, quello non
viene valutato bene. Ok?
Quante dimostrazioni avete scritto in
vostra, eh? O ve ne hanno fatte?
Sì. Ok. Quello è Non compenso il pezzo.
Non compression. Ah, ok. La cosa è molto
semplice, cioè come faccio io? Io mi
metto si chiama seconda posizione
percettiva. Io mi metto nella testa del
lettore, faccio "Ma se io stessi
leggendo questa cosa qui capirei o no?"
E io quindi mi devo far domande su
quanto è chiara la connessione delle
frasi. Io così faccio
dimostrazioni di Sì, sì, sì, ma non è
quello e basta. è saperlo esporre, cioè
che quello legge e capisce.
Quello è è la cosa. Quindi gradirei
vedere che le frasi le sapete collegare.
Se usate
un concetto sia che ne so nell l'insieme
S è bla bla e l'insieme S non l'avete
ancora definito? Cioè, capite? Quindi
fate riferimento a oggetti che avete
definito, cose così, cioè vedere se
insomma il flusso dell'argomentazione è
sensato oppure è buttata lì. Ok? Questo
qua
è chiaro? Quindi cioè esercizio di
scrittura.
Come vi potete esercitare su questo?
Provate a dimostrare cose per i vostri
colleghi e gliele fate leggere. Questo
era un esercizio che facevo quando ero
in Inghilterra, ma erano pochi e si
poteva fare. Ci li dividevo a gruppi,
davo una cosa da dimostrare, nei gruppi
scrivevano assieme la dimostrazione, poi
che gli facevo fare? Si scambiavano i
fogli, si correggevano le cose a vicenda
per dire si capisce, non si capisce, no?
in maniera tale che uno imparava a come
collegare le cose, poi vabbò, prendevo
tutto io e davo il mio la mia
valutazione. Voi eravate troppi, non si
poteva fare una cosa del genere, ok?
Però insomma scrivere in maniera fluida
le cose che andate ad argomentare. Ok?
Se menzionato un concetto durante la
prova, assicuratevi che magari l'abbiate
già definito.
S è un sottoinsieme di T, ok? e non
avete detto né che cos'è S né che cos'è
T e e diventa un po' un problema. Ok?
Quindi una dimostrazione carina, pulita.
Ok?
Questa cosa si applicherà anche
nell'esercizione
che è l'ultimo qua, in questo caso
domanda 6. Che cos'è? È un problema di
NP completezza. Mi invento un problema
di cose che non abbiamo visto in aula e
io vi chiedo di dimostrarne la sua
complessità.
quasi sicuramente un problema NP
completo. Non vi chiederò di dimostrare
cose strane.
Quindi che cosa dovrete fare?
Membership, dimostrare che il problema
sta NP. Hardness, dimostrare che il
problema è NP arduo. La sorgente della
riduzione ve la dico io. Ok? Quindi non
vi dovrete scelvellare "Ma che cavolo di
problema uso?". Vi do io il
suggerimento, riduzione da colorabilità,
riduzione da vertex cover, eccetera. Ok?
Quindi là lo trovate e poi potrebbe o
potrebbe non esserci, nell'esempio l'ho
messo, questa è una cosa che desiderò,
la domandina del tipo sul problema di
calcolo. Ok, il problema np completo.
Quanto in che classe invece collochiamo
il problema di calcolare, che ne so, il
minimo o il massimo bla, che sono le
ultime cose che abbiamo fatto. Ok,
quindi questa è un po' la struttura
macchina di Turing.
Domande teoriche di definizioni che
definizioni di definizioni che abbiamo
visto.
Dimostrazioni. Potrei chiedervi qualche
relazione di concetto, ok? Però mainly
definizioni o relazioni
dizioni di proprietà viste in aula.
Dimostrami il teorema di Rice.
Dimostrami che se L è in R e il suo
complemento è in R, allora sta in R. Ok?
Il linguaggio sta in R. Queste cose che
abbiamo visto.
Oppure l'esempio qua, dimostrami la
transitività delle riduzioni
polinomiali, cose così. Quindi macchine
di touring, domande teoriche,
dimostrazioni, perché voglio vedere un
po' come fate di cose che abbiamo visto.
E poi ci stanno due esercizi un po' più
creativi. Un esercizio sull'indibilità,
vi do un linguaggio e vi chiedo sto
linguaggio è decidibile o indecidibile?
E voi o approntate
un attacco diretto o usate il teorema di
Ris, se è il caso, eh, perché il teorema
di Rice non è che si può usare sempre. E
poi il problema dell' NP completezza. Mi
invento un problema e vi dico,
dimostrate che questo problema è NP
completo. I problemi possono essere
vari, eh, qua per esempio avrò una cosa
transazioni su basi di dati, però
potrebbe essere cos? Il fruttivendolo o
cose così. Mi invento roba stramba. Ok,
prego.
Prima alla fine
può dare darsi qualcuno
gli eventi
mai il file del file è la soluzione
probabilmente
per vedere come strutare la risposta.
Ah, potrei vediamo poi
in principio possiamo farla. Sì. Ah, ma
del tipo ci vediamo in aula e vi dico
come si fa.
Si potrebbe, cioè ci vuole tanto tempo.
Ah, quello sì. Allora,
fare
il numero di
e certo senò morite su qua.
Ah,
io gli posso dare pure 2 ore e mezzo. Il
problema è che c'a quella quantità di
roba.
Potete andare in bagno, potete portare i
bagni,
diventerà la prova degli esami di stata.
È lunga, è longa, l'ho capito. Poi la
questione è che non avevo un'idea della
stima dei tempi e quindi mi son tenuto
largo. Poi magari mi consegnate tutti
dopo 2 ore e mezza e capisco che
dall'appello in poi in 3 ore si fa.
Cioè, non ho idea di quanto tempo ci
metto, sono andato largo, ho pensato che
ne so, le mie stime, va, tre quarti
d'ora per la macchina di touring,
mezz'ora per rispondere a tre domande,
tre quarti d'ora per il per esempio NP
completezza là serve tempo per pensare.
Ho detto ci metterà tre/ quarti d'ora,
sommato assieme usciva intorno alle 3
ore. Ho detto 3 ore e mezza. Ok. Sì, se
abbiamo bisogno di dei risultati
durante una dimostrazione li possiamo
assumere come già verificati con non so
la transitività delle Sì, sì, sì, sì,
sì, sì, sì, sì, sì, sì, sì. Ok. però
sono
come a legge corretto queste
caratteristiche oppure se volete potete
chiedere però che ne so transitività
delle roba che potete assumere cioè a
meno che non vi sto facendo la domanda
dira la transitività però per dire per
l'Pness
del problema dell'ultimo problema mica
mi dovete ridurre tutti i linguaggi di
NP a lui. Partite da un problema NP e
fate la riduzione
come
Sì, sì, ve lo dico io. Qua per esempio
che eh qua si legge pochissimo. Qua c'è
scritto a distgerimento riduzione da
indipendenza. Ve lo dico io qual è il
problema. Ok? Così è più facile, non ve
lo dovete cercare. Quindi vabbò, poi ne
discutiamo, però dovete conoscere un po'
di problemi, no? Che ne so, i problemi
standard su grafi, quelli vi conviene
conoscere. independence set, vertex
cover, dominating set, calc color
colorabilità,
NAPSAC potrebbe essere utile. Quindi i
problemi NP completi che abbiamo visti,
Miltonian Cycle che abbiamo visto alla
fine, almeno la definizione in maniera
tale che se vi dico riduzione da
Miltonian Cycle sapete che cos'è sto
problema. Ok? SAT 3 SAT, queste
varianti, ok? Queste sono cose che vi
tornano utile, almeno la definizione dei
problemi, quella vi conviene saperlo, in
maniera tale che se vi vi do io il
suggerimento riduzione dal problema tal
da tali e voi non sapete che cos'è e poi
vi un po' un problema. Ok? Non ne
abbiamo fatti tanti, saranno sei o
sette, eh,
quindi giusto le definizioni di quelle
cose. Ok? Però riguarda
di completo si descrive come ha sempre
fatto che check fate dess io questo,
cerco quest'altro entrate un po' più nei
dettagli del tipo spesso attenzione
siamo andati abbastanza raff, no? Gesso
questo e bla.
Siate un po' più precisi. Gesso questa
cosa qua. Questa cosa è di taglia
polinomiale per questa ragione. Poi
faccio il check. Ce checko A, B, C e D.
E tutto ciò è polinomiale per questo,
questa e quest'altra ragione, cioè date
qualche dettaglio, non semplicemente
guess and check polinomiale. Ok, va
bene. Questo qua. Ehm
Sì, prego.
lo stesso come
lo stesso allora questa è una cosa che
devo consultare perché in passato
durante gli appelli dell'estate
ero massima flessibilità scritto a
maggio anche a settembre davo questo
tipo di flessibilità il problema è
passato,
sono richiesto un regolamento didattico
che mi impone che la registrazione del
dello scritto dei voti venga fatto fatto
entro pochi giorni, quindi io non posso
adesso farti fare uno scritto a maggio
registrato a settembre, quindi devo
verificare il dipartimento se ho questa
flessibilità. In passato lo facevo fare,
ma mi sa che non lo posso fare più. No,
per a maggio, lo scritto. Sì, sì. Ma per
spiegare per me che fai lo scritto a
maggio e viene a settembre per me va
bene, puoi venire a luglio puoi venire a
giugno. L'ho sempre fatto in passato su
quelli estivi poi quelli avanti fai lo
scritto e fai l'orato perché non mi
voglio portare code però durante
l'estate per flessibilità l'ho fatto
fare. Mi hanno detto che abbiamo questi
vincoli, quindi io non so se posso più
farificatoo
mesare i poi anche se un pezzo problema
per
software fatte a novembre
febbra più febbra.
Guarda, il regolamento è passato di
recente, passato scorso a questo mese,
cioè al primo maggio abbiamo nuove
regole.
Questo capisco che serve a darvi
garanzie a voi, però ci limite
flessibilità a noi. Eh, questa verifico,
verifico.
Quindi immagino che puntate a collocarvi
nella parte alta dei voti, cosa che mi
fa piacere.
studiate. Eh, cioè mi fa piacere se son
contento se avete successo, eh, non è
che voglio stare qui a tappassar.
Ok,
che ore sono? Ci siamo. Vabbè, iniziamo
a vedere assieme questa cosa qua. Ok,
quindi ve l'ho detto, questa traccia che
vi do è giusto per darvi un'idea di che
tipo di domande ci stanno.
Potrei spostare un pochino i pesi perché
ieri stavo lì col bilancino a stabilire
m quanto do alla macchina eccetera.
Potrei ritoccarlo un po', tolgo un po'
di punti alla macchina, ne do un po' di
più alle dimostrazioni, eccetera. Ok,
quindi è una cosa che potrei cambiare in
corso d'opera, però sostanzialmente è
questo. Macchine, domande di cose visti
al corso, dimostrazioni di cose viste al
corso, un esercizio sull'indecidibilità,
un esercizio sull NP hardness. Ok?
Questo è sostanzialmente quello che
facciamo.
Alrg.
Ok. E partiamo dal primo.
Si definisca una macchina di touring,
eventualmente non deterministica e o
multinastro per il seguente linguaggio.
L
e che cavolo
L è il linguaggio delle stringhe A B1 w2
bla bla bla WN.
Tale che AB e W
sono definite sull'alfabeto A, B, C e D,
sono tutte lunghe almeno una stringa, un
carattere. abbiamo che n è la somma
della lunghezza di A e della lunghezza
di B. E poi ogni w
è fatta in questo modo. È fatta da una
stringa ri
seguita da una stringa S con I,
dopodiché si ripete R con I e poi ci sta
S con I al contrario, ok?
In cui la lunghezza di R con i ed s con
i è almeno un carattere. Poi qua vi
faccio un esempio, vediamo un po'.
Zoomiamo qua. Quindi abbiamo, che ne so,
BC
sarebbe A, C sarebbe B.
due simboli qua, un simbolo qua, quindi
sono tre e abbiamo 1 2 e 3. Guardiamo
qua. Questo è R2, questo è S2, questo è
R2 che è uguale a questo e questo è S2
che è questo al contrario. Ok? Quindi
dobbiamo verificare questa cosa qua.
Quella Ra reversa, sì, RD reverse.
Ok.
valutazione, come valuto la macchina,
qualsiasi cosa che funziona va bene, ok?
Se avete delle idee però particolarmente
fantasiose, magari mi commentate come
come lo fate, ok?
Però, cioè, non è che c'è il modo di
fare di di riconoscere questo
linguaggio. Ci sono tanti modi. Un
qualsiasi modo che funzioni,
un qualsiasi modo che funzioni per me va
bene. Ho solo una preferenza
che se c'è un modo non deterministico,
quello lo preferisco a uno
deterministico. Ok? Che ne so, se dovete
fare un test di sottostringa, preferisco
che lo becchiate non
deterministicamente, che non fare tutte
le prove, perché voglio vedere se avete
capito il non determinismo. Tutto qua.
Per il resto basta che la macchina
funziona.
Il grafo, il grafo di transizione.
No, no, no, no. Cioè la macchina deve
riconoscere un qualsiasi input, non la
stringa di esempio. Ne ho visti negli
anni esercizi
in cui la macchina riconosceva la
stringa ad esempio e nient'altro.
Cioè, va bene. Quanto vuoi? Mezzo punto
dove
No, fate il grafo di transizione della
macchina. Punto. Se c'avete qualche idea
particolare, potete dire sul primo sul
primo c'ho l'input, sul secondo ci metto
questo, cioè qualche commentino per
farmi capire come funziona la vostra
macchina. Ok?
Alright. Vediamo un po' di farlo
assieme.
Allora,
L è il linguaggio di A B
W1 cancelletto
WN
tali che abbiamo AB W con I appartiene
ad AB CD+.
N è a + b.
L v con i sono uguali a R S con I. R con
I s con I reversed. E poi abbiamo che R
con I ed S con I contengono
almeno un simbolo.
Sì.
Ok,
prendete un minutino, due per pensare.
Lo facciamo.
Consigli per esercitarvi sulle macchine
di touring. Inventatevi linguaggi strani
e provate a deciderli, a riconoscerli,
ok? Così facendo con i vostri. Ok.
tempo.
Ah.
Ah, poi vediamo
Ah, ok. Preferite Sì, sì, sì, sì. Si può
fare. Volete che vi faccio vedere la
soluzione di questo coso o no? O
partiamo direttamente da quelli
difficili? Partiamo direttamente da
quelli difficili. Ok, mi sembra una
buona idea.
Se abbiamo tempo finiamo finiamo qua.
Ok,
buono.
Ok.
Domanda 2. A. Perché ci focalizziamo
sullo studio dei problemi di decisione?
Sì, sì, sì. Ma per capire, per semplice,
perché è più semplice.
Benissimo, due punti. Ok, per beccare.
Cioè è roba facile, eh? Definizione
formale di bigo fn e big go di gn se
esiste una costante c e una costante n0
tale per cui bla. Ok? Comeè fatto un
trastruttore?
Tre i nastri input, work tape, output.
Che significa? che un trasduttore
computa una funzione f se su ogni
stringa in input w al termine della sua
esecuzione sul nastro di output la
macchina il trasdruttore avrà lasciato
fto
due punti. Ok?
Dimostrare che se L appartiene R è bla
bla queste sono cose che vedete.
Transitività delle riduzioni eccetera.
Ok, andiamo a domanda 5 e domanda 6.
discutere la decidibilità
di questo linguaggio. L
è l'insieme
dei codici
di macchine di Touring
tale per cui
sono macchine che quando computano
cambiano lo stato ad ogni passo. Ok?
Questo esercizio qua l'ho preso dagli
appunti di Calauti. Ce ne stanno altri,
andateveli a vedere così vedete un po'
come si fa. Ok, gli altri me li sono
inventati io.
Tipo pure per la NFness che vedremo dopo
sugli appunti di Caluti. Vedrete altri
esempi e esercizi di dimostrazione di
NPness. erano quelli che facevo quando
ero il suo docente. Ok, quindi sono cose
il ristorante, ste cose qua che mi ero
inventato. Le li beccate là. Ok.
Allora,
qui questo linguaggio
è una proprietà di macchine o no?
Sì, perché è un linguaggio che contiene
codici di macchine di Touring, quindi è
candidato
all'utilizzo
del teorema di Rise. Candidato
non è che lo possiamo applicare con
certezza, lo possiamo applicare
solamente
se questa è una proprietà semantica.
Quindi dobbiamo capire se L è una
proprietà semantica di macchine, cioè
quindi è una proprietà sui linguaggi
o è una proprietà sul funzionamento
della macchina. Ok?
Per dimostrare, secondo voi, così com'è
definito,
vediamo un po'.
Si vede meglio? Più o meno. Ok. ha
intuito questa qui sarà una proprietà di
linguaggi o una proprietà di macchine?
Ma mh è una con buona probabilità è una
proprietà di macchine, ok? Però dobbiamo
mostrarlo che non è una proprietà
semantica.
Vi ricordo la definizione di proprietà
semantica. Una proprietà
è semantica
se
date due macchine m ed m2
che riconoscono lo stesso linguaggio,
l'appartenenza di m1 alla proprietà
implica l'appartenenza di m2 alla
proprietà. Ok? Cioè la discriminante
deve essere il linguaggio che
il linguaggio che le macchine
riconoscono. Ok? Data questa
definizione, come facciamo a dimostrare
che una proprietà non è semantica?
Perché la nostra Perché stiamo ptanto a
dimostrare che la proprietà non è
semantica? Perché l'intuizione ci dice
che questa non è una proprietà
semantica. Però lo dobbiamo dimostrare.
Come facciamo a dimostrare? che la
proprietà non è semantica. Prego.
Possiamo fornire un controesempio.
Possiamo fornire un controesempio che si
instanzia in cosa? Fornire
una macchina che accetta lo stesso
linguaggio anche
una Esattamente. Un controesempio per il
fatto che una proprietà sia semantica è
dare due macchine che riconoscano lo
stesso linguaggio, ok?
ma che una sta nella proprietà e l'altra
non ci sta. Ok? Quindi adesso noi
dobbiamo dimostrare
dobbiamo trovare due macchine che
riconoscono lo stesso linguaggio, ma che
una sta in L e una sta in L. Prendetevi
qualche minuto.
Sì, sì, sì, sì, sì. la proprietà non è
senantica e perché
cioè se per esempio partissimo
direttamente a una macchina più
eh se lei trova una
Sì, se lei trova una macchina può può
fare una può fare una dimostrazione,
però poi per collocarla se sta R, se sta
in R, se sta in R - R o se sta fuori
entra ne serve o rice o una disquazione
normale. Ok? Però, per esempio, ora ci
stiamo cercando di intuire se la
proprietà sia semantica o meno.
qualsiasi string
finisce la
Allora, un attimo,
un minutino ancora così ci pensate.
sempre
Ok,
idee ho visto lei voci nuove. Qualcuno
vuole?
Qualcuno che non è intervenito
intervenuto stamattina? Idee?
Ok, prego.
Una macchina Lauder Lauder che nemmeno
io sento.
Redere specialmente una macchina che
riconosca un linguaggio
a
venziale
legge cereale
finale pasta. Sì, secondo me fa lo
stesso, però se regge
diverso la A trapp
che fa che su se stesso,
però c'è una transizione comunque dice
legge A e poi vado a transire. Ah, però
dice su ogni passo, carta, visto che la
definizione della è carizzata con il
basso. Sì. Laddove la prima macchina
legge infinisce. Sì, cambia passo. La
seconda può finire nel cibo in cui resta
bloccata la nuova. Sì, sì, questo è un
modo. Ve ne propongo un altro
che è questo qua. Allora,
allora, la prima macchina è così, molto
semplice. Ho Q0, che è lo stato
iniziale.
Che cosa fa sul nostro? go alfa che è un
simbolo qualsiasi.
Lascio alfa. Ok, tengo la testina ferma,
mi sposto in Q1 e non faccio
nient'altro.
Qual è il linguaggio di questa macchina?
È vuoto. Quindi il linguaggio
di questa macchina è vuoto.
Ok?
È vero, o no, che questa macchina
ha cambiato stato ad ogni passo? Sì, ha
fatto un passo solo e ha cambiato stato.
Quindi questa macchina appartiene alla
proprietà. Ok? Guardate quest'altra
macchina.
Che fa questa macchina?
sta legge il primo simbolo, tiene la
testina ferma e sta in Q0. Questa
macchina accetterà mai qualcosa?
No, perché non entrerà mai nello stato
accettante. Qual è il suo linguaggio?
Vuoto. Questa macchina cambia stato a
ogni passo, no? Quindi sono due macchine
che hanno che riconoscono riconoscono lo
stesso linguaggio.
Una appartiene alla proprietà e l'altra
non appartiene alla proprietà. Di
conseguenza quella non è una proprietà
semantica. Non possiamo evitare il
teorema di Rice. Ok. Bene,
dobbiamo attaccare il problema in
maniera diretta. Ok,
allora
possiamo
met
Ok, partiamo da una cosa più semplice.
Riusciamo a collocarlo in R questo
linguaggio? Cioè, esiste una macchina
che almeno è in grado di rispondere sì
in tempo finito
per
la definizione
Ah.
No,
sì.
E secondo me è possibile quello che
parla perché non avendo di informazioni
su il linguaggio che riconosce la
macchina magari spazio che dell'arrest
non possiamo definire appunto se
terminerà. Sì, sì, sì, possiamo
collocarla perché a questo punto mi sa
che la gli appunti di Couti non sono
precisi e ci sto pensando ora.
questo linguaggio. Possiamo rispondere
no in tempo finito.
È più sofisticato di quello che avevo
pensato. Prego.
Possiamo eh guardare la
tr lazione della macrica e verificare
che ad ogni cinquina sue passaggio di
stato lo stato inizia a essere diverso
dal stato
dire che se fa un passo deve cambiare
stato.
M
potrebbe, Devo pensare un attimo alla
funzione di transizione.
Forse si potrebbe fare in quel modo,
però sicurissimo non ne sono. Ci devo
pensare
che senò si può fare sicuramente una
riduzione, almeno quello che proponeva
sugli appunti Calauti era una riduzione
da Lu.
Probabilmente sì, eh, cioè probabilmente
il problema è più semplice di quello che
pensassi, cioè si può
sì.
Il primo c'era anche il globale, lo
secondo c'è invece che stato uno stato
l'ultimo tipo
ogni volta c l'ultimo stato quella.
Sì, cioè la macchina si può stimolare
sono uguali usiamo, quindi se può dire
che
puoi metter scusiare
secondo c'è un naso che scrive lo stato
basta
uguali vo scritto con Sì, una cosa del
genere, cioè si può fare una situazione
così sappiamo dire quante nota che
abbiamo appena puntualeison soltanto sì
quello si fare
non in maniera
allora la cosa che avevo pensato è una
cosa simile per rispondere no in tempo
finito è che noi possiamo gessare una
stringa
w e poi eseguire la macchina M tramite
un simulatore, il simulatore universale
e vediamo se sta cambiando stato. Appena
vediamo che non cambia stato da un passo
all'altro, possiamo dire no, questa
macchina è una macchina tale per cui ci
sta una stringa che mentre sta
processando non cambia di stato. Però la
soluzione del vostro collega mi sembra
molto più furba, cioè probabilmente si
può verificare solamente la funzione di
transizione, cioè se non ha un loop
questa cosa però non so se è una
condizione sicuramente una una
condizione sufficiente, non so se è una
condizione necessaria, cioè che
cosa potrebbe accadere che i loop Ok,
non è una condizione necessaria. Perché
il loop potrebbe stare su stati che la
macchina non vede mai. Quindi, se io
faccio un'analisi sintattica della
funzione di transizione, io vedo, ok, se
non ci stanno degli anelletti, ok, posso
dire questa macchina cambia stato ogni
volta e questo ci sta. Però la funzione
di transizione, se ce la immaginiamo
come il grafo, potrebbe avere degli
anelletti in parti che durante il
calcolo in realtà la macchina non
raggiunge mai. Ok? Quindi non possiamo
fare una semplice analisi di di della
funzione di transizione, però ottima
idea, mi piace. Grazie. Prego.
Può essere fatto nel caso di un rook in
una macchina non è terminista, nel senso
che se appare un però io ho anche una
scelta, un'altra scelta che però però
prendo sempre quella essenzialmente. Sì,
sì, esattamente esattamente. Ottima
osservazione. Anche questa è un'ottima
osservazione. Ok, quindi ottime idee. Ci
hanno fatto ragionare, quindi mi sa che
gli appunti di Calauti non sono corretti
su questo perché ora ci sto pensando.
Quindi questa macchina
potrebbe essere co rebbe
essere un linguaggio co re e non è re
perché siamo in grado di rispondere no
in tempo finito, ma non di rispondere
sì. L'intuizione qual è? È che per
rispondere sì dovrei essere sicuro che
su tutte le stringhe cambiamo sempre
stato. Quante sono tutte le stringhe?
Sono un po' tantine e non ce la
facciamo, ok? Però possiamo rispondere
no. nel senso che gesso la stringa
sfigata,
faccio la simulazione. Se durante la
simulazione noto che da un passo
all'altro lo stato non cambia, rispondo
no. Ok? Quindi questo è un problema
actually incoerrente, più sofisticato di
quello che pensassi. Ok? Dobbiamo
dobbiamo adesso dimostrare che non sia
in R. Ok?
Dove sta?
E la riduzione
che propone Calauti è una riduzione,
quindi abbiamo che il linguaggio
dell'esercizio
era 5, il linguaggio dell'esercizio 5
appartiene a coerre.
Dobbiamo adesso dimostrare che il
linguaggio dell'esercizio
5 non appartiene ad R. Come facciamo a
tirare fuori i linguaggi da R? Se non
possiamo usare il teorema di Ris?
Ci serve una riduzione e ci serve un
linguaggio che non stia in R. Ok?
Quindi, se riduciamo
un linguaggio
non noto ancora al linguaggio
dell'esercizio 5, allora noi siamo in
grado di dimostrare che il linguaggio
dell'esercizio 5 non appartiene a eh
Rosta
è
riduzione da L1, che è un linguaggio non
decidibile. Ok?
Qual è un'istanza per il linguaggio Lu,
ve lo ricordate?
Coppia macchina stringa.
Una coppia macchina stringa. Ok.
Cos'è un un'istanza del linguaggio di
questo esercizio?
Una macchina la chiamiamo N per non
confonderci, ok? Quindi dobbiamo
trasformare la coppia MW nella macchina
nella macchina
N. A questo punto sfruttiamo
l'osservazione fatta dal nostro collega.
Ok?
Eh, ce la dobbiamo fare un quarto d'ora.
Ok.
Allora, quello che ci serve, quello che
ci serve ora è inventarci una
trasformazione che partendo da una
coppia macchina stringa MW, arriva a una
macchina N tale per cui
m se M accetta W N cambia sempre stato
durante la sua computazione. Se m non
accetta w, allora c'è un momento in cui
n
cambia stato. Sì, ora vi ricordo la
soluzione sugli appunti. Sì, lui non
menziona co re, però lui menziona che il
complemento sta in re, ok? Quindi è più
o meno la stessa cosa. Alr?
Allora, per fare questa trasformazione
utilizziamo l'osservazione fatta dal
nostro
una condizione sufficiente
affinché una macchina
cambi sempre stato durante la
computazione e che non ci siano degli
anellini sugli stati. Ok? quella
condizione sufficiente, abbiamo visto
che non è necessaria perché potrebbero
esserci, ma la macchina di fatto
transisce sempre.
Però se noi costruiamo una macchina tale
per cui abbiamo sempre
che cioè non ci stanno mai gli anellini,
noi abbiamo che quella macchina
sicuramente transisce ad ogni passo. Ok?
Allora,
l'idea è questa qua.
No, prendetevi qualche minuto per
pensare, poi la facciamo assieme. Sì,
solo perché
il
avreste preso un pezzo dei Sì, sì. No,
no, no. Per me gli esercizi non sono
bianconero, cioè o tutto o niente. Se ne
fate un prezzo vi prendete un pezzo di
conti, eh.
un po' perché laità
a partire
In questo modo si scamberebbe qualche
Ok, vediamolo assieme, senò non finiamo
per tempo e io alle 11 devo scappare.
Avete idee
Laud non sente c'è un casino di fondo di
usare come noti per N gli stati di N,
diciamo e man mano che n leggo vada
sempre avanti. Se si blocca senza
accettare crea un cambio.
Sì. Ok. Cioè l'idea è che dobbiamo
massaggiare la funzione di transizione
di m. Allora, la facciamo così,
la facciamo a disegnino come abbiamo
fatto come al solito. Ok?
Ehi, sparito,
spario. Allora, questa è N.
Allora, n riceve un input X
che ignora,
ce ne freghiamo completamente.
Cosa fa N invece?
N si scrive su nastro W
e quindi cambia stato ogni volta, ok?
Dopodiché
esegue m'
su WB, dove m' è un derivato di M.
Mo vi dico si ottiene M prim'. Questa
cosa che io chiamo M' la troverete sugli
appunti di Calauti chiamata M2. Ok? È la
stessa cosa. Eh,
allora funziona sostanzialmente così.
Allora, il senso è questo. Noi prendiamo
la funzione di transizione di m
e andiamo a spezzare gli anelli. Questa
è la cosa, cioè prendiamo il suo grafo
e andiamo a vedere dove stanno gli
anellini sui nodi. ogni anello, che ne
so, tipo F.
Abbiamo Q, abbiamo un anello del genere,
tipo leggo alfa, scrivo beta e faccio
una certa cosa. Questa cosa la
traduciamo così. Q
transisce in Q'
Q prim.
leggo alfa, scrivo beta e faccio una
certa cosa. Poi di qua scrivo alfa,
scrivo beta e faccio una certa cosa. Ok?
Quindi lo spezziamo in due. Dopodiché
dobbiamo replicare
tutta la roba uscente da qua. La
mettiamo uscente da qua.
Ok?
Tutto qui. Quindi m'
è
la stessa cosa di M, solo che gli anelli
glieli spezziamo, li spezziamo in due
stati, in maniera tale che invece di
ritransire nello stesso strato
oscilliamo.
Siccome oscilliamo non sappiamo se
finiamo in Q in Q',
le possibilità di uscita da Q devono
essere replicate in Q', ok? Quindi m'
cambia solo in questa cosa. L'ultima
cosa che facciamo è questo.
Se la macchina M' accetta, noi
accettiamo. Se la macchina M' rifiuta
che cosa? W. Eh, perché ha un input
fissato, controlla sempre la cosa, ci
muoviamo in uno stato,
dov'è questo? E cicliamo su quello
stato. Ok?
chiaro che fa quindi m' e fa la stessa
cosa di m. L'unica cosa è che gli
spezziamo gli anelli.
Poi ovviamente dobbiamo introdurre
quelle cose aggiuntive in maniera tale
che il punto funzioni. Ok?
Supponiamo che m
accetti w. Adesso dobbiamo dimostrare
che m accette w. Ok?
Eh sì, dobbiamo dimostrare che la
riduzione funziona. Supponiamo che m
accetti w.
Se m accetta w
per come è costruita la macchina n che
ignora completamente il proprio input,
quindi il proprio input può essere
qualsiasi cosa. Dopodiché che fa?
Processa tramite M' W, ma M' è stata
fatta apposta. per simulare M, cioè per
comportarsi come M, ma per cambiare
stato ogni volta. Quindi se M accetta W,
la macchina n, qualsiasi sia il suo
input, che se ne frega di qual è il suo
input, transirà ogni volta in stati
diversi perché sta eseguendo m su w
nella variante in cui io cambio ballo
sempre. Ok? A questo punto la macchina
N, se M accetta W è una macchina che
transisce
ad ogni passo stato su qualsiasi string
input. Ok?
È chiaro?
Supponiamo ora che M non accetti W.
N è fatta comunque in questo modo. È una
macchina che se ne frega del proprio
input. simula tramite la copia m' di m
il funzionamento di m su w. Siccome m
non accetta w,
a un certo punto noi ci muoviamo verso
lo stato no e criamo là sopra. A quel
punto avremo una sequenza di stati uno
uguale all'altro. Ta ta ta. E quindi la
macchina non appartiene alla proprietà.
il quindi il linguaggio è indecidibile
per una riduzione da N. Ok?
Quali altri possono essere esercizi di
questo tipo? Vi do una proprietà, c'è il
teorema di Rise e mi dite il per il
teorema di Rise la questo linguaggio non
sta in R, però sta in R perché mi
riuscite a inventare una macchina. Vi
ricordo che il teorema di Rice tira
fuori da R, non da R. Ok?
Alri
del genereamo un altro di
form No, qua ci deve pensare, non ne
abbiamo visti tanti indec
H, potrebbe essere utile usare il
teorema di Rise eccetera. Ok? Quindi da
pensare un po' sull'indecidibilità dei
fronte.
E adesso ci control
ci concentriamo sull'ultimo che è quello
più punti ed è più divertente.
Questo non appartiene ad R, appartiene a
co sta in co e non sta in R. Ok?
Alright. Ecco qua il problema, quello
più
rognoso.
Ok, vabbò anche l'altro semplicissimo,
non è
domanda 6, sette punti, abbiamo
mezz'ora, ci possiamo pensare assieme.
Considerare il seguente problema
transazioni.
In un sistema di base di dati si vuole
gestire l'esecuzione di transazioni
concorrenti.
In generale più transazioni possono
chiedere di scrivere sugli stessi dati e
occorre perciò una politica di
accettazione delle transazioni che eviti
il problema di coerenza.
Si vuole accettare l'esecuzione del
maggior numero possibile di transazioni,
avendo cura di non accettare
contemporaneamente due transazioni che
chiedono di scrivere sullo stesso dato.
Ok?
Questo è lo scenario. Definizione
un'istanza Idazioni.
E qua ho scritto male. Ah no, in
un'istanza I TD,
quindi le istanze di transazioni sono
una quadrupla.
T è l'insieme delle transazioni, quindi
in T ci sarà T1, T2, T3, T4 e così via.
D è un insieme di dati D1, D2, D3, D4,
D5, bla.
A è un insieme di triple di richieste,
cioè in A viene scritto quale
transazione vuole cosa vuole fare su un
certo dato, ok? e K è un intero
positivo.
L'insieme A, quindi abbiamo T le
transazioni, D i dati, Ano le richieste
che le transazioni fanno sui dati.
L'insieme A è costituito da triple T di
alfa dove alfa appartiene ad R o w
purtroppo è piccolino,
indicanti che la transazione t accede in
lettura se alfa uguale a R o in
scrittura se alfa è = a W al dato D. Ok?
Quindi abbiamo ste tri in Ati. Dice la
transazione 5 vuole scrivere sul dato 8
in lettura, la transazione 8 vuole
scrivere sul dato 15 in scrittura. Ok?
un'istanza i di transazioni è sì, se è
solo se è possibile accettare un insieme
x di transazioni tale che la cardinalità
di x è al - k
ogni coppia di transazioni TTJ che
stanno in X, T e TJ non accedono a uno
stesso dato, ah, qua me lo sono
dimenticato, a uno stesso dato in
scrittura. Ok, qua ho perso un
pezzettino che l'ho riscritta
stamattina.
No, no, no, no. Eh, che perdete tempo,
lasciate stare. Mi fido che sappiate
copiare la traccia.
Eh, sì, come mo me la ripiglio eccetera.
Vabbè. Ok.
È chiaro il contesto? due domande. La
prima, discutere la complessità del
problema transazioni e qui ve lo dico
io. Suggerimento riduzione da
indipendetta. Ok? Allora, qui nella
traccia c'è un problema, poi ve la ve la
aggiusto.
Se due transazioni vogliono scrivere in
vogliono accedere in lettura allo stesso
dato, non c'è problema. Il problema è se
accedono in scrittura, ok? che non
possono essere schedulate assieme.
Quindi la domanda è: è possibile
prendere un sottoinsieme
delle transazioni di taglia almeno k
tale che non ci siano conflitti in
scrittura fra di loro.
Ok?
Allora iniziamo assieme. Qua vi dico
discutere la complessità, suggerimento,
riduzione da indipendetta.
Partiamo dalla parte facile, membership
in NP.
Come si fa a dimostrare che il problema
delle transazioni è un problema in NP?
Sì, prego. Sì, faccio la gess del
sottoinsieme e poi semplicemente basta
controllare che se ci sono delle
scritture che non combattono sulla
stessa Esattamente. Quindi guess
polinomiale. Perché il guess è
polinomiale?
Perché eh prendo una parte di quello che
è già nell'input. Prendiamo una parte di
quello che è già nell'input, quindi è
polinomiale. Il check è polinomiale
perché praticamente dobbiamo fare un for
su tutte le coppie di transazioni e
vedere se c'è qualche coppia di queste
che accedono in scrittura allo stesso
dato. Ok?
Se questa cosa accade rispondiamo di no.
Se non accade rispondiamo di sì. Ok?
Quindi basta di essare un branch in cui
la cosa fa sì, va su va sulla risposta
sì. Di conseguenza questo problema sta
in LP. Ok? Dobbiamo ora andare alla
parte più sofisticata, dimostrare che il
problema è NP alo e la riduzione si fa
da indipendetti. Quindi ci ragioniamo
assieme perché vorrei darvi uno schema
di ragionamento.
Quindi abbiamo independent set
ridotto polinomialmente al problema
delle transazioni. Ok?
Quali sono le domande che io mi pongo
quando faccio le riduzioni? Cos'è la
prima cosa che mi chiedo? Qual è il
problema sorgente? che sono sbagliate.
Il problema sorgente è indipendette.
Qual è il problema a destinazione? È il
problema delle transazioni. Ok? Che
cos'è un'istanza del
dell'indipendent set?
coppia GK, una coppia GK
dove G è un grafo non orientato, K è un
intero. Che cos'è una un'istanza per il
problema delle transazioni? T
T D A Uso un'altra lettera per non avere
sovrapposizione, la chiamo L. Ok?
Il graf da cosa è fatto? È fatto da un
insieme di nodi e un insieme di archi.
Ok? Cos'è un'istanza? Sì.
Cos'è un'istanza sì? Ragioniamo assieme.
Cos'è un'istanza sì per il problema
dell'indipendent set?
Sì, esiste
sì. Cos'è un'istanza? Sì, per il
problema delle transazioni
insieme
eale che le transizioni non acceder lo
stesso dato.
Esattamente. Ok.
quando dobbiamo risolvere il problema
dell'indipendent set, ok? Perché ora
quello che dobbiamo fare è inventarci un
mapping dal problema dell'indipendence
set al problema delle transazioni. Ok?
Allora, abbiamo visto questo modo di
ragionare un pochino, l'abbiamo visto
ieri quando pensavamo a mental cycle che
è questo. Focalizziamoci sul problema
delle dell'indipendetta.
Se noi vogliamo calcolare una soluzione
dell'indipendenza
a finale, che dobbiamo fare?
Perché noi dobbiamo mappare,
no, istanze su istanze, quindi dobbiamo
avere un'idea più o meno di come si
mappano soluzioni distanze su soluzioni
di stanze. Sì, prego. Avremo bisogno di
insieme di noi. Mh. Quindi per
l'indipendent set, quando noi vogliamo
sostanzialmente stabilire una soluzione,
come fa? Che dobbiamo fare?
Scegliere se nodo a dato un nodo
dobbiamo stabilire, ma sto nodo
nell'indipendenza ci deve stare o non ci
deve stare?
È chiaro?
Chiaro il ragionamento che sto facendo?
Cioè io mi sto chiedendo che faccia
hanno le soluzioni di dipendent o più in
generale del problema di partenza.
Dopodiché io mi chiedo che faccia hanno
le soluzioni del problema di arrivo. Se
vogliamo risolvere il problema delle
transazioni
stringendo che che dobbiamo decidere
quali transizione
e quali no. Cioè, quindi da un lato
dato un nodo, dobbiamo dire il nodo fa
parte dell'indipendent set, il nodo non
fa parte dell'indipendent set.
Dall'altro lato, data una transazione
dobbiamo stabilire se la transazione
viene schedulata in esecuzione o la
transazione non viene
schedulata in esecuzione. Ok? Quindi da
un lato nodo lo prendo, non lo prendo,
dall'altro transazione la prendo, non la
prendo.
Che ci dice questo? E magari un mapping
utile è
perché noi dobbiamo partire da un grafo,
dobbiamo ottenere transazioni. Quindi
ste transazioni noi da dove ce le
andiamo a pescare?
Perché vi ricordo che il trucco è sempre
questo, è sempre quello, cioè noi
vogliamo prendere un'istanza di
indipendent,
trasformarla in un'istanza di
transazioni per darlo a un solutore
esterno, in maniera tale che noi ci
pigliamo la soluzione data dal solutore
e noi la possiamo riutilizzare per il
problema sul grafico. Cioè noi dobbiamo
simulare tramite le transazioni il
problema sul grafoo di partenza. Quindi
se da un lato ciò che io per i nodi devo
stabilire se il nodo lo prendo o non lo
prendo e dall'altro il solutore di
transazioni dovrà stabilire se una
transazione è la schedula o non la
schedula.
Che genere di intuizione possiamo avere
sulla trasformazione di questo grafo
verso l'istanza delle transazioni?
Prego. Associamo un nodo a una
transazione. Associamo un nodo a una
transazione. Ne siamo sicuri? No, ci
proviamo. Ragazzi, qua la cosa è molto,
cioè è veramente così. Non è che noi lo
sappiamo da principio se una cosa
funzionerà o meno, ok? Possiamo avere
delle intuizioni e la dimostrazione che
poi ci dirà una cosa funziona, la cosa
non funziona.
Ma non è perché non siete in grado, ma
perché è così che si fa. Si fa a prove.
uno dal principio non lo può sapere e
non possiamo fare altro che procedere in
questo modo. Ok?
vor di andare
oppure cioè se vuole sapere da me la
reduzione se questa ricorretta fare un
altro perché no sapere no sapere se la
riduzione è corretta quella è una cosa
che
sta a voi
perché sta a voi tentare di no pensare a
una riduzione. Ok, allora
ok, abbiamo questo grafo con un numero
che è un'istanza di indipendenza. Ok,
abbiamo quel grafo, il K e 3. Allora,
la soluzione proposta dal nostro collega
che si basa tutto su un'intuizione. Date
un nodo, sì. Data una transazione, sì,
no. Ma sai che io i nodi le faccio
diventare transazioni, ok? Quindi questo
è il nodo 1, questo è il nodo 2, questo
è il nodo 3, questo è il nodo 4 e questo
è il nodo 5. Ok? Quindi la
trasformazione si basa così, si fa così.
Per ogni nodo del grafo
generiamo una transazione. Quindi avremo
che cosa? T1, T2, T3, T4, T5
e ce lo scriviamo. per ogni
nodo
V con i eh
V con i del grafo,
genero
una transazione
T con i, ok?
Ok,
allora
tempo c
che caratteristiche hanno le soluzioni
del problema dellindipendet, quindi come
la generiamo è stabilire se un nodo fa
parte dell'indipendet o meno. Però, che
caratteristica deve avere una soluzione?
Per stabilire quell'insieme è veramente
un indipendentetto o quell'insieme non è
un indipendentetto?
I nodi non devono essere i nodi non
devono essere agganciati. Ok? Quindi una
una soluzione per essere sensata per
l'indipendenza deve essere un insieme di
nodi che non sono agganciati. Ok? Che
caratteristica deve avere una soluzione
per transazioni per essere senzata?
non devono scrivere lo non devono
scrivere sullo stesso dato. Quindi da un
lato abbiamo nodi
non agganciati, dall'altro abbiamo
transazioni che non scrivono sullo
stesso dato. Da un lato abbiamo nodi che
non sono agganciati dallo stesso arco,
dallo stesso arco, dall'altro non
abbiamo transazioni che scrivono sullo
stesso dato. e facciamo prego. Ogni che
connette due nodi A e B, le transazioni
A e B scrivono su. Ok, quindi ottima
l'idea. Avete sentito? Se i due nodi
sono agganciati allo stesso arco, avremo
che quelle due transazioni
scriveranno sullo stesso dato. Quindi
dobbiamo generare i dati, l'insieme Di.
Come lo generiamo?
un c un dato per ogni arco. Un dato per
ogni arco.
Quindi questo che cos'è?
Chiamiamo A B C D E. Quindi abbiamo
questo è T. L'insieme dei dati è
DAB
DC
D.
Ok. abbiamo un dato per ogni arco,
quindi per ogni
arco
di con i del grafo.
Per ogni arco è con i del grafo,
generiamo
un dato
di,
ok?
Alri, guardate l'istanza di transazioni.
Dobbiamo ancora generare a
ok l'insieme delle richieste di lavoro
sui dati da parte delle transazioni. Per
implementare l'idea del nostro collega,
che ci mettiamo in A?
Che triple ci mettiamo?
Prego.
Sì. Allora, mi dà un esempio
di questo esempio qua, qua preso da qui
e due sono necessità
lo stesso dato. Come?
Quindi
T1
vuole accedere al dato A in scrittura
e inoltre T2 vuole accedere al dato A in
scrittura e le generiamo tutte così. Ok?
Quindi per ogni arco per ogni arco
V i
VJ appartenente a E del grafo,
generiamo
le richieste
T
di E quello che vuoi
dobbiamo dare un nome. M m m
uguale EK. Eh, questo è l'arco K. DK
scrittura e poi DTJ
DK in scrittura.
Chiaro?
Abbiamo necessità un secondo, abbiamo
necessità di generare in a triple di
transazioni che chiedono accesso ai dati
in lettura?
No, prego.
Ok,
quindi
T l'abbiamo definito, D l'abbiamo
definito, A l'abbiamo definito,
L che ci mettiamo ad Lug.
L = K.
Ok?
Vi è chiaro come ho ragionato? Io mi
chiedo sempre cos'è il problema di
partenza, cos'è il problema di arrivo,
come sono fatte le istanze del problema
di partenza, come sono fatte le istanze
del problema di arrivo, come faccio? me
lo chiedo, cioè io mi pongo domande
all'interno per stimolare la mia
attenzione a quel tipo di cose perché se
non me lo chiedo io l'attenzione non ce
la pongo. Quando mi dico me lo chiedo
ritengo che ho un dialogo interno, vi
faccio esattamente le domande che vi sto
dicendo. Qual è l'obiettivo di ciò? È
che io mi forzo a porre attenzione ad
alcuni dettagli, senò si perdono per
strada. Ok? Ecco perché mi faccio queste
domande. Qual è il problema di partenza?
Qual è il problema di arrivo, cosa sono
le stanze di partenza? Cosa sono le
stanze di di arrivo? Che faccia hanno le
soluzioni del del problema di partenza?
che faccianno le soluzioni del problema
di arrivo, in maniera tale che posso
avere intuizioni sul machine e poi
dentro c'ho sempre la metafora del io
voglio risolvere il problema di partenza
tramite un solutore del problema di
arrivo. Che istanza gli passo? Come me
la invento? In maniera tale che pure che
fa
i santi mortali e cose strane, una
risposta sbagliata non me la puoi dare?
Questa è l'idea, cioè è il tipo di
ragionamento che porta avanti. Ok? È
chiara com'è avvenuta la trasformazione?
Questa trasformazione
dobbiamo ora dimostrare che trasforma
istanze sì di indipendetti in istanze sì
del problema transazioni e istanze no
del problema di indipendenzetti in
istanze no del problema transazioni. Ok.
Sì. all'esame. Poi dovremmo anche
dimostrare che questa riduzione èamente
polinomiale. Ah, sì, certo. Questa
riduzione si può fare in tempo
polinomiale. Certo, semplicemente
guardiamo il grafo, sputiamo fuori ste
cose e via. Si fa,
no? Basta che dai qualche dettaglio del
tipo dobbiamo ciclare sui sui nodi,
dobbiamo ciclare sugli archi, quindi
stiamo sostanzialmente facendo una
scansione lineare
di di quello di quello che ci sta. Fra
l'altro questa è una riduzione talmente
semplice che il log space non è nemmeno
polinomiale, è una cosa semplicissima.
Ok?
Dobbiamo dimostrare ora che se
l'istanza di indipendence set di
partenza è unistanza sì, allora abbiamo
costruito un'istanza sì di transazioni.
Semplice.
Supponiamo di star partendo da distanza
s indipendent set. Ok?
Ciò significa
che esiste un insieme S
di nodi
in G di taglia almeno K
tale per cui quei nodi non sono
agganciati dai.
Dimostriamo che l'istanza di transazione
ottenuta in quel modo
è un'istanza sì di transazione.
Per dimostrare che è un'istanza sì del
di transazioni dobbiamo far vedere che
dall'insieme T ottenuto in quel modo
possiamo prendere almeno L che è uguale
a K transazioni.
Facciamo così, se il nodo i sta
nell'indipendent Ss,
allora la transazione I viene schedulata
per l'esecuzione.
Ok.
Dobbiamo ora dimostrare che questo
insieme di transazioni
sia siano transazioni che non scrivano
sullo stessi sugli stessi dati.
Innanzitutto, quante sono le
transazioni?
L sono L perché L è uguale a K, ok?
Quindi ne abbiamo a sufficienza.
Dobbiamo dimostrare che non scrivono
sullo stesso dato. Supponiamo per
assurdo che ne esistono due che scrivono
sullo stesso dato.
Per come è stata ottenuta l'istanza di
transazioni tramite la riduzione?
Se ci fossero due transazioni che
scrivono sullo stesso dato, allora
quelli sarebbero relativi a due nodi
collegati da un arco. Ma noi stiamo
partendo da ind dipendenzetti, non è
possibile questa cosa per forza. Quindi
quelle transazioni scrivono sui dati
distinti da cui siamo arrivati a
un'istanza sì di transazione.
Sì, prego. E lei adesso ha l'assurdo. Se
fossimo parti direttamente dicendo che
per costruzione
eh l'Oro rappresenta la scrittura sullo
stesso lato? Va bene.
Ok. L'importante è che siete abbastanza
formali, che organizzate in maniera
precisa e che le frasi non sono
una allevante e l'altra opponente, cioè
che si capisca che ci sia un flust di
ragionamento. Prego.
Sì, certo.
L'unica cosa,
non potete usare il vicino. vicino di
calcolatrice
no calcolatrici
però cioè da ultimo pezzo e poi
chiudiamo. Dobbiamo dimostrare che se
siamo partiti da un'istanza no di
independent set arriviamo a un'istanza
no di transazione. Questa cosa come lo
dimostriamo? Dimostriamo che se siamo
arrivati a un'istanza sì di transazioni
era perché stavamo partendo da
un'istanza sì di indipendence set. Ok?
Supponiamo di essere arrivati a
un'istanza sì di transazioni.
Quindi esiste un insieme X
di transazioni di l transazioni che non
vogliono scrivere sullo stesso dato. Ok?
Da x generiamo un independent set
candidato per g in maniera molto
semplice. Se la transazione I sta in x,
allora il nodo I sta nell'insieme S.
Candidato S per l'indipendenza.
Quanti nodi ci stanno in S?
L. L che è uguale a K. Quindi in Sno K
nodi, quindi dentro questo insieme Solo
sufficientemente grosso di nodi. Come
facciamo a essere sicuri che sia quello
l'indipendetto?
Dimostrazione simile. Supponiamo per
assurdo che ci sono due nodi agganciati
da un arco in S.
Se questo fosse il caso, allora vorrebbe
dire che le rispettive due transazioni,
per come è stata costruita l'istanza
delle transazioni,
volevano scrivere sullo stesso dato, ma
noi stavamo partendo dal fatto che x era
una soluzione sensata per transazioni,
quindi questo non è possibile, da cui
l'istanza di partenza, l'indipendenza è
un'istanza simile. Questo che cosa ci
dimostra? ci dimostra che esiste una
riduzione da indipendente al problema
delle transazioni e quindi il problema
delle transazioni è un problema NP alo e
siccome avevamo che era anche in NP il
problema delle transazioni è un problema
NP completo. Abbiamo tempo per l'ultima
domanda.
Ok, me la ricordo io. Qual è la
complessità di calcolare
il numero più grande di transazioni che
si possono eseguire contemporaneamente?
Dobbiamo fare quella storia
dell'oracolo, come abbiamo visto nelle
ultime due lezioni. Come facciamo?
sapendo che abbiamo un solutore, no, per
il problema delle transazioni. Ora
sappiamo che il problema delle
transazioni è un problema NP completo,
quindi possiamo chiamare un oracolo in
NP per risolvere lui. Come si fa? Come
si fa?
Prego. Ci può avere un oracolo che
risolva transazioni.
Un oracolo che risolva transazioni.
Sappiamo che il massimo numero di
transazioni sarà la cardinalità. Sì.
Quindi proviamo
a scendere o facciamo una ricerca
binaria. Ok. Se abbiamo un oracolo che
risolve la versione decisionale di
transazioni,
noi chiediamo in continuazione, siccome
il massimo numero di transazioni che
possiamo schedulare assieme la taglia di
T,
ok? Iniziamo e chiediamo all'oracolo,
riesco a schedulare
taglia di t/zi
eh transazioni e lui ci dice sì, no? In
base alla risposta io mi calcolo questo
valore massimo. Questa cosa qui in quale
classe pone il problema di ricerca?
FP
NP. Perché l'oracolo è in NP? Quante
domande facciamo all'oracolo?
Log n. Quindi la classe di complessità
del problema di ottimizzazione è FPL
np o di log n.
Sì, mettere log della taglia di t o log
n è indifferente in questo caso. Sì, sì,
in genere è proprio una questione di
notazione. Si scrive log n è una lo
chiamiamo così. Ok. Ultimi minuti.
Ultimi minuti. In realtà con questo
concludiamo.
Fate magari online le risposta anche di
Sì. Yeah.