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