dna computing - Università degli Studi di Verona
Transcript
dna computing - Università degli Studi di Verona
DNA COMPUTING Modelli di calcolo non convenzionali Prof. Vincenzo Manca Dispensa a cura di Marco Devincenzi 1 Indice 1 Introduzione 4 2 Fondamenti di DNA 2.1 La molecola DNA . . . . . . . . . . . . . . 2.2 Il desossiribosio . . . . . . . . . . . . . . . 2.3 Logica della concatenazione della molecola 2.4 Triangolo monomerico . . . . . . . . . . . 2.5 Elica bilineare astratta . . . . . . . . . . . 2.6 Forme bilineari . . . . . . . . . . . . . . . 2.7 Notazione doppia stringa . . . . . . . . . . . . . . . . . DNA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 5 7 8 13 15 16 17 3 Operazioni sul DNA 22 3.1 Operazioni di base: mix, split, length(elettroforesi), separate, synthetize . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 3.2 Denaturazione e Rinaturazione del DNA . . . . . . . . . . . . 26 3.3 Amplificazione con PCR . . . . . . . . . . . . . . . . . . . . . 27 3.3.1 Alberi PCR . . . . . . . . . . . . . . . . . . . . . . . . 30 3.4 Altre operazioni: Ligasi, Fish, Infix-Suffix . . . . . . . . . . . 34 3.5 Amplificazione con clonaggio molecolare . . . . . . . . . . . . 36 3.5.1 Vettori di clonaggio . . . . . . . . . . . . . . . . . . . 36 3.5.2 Enzimi di restrizione . . . . . . . . . . . . . . . . . . . 37 3.5.3 Plasmidi . . . . . . . . . . . . . . . . . . . . . . . . . . 39 3.5.4 Algoritmo di clonazione . . . . . . . . . . . . . . . . . 40 3.6 Sequenziamento . . . . . . . . . . . . . . . . . . . . . . . . . . 46 3.6.1 L’energia di attivazione delle reazioni chimiche . . . . 46 3.6.2 Gli enzimi catalizzatori . . . . . . . . . . . . . . . . . 47 3.6.3 ATP . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 3.6.4 Metodo chimico . . . . . . . . . . . . . . . . . . . . . . 48 3.6.5 Metodo enzimatico di Sanger . . . . . . . . . . . . . . 48 3.6.6 Pyrosequencing . . . . . . . . . . . . . . . . . . . . . . 50 4 Calcolare con il DNA 4.1 L’esperimento di Adleman (1994) . 4.1.1 Extract Model . . . . . . . 4.2 Algoritmi per 3-SAT . . . . . . . . 4.2.1 Mix&Split Model . . . . . . 4.2.2 Algoritmo di Lipton . . . . 4.2.3 SAT come rete di contatto . 4.2.4 Algoritmo di Jonoska . . . 4.2.5 Algoritmo di Sakamoto . . 4.2.6 Algoritmo di Manca . . . . 4.3 Considerazioni . . . . . . . . . . . 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 53 54 56 56 57 58 59 60 61 63 5 XPCR (Cross Pairing PCR) 64 5.1 Estrazione con XPCR . . . . . . . . . . . . . . . . . . . . . . 65 5.1.1 Considerazioni . . . . . . . . . . . . . . . . . . . . . . 66 5.2 Ricombinazione con XPCR . . . . . . . . . . . . . . . . . . . 67 6 Teoria dei Linguaggi Formali (FLT) 6.1 introduzione . . . . . . . . . . . . . . . . . . 6.2 Stringhe e linguaggi . . . . . . . . . . . . . 6.2.1 Gerarchia di Chomsky . . . . . . . . 6.2.2 Classi di Chomsky . . . . . . . . . . 6.2.3 Inclusioni . . . . . . . . . . . . . . . 6.3 Risultati fondamentali . . . . . . . . . . . . 6.3.1 Teorema di universalità di Chomsky 6.3.2 Teorema di Kleene . . . . . . . . . . 6.3.3 Teorema di Ginzburg . . . . . . . . . 6.3.4 Teorema di Savich . . . . . . . . . . 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 68 68 69 70 71 72 72 74 76 77 1 Introduzione L’idea iniziale del DNA computing è molto semplice: calcolare, in termini astratti, significa trasformare dati iniziali in risultati, ma dati e risultati sono sempre esprimibili tramite stringhe di un qualche linguaggio di rappresentazione (teorema fondamentale della digitalizzazione). In particolare il DNA computing è un ottimo strumento per risolvere problemi intrattabili. Un problema è intrattabile se non si conoscono algoritmi polinomiali in tempo che lo risolvono. Un problema viene classificato NP se può essere risolto in tempo polinomiale da una macchina non deterministica, infine un problema è NP-completo se ogni altro problema nella classe NP può essere ridotto ad esso in un tempo polinomiale (riduzione in tempo polinomiale). I problemi NP-completi sono considerati i più difficili, cosı̀ se si dimostra che ogni problema in NP è intrattabile allora tutti gli NP-completi lo sono, e se ogni problema NP-completo può essere risolto in tempo polinomiale allora tutti i problemi nella classe NP diventano trattabili. Un computer non deterministico può essere simulato tramite filamenti di DNA utilizzando tecniche di biologia molecolare per implementare le operazione su di esso. in teoria i problemi intrattabili possono essere risolti in tempo polinomiale tramite un qualche tipo di DNA computer. Adleman, con il suo esperimento del 1994, risolse una istanza del problema del cammino Hamiltoniano (problema NP-completo) in tempo polinomiale utilizzando il DNA come macchina di calcolo. Successivamente sono stati risolti altri problemi NP-completi come SAT, indipendent Set e 3-colorabilità. Come vedremo, per poter effetuare un tale tipo di elaborazione sono necessarie diverse operazioni biologiche tra cui: Separazione (melting), Accoppiamento (annealing), Extract, Amplify, Merge, Elettroforesi su gel, Append, Split. Tuttavia gli algoritmi implementati con queste operazioni biologiche non sono esenti da errori. Cause di errori possono essere l’amplificazione PCR che non è al cento per cento efficiente, il graduale deterioramento del DNA e lo schema di codifica dell’istanza del problema: infatti se una codifica contiene sottostringhe, che anche in modo approssimato coincidono con sottostringhe di un’altra codifica, allora l’input iniziale potrebbe essere compromesso. Altra limitazione sono la lunghezza dei filamenti; grandi istanze di un problema richiedono spesso filamenti molto lunghi per una corretta codifica e c’è un limite alla lunghezza che può essere separata in modo efficiente con elettroforesi. 4 2 Fondamenti di DNA Ciò che contraddistingue in modo assoluto la materia vivente è che la sua complessità risulta caratterizzata in modo preciso e si ripete in tutti gli individui di una data specie. La complessità del mondo inorganico è invece casuale, per cui due sistemi inorganici non si ripetono mai in modo identico, anzi, la probabilità che ciò si verifichi diviene tanto più remota tanto più complesso è il sistema. L’esistenza di questa complessità comporta che nella materia vivente sia presente una enorme quantità di informazione, proprio per sapere come deve essere fatta e come deve essere duplicata. Tale informazione è registrata in un particolare composto, l’acido desossiribonucleico (DNA). La capacità di duplicare l’informazione genetica è una caratteristica fondamentale per generare nuovi organismi, in modo che ogni nuovo individuo riceva la stessa informazione posseduta dai genitori. Come vedremo la struttura stessa delle molecole di DNA, costituite da due filamenti che sono uno lo stampo dell’altro, offre il modello con cui tutto questo può realizzarsi. 2.1 La molecola DNA Il grosso del peso di una cellula è rappresentato da molecole di grandi dimensioni, costituite quindi da migliaia di atomi dette macromolecole. Esse sono rappresentate, essenzialmente, da acidi nucleici e proteine. Tali molecole ne assicurano la struttura e il funzionamento. in particolare gli acidi nucleici svolgono le funzioni di contenere e trasmettere l’informazione genetica. Le varie proteine invece costituiscono la struttura stessa della cellula e svolgono tutte le funzioni fondamentali della materia vivente. In altri termini gli acidi nucleici, ed in particolare il DNA, costituiscono il supporto materiale nel quale è registrato il genotipo di un individuo (informazione genetica), e le proteine sono la base del suo fenotipo cioè la concretizzazione di tale informazione. Una molecola di DNA è una sequenza di nucleotidi che, dal punto di vista della loro struttura chimica, risultano costituiti da tre porzioni legate tra di loro da legami covalenti: zucchero, acido fosforico e base azotata. Le basi sono le uniche che portano l’informazione e sono di quattro tipi (Adenina, Timina, Guanina, Citosina), mentre le altre due parti fungono da supporto: la base azotata legata allo zucchero costituisce un nucleoside, il nucleoside, legato al fosfato, costituisce un nucleotide. La molecola è composta da una catena di zuccheri (Z) legati tramite il gruppo fosforico (P): ...Z P Z P Z P...; in particolare si hanno due file parallele (binario) e ogni fila possiede un orientamento intrinseco. Le due file sono legate da traversine che contengono l’informazione genetica. Tali traversine sono composte da basi azotate (B) che obbediscono al principio di Complementerietà (regola di Chargaff): A 5 (Adenina) lega con T (Timina) e C (Citosina) lega con G (Guanina). Si tratta di legami a idrogeno tra le coppie di basi che presentano una giusta disposizione dei gruppi donatori e accettori degli elettroni di valenza; questo si verifica solo se una adenina si trova di fronte ad una timina (due legami a idrogeno) e una guanina di fronte ad una citosina ( tre legami a idrogeno). Per tale motivo, le coppie adenina-timina (A-T) e guanina-citosina (G-C) vengono dette coppie di basi complementari. Inoltre come vedremo le due catene hanno orientamenti opposti: si dice che hanno orientamento antiparallelo. Si tratta ora di comprendere come questi vincoli strutturali imposti dalla Z P Z P Z B B’ B B’ B B’ Z P Z P Z Figura 1: Catena nucleotidi doppia catena si concilino con la funzione di trasportare l’informazione del materiale genetico. La sequenza nucleotidica, e quindi l’informazione di una delle due catene, è assolutamente libera in quanto in ogni posizione può essere presente uno qualsiasi dei quattro nucleotidi che costituiscono il DNA; tuttavia una volta definita la sequenza di una delle due catene, la sequenza dell’altra è completamente vincolata, poichè deve presentare le basi complementari a quelle sull’altra catena. Le due catena hanno quindi sequenza diverse ma complementari: il DNA può contenere qualsiasi informazione e la contiene due volte. Questa ridondanza di informazione è di fondamentale importanza biologica per due motivi: • offre un modello molto efficiente per la replicazione dell’informazione genetica: vedremo come le due catene si separino per costituire ciascuna lo stampo per la polimerizzazione di una nuova catena, secondo le regole della complementarietà delle basi; • consente la conservazione dell’informazione nei casi in cui una delle due catene venisse danneggiata: finchè la catena complementare rimane integra, la cellula può sempre provvedere a riparare il danno utilizzando l’informazione conservata nella catena complementare. Studiando matematicamente il DNA ci si rende conto che questi vincoli strutturali obbediscono a precisi criteri algoritmici; la molecola deve essere cosı̀ fatta per avere algoritmi di duplicazione efficienti. La duplicazione, come 6 abbiamo accennato, è alla base della vita; la riproduzione si basa su meccanismi di duplicazione e avere un meccanismo (algoritmo) efficiente e veloce è essenziale: la struttura del DNA è quindi legata all’efficienza della duplicazione. 2.2 Il desossiribosio Lo zucchero (Z) utilizzato nei nucleosidi è un desossiribosio a 5 atomi di carbonio: Gli atomi di carbonio vengono denominati con gli indici da 10 a CH2OH OH C 5 H 10O 4 H H OH H OH H Figura 2: struttura desossiribosio 50 . Il concatenamento dei nucleotidi per formare le catene avviene tramite il legame di un fosfato in posizione 50 o 30 a fronte di un fosfato gia presente rispettivamente in 30 o in 50 . Il fosfato funge da ponte tra i due desossiribosi. Si vengono cosı̀ a formare due catene lineari di lunghezza indefinita che presentano una struttura costituita dalla alternanza di zucchero e fosfato, dalla quale sporgono le basi azotate. Le due estremità della catena non sono equivalenti: quella che presenta un fosfato libero (non impegnato in un legame) è detta estremità 50 , quella che presenta un fosfato legato con uno zucchero è detta estremità 30 . Per convenzione, la sequenza dei nucleotidi viene descritta a partire dalla estremità 50 : si dice che viene letta in direzione 50 → 30 . Le Figure 3 e 4 mostrano rispettivamente la formazione di un nucleoside e di un nucleotide: 5’ 1’ 4’ 3’ B 2’ Figura 3: nucleoside 7 H2 O P 5’ 1’ 4’ 3’ B 2’ Figura 4: nucleotide Nella Figura 5 vediamo la formazione di un nucleotide a partire da un nucleoside: al nucleoside formato dallo zucchero con base azotata viene aggiunto in posizione 50 il fosfato (PO4) e nella reazione vengono eliminati gli elementi di una molecola d’acqua. ( 3 ’ ) O H _ Z ( B ) _ ( 5 ’ ) C H 2O H + P O 4 = ( 3 ’ ) O H _ Z ( B ) _ ( 5 ’ ) C H2 P O 4 Figura 5: formazione-nucleotide Sono quindi emersi tre vincoli strutturali che possiamo enunciare come tre principi costitutivi della molecola DNA: 1. BILINEARITÀ: il DNA è formato da due catene appaiate 2. COMPLEMENTARIETÀ: le catene sono appaiate rispettando la regola di Chargaff 3. ANTIPARALLELISMO: la catena appaiata è posizionata nel verso opposto rispetto all’altra catena; Testa (Ch2PO4) à Coda(OH), Coda(OH Testa(CH2PO4) Ã). Come vedremo, la bilinearità e la complementarietà sono strettamente legate ad una esigenza algoritmica piu che biochimica, volte ad una esecuzione efficiente della duplicazione. Ci si chiede invece come mai proprio l’antiparallelismo e non semplicemente il parallelismo? questa proprietà, come vedremo, è dovuta alla struttura stessa, è un obbligo strutturale. 2.3 Logica della concatenazione della molecola DNA Si cerca di astrarre dalla formazione chimica delle molecole per concentrarsi principalmente sulla struttura necessaria per contenere l’informazione genetica. I nucleotidi visti come singoli componenti vengono chiamati monomeri, per poi formare tramite concatenazione i polimeri detti anche polimeri informazionali. I monomeri sono oggetti chirali 1 , ovvero oggetti rispetto a cui è possibile definire un 1 Una molecola è detta chirale se la sua immagine speculare non è sovrapponibile a se. 8 sistema cartesiano di riferimento destrorso o sinistrorso con un certo orientamento. In particolare indichiamo la chiralità di un monomero, il piano cartesiano associato ai versi x,y,z con le seguenti direzioni: concatenazione per il verso x, appaiamento per il verso y e posizione del lettore per l verso z (Figura 6). Inoltre i monomeri hanno un tipo denotato da un simbolo appartenente all’insieme {A, T, C, G} per cui se un monomero m ha un tipo X si scrive m : X pairing concatenazione lettore Figura 6: mappatura Si possono stabilire i seguenti principi sui quali si baserà la notazione che verrà introdotta nel paragrafo 2.7 1. PRINCIPIO DI UNIFORMITÀ DELLA CONCATENAZIONE: stesso verso di concatenamento. Ogni monomero di una catena ha lo stesso verso che va dalla coda del monomero alla testa del monomero successivo. Il nucleotide N è chimicamente una struttura orientata da 50 a 30 . Dopo la concatenazione, la struttura deve mantenere l’orientamento, quindi tale operazione può avvenire solo se i due nucleotidi hanno lo stesso verso e di conseguenza il risultato avrà lo stesso verso: −N → ; −N → ⇒ −N → −N →. 2. PRINCIPIO DI COMPLEMENTARIETÀ: Due monomeri si possono appaiare solo se i loro tipi rispondono alla regola di Chargaf (A-T; G-C) 3. MIRROR PAIRING. I versi dell’appaiamento sulle due catene sono opposti : La direzione dell’appaiamento va dalla testa del monomero alla testa del monomero appaiato: un monomero può essere appaiato con al più un altro monomero e due monomeri concatenati con altri due monomeri concatenati. Questo implica che i monomeri di una singola catena hanno lo stesso orientamento nella direzione del pairing (appaiamento). La Figura 7 a) mostra una catena concorde con tale principio mentre la b) va contro il principio. b) a) Figura 7: a) stesso verso y. b) verso y opposto 9 4. FREE BILINEAR LOCATION. Le molecole sono libere di posizionarsi in qualsiasi punto della catena, l’importante è che siano rispettati gli altri principi. Le catene bilineari possono essere denaturate in due singoli filamenti separati; questo significa che la forza di appaiamento è debole rispetto alla forza di concatenazione. La forza debole di appaiamento è legata alla complementarietà. Infatti se i monomeri appaiati avessero lo steso tipo, allora i legami sarebbero legami chimici covalenti, ovvero molto forti e quindi molto difficili da rompere in fase di denaturazione e tale operazione è fondamentale per la duplicazione del DNA. Come è intuibile, tale struttura bilineare e complementare è l’unica che permette una duplicazione in tempo polinomiale oltre a facilitare un controllo di possibili errori. Vedremo che grazie a questa caratteristica si avrà un numero esponenziale di coppie in un tempo lineare; se si lavorasse su una sola stringa, infatti, ogni algoritmo di duplicazione avrebbe complessità quadratica rispetto alla dimensione della stringa stessa. La struttura bilineare può essere rappresentata come in Figura 8, oppure come in Figura 9 e in entrambi i casi sono rispettati i principi strutturali sopra menzionati, tuttavia vedremo che l’unica disposizione possibile è quella antiparallela; inoltre l’appaiamento tra due filamenti può essere parziale dando origine a molte combinazioni come mostrato in Figura 10. x y y x Figura 8: pairing paralleli x y y x Figura 9: pairing antiparalleli 10 Figura 10: possibili appaiamenti Riassumendo la struttura bilineare dei monomeri è cosi definita: • Il verso di concatenazione corrispondente all’asse x. La coda-testa del monomero corrisponde al verso 50 − 30 . • Il verso y corrisponde alla direzione lungo la quale i monomeri si appaiano. • La direzione z perpendicolare al piano xy, identifica il punto in cui si posiziona un ipotetico lettore. Infatti i nucleotidi contengono informazione e per tale motivo necessitano di essere letti. In accordo con il principio 1 e 3, i monomeri sono asimmetrici rispetto sia all’asse x che all’asse y. La seguente proposizione afferma che sono asimmetrici anche rispetto all’asse z : Proposizione 1. I monomeri devono essere asimmetrici rispetto all’asse z. Dimostrazione. Se per assurdo un monomero fosse simmetrico all’asse z, allora dopo una rotazione attorno all’asse y o x, il monomero si posizionerebbe con verso opposto rispetto all’asse x o y e quindi sarebbe simmetrico rispetto a x o y; ma non può essere perchè violerebbe il mirror pairing e l’uniformità della concatenazione. Corollario. I monomeri sono oggetti chirali: sono asimmetrici rispetto a tutte le direzioni. Ad un oggetto chirale si associa un sistema cartesiano. La asimmetria rispetto all’asse z suggerisce un naturale verso di lettura preferenziale e questa intuizione ci porta ad enunciare il Principio del verso di lettura uniforme: un lettore (ad esempio l’enzima polimerasi) può leggere tutti i monomeri di una catena stando sempre nello stesso lato rispetto al piano xy, ovvero tutti i monomeri della stessa catena devono avere lo stesso verso z (Figura 11). Lemma. Se due oggetti chirali con sistemi di riferimento F 1 e F 2 differiscono per due versi, è possibile tramite un movimento rigido, sovrapporre i due oggetti in modo che abbiano lo stesso sistema cartesiano (oggetti omochirali ). Se differiscono per un solo verso, non è possibile sovrapporli e tali oggetti si chiamano eterochirali. Proposizione 2. Il principio dell’universalità del verso di lettura implica che tutti i monomeri della stessa catena devono avere la stessa chiralità. Dimostrazione. Se per assurdo esistessero due monomeri con chiralitá diversa nello stesso filamento, allora per l’uniformità di concatenamento avrebbero lo stesso asse x, e per il mirror pairing avrebbero lo stesso asse y, quindi per il lemma devono differire per l’asse z (essendo per assurdo eterochirali), ma questo contraddice il 11 Lettore dietro al piano xy x z y Lettore davanti al piano xy Figura 11: Lettore principio dell’uniformità di lettura. Segue che i monomeri sono omochirali Proposizione 3. Il verso di lettura dei due filamenti appaiati coincide se e solo se i due orientamenti sono antiparalleli. Dimostrazione. Si è visto che i monomeri hanno chiralità e sono omochirali, quindi devono essere messi per forza in modo antiparallelo, altrimenti si infrange il mirror pairing o l’uniformità o la free location. Quindi essendo omochirali il verso z coincide solo se sono disposti in modo antiparallelo. (⇐): se sono antiparalleli i monomeri dei due filamenti differiscono per due versi x e y, ma essendo omochirali ed avendo versi opposti per x e y, il verso z deve per forza coincidere e quindi hanno lo stesso verso di lettura. (⇒):Dimostro il contronominale. Se sono paralleli allora i monomeri differiscono solo per il verso y, ma essendo omochirali allora devono differire per un’altro verso, ed essendo paralleli questa direzione è l’asse z, quindi hanno una diversa direzione di lettura. Questa proposizione mostra il grande vantaggio dell’antiparallelismo rispetto al parallelismo: con il primo abbiamo un unico verso di lettura. Proveremo che la disposizione antiparallela delle due stringhe è l’unica possibile e lo proveremo utilizzando solo argomenti geometrici. 12 2.4 Triangolo monomerico Il monomero è completamente individuato da un triangolo composto da i due punti di concatenazione ovvero i due fosfati, e il punto di appaiamento (Figura 12) coda(tail) T angolo acuto H H’ testa(hed) testa appaiata Figura 12: triangolo-monomerico L’angolo del triangolo è acuto; se fosse stato ottuso avrebbe occupato più spazio e la catena avrebbe assunto dimensioni spropositate per una cellula. L’angolo acuto ci permette di dare una ulteriore conferma che la disposizione antiparallela è l’unica possibile. Se solo lo ipotizziamo notiamo che l’unico modo per mettere due triangoli appaiati consiste nel disporli in modo antiparallelo (Figura 13) T H H’ H T Figura 13: angolo acuto e triangoli antiparalleli I tre punti che individuano il triangolo sono essenziali per determinare la funzionalità monomerica: • Il punto H di testa è i primo punto del monomero lungo il verso di concatenazione. • La coda T è la testa del successivo monomero lungo il verso di concatenamento. • H’ è la testa del monomero appaiato. Questi punti specificano il triangolo HTH’ chiamato appunto triangolo monomrerico. In termini di nucleotidi, H corrisponde al fosfato in 50 e T al fosfato in 30 (Figura 14). In base al tipo di informazione trasportata, esistono quattro tipi di triangoli: A, T, C, G. Quindi dal punto di vista astratto un monomero è un triangolo avente un tipo che appartiene all’alfabeto delle basi azotate. Proposizione. Se l’angolo THH’ del triangolo è acuto allora la disposizione parallela bilineare non è possibile e quella antiparallela è l’unica possibile. 13 T H’ base azotata P gruppo fosforico T H Figura 14: punti del triangolo monomerico Dimostrazione. Se i due monomeri sono sullo stesso piano, sono appaiati lungo il loro asse di pairing (y) e l’angolo è acuto, l’unico modo per ottenere la bilinearità è una disposizione antiparallela. Un’altra disposizione è mostrata in Figura 15, ma in questo caso si perde la bilinearità. x x y y Figura 15: disposizione non lineare Tuttavia nella struttura bilineare antiparallela, i monomeri non sono sullo stesso piano perchè si trovano in un ambiente fluido. In questo caso avviene una rotazione di un certo angolo da parte dei lati esterni del triangolo e questo è possibile se contemporaneamente ciascun triangolo è libero di ruotare lungo l’asse x nei punti di contatto della concatenazione. Questa rotazione provoca la classica forma a doppia elica del DNA. 14 2.5 Elica bilineare astratta I legami del doppio filamento sono liberi di muoversi in un ambiente fluido, ma tale movimento rimane confinato all’interno di un cilindro chiamato cilindro astratto (Figura 16). Il triangolo ruota attorno all’asse del cilindro il quale è determinato H’ T H T Figura 16: cilindro monomerico dai seguenti punti: • Angolo ρ: rotazione rispetto all’asse del cilindro del segmento di concatenazione; dice di quanto ruota per concatenarsi. • Angolo τ : torsione; dice di quanto il monomero si piega rispetto alla verticale • Angolo θ: fase; dice di quanto ruota l’accoppiamento nel cilindro (angolo formato tra H e la perpendicolare di H’). • Raggio cilindro. La forma dell’elica del DNA è quindi completamente determinata da tre angoli, un raggio e la non complanarità (ovvero i monomeri sono situati su piani differenti). 15 2.6 Forme bilineari Avendo come riferimento i seguenti principi: • bilinearità: doppia catena, • antiparrallelismo: direzione delle due catene opposte 50 − 30 e 30 − 50 , • complementerietà: regola di Chargaff. la struttura nucleotidica viene rappresentata tramite due frecce parallele aventi verso opposto: ¿ Se consideriamo le forme bilineari strette si hanno le forme chiamate STICKY ENDS (ovvero delle incollature, appiccicature) dovute proprio alla complementarietà la quale si può vedere come una forma di adesione tra cose complementari. Gli Sticky ends si differenziano in base ai terminali, ovvero alle sporgenze di ossidrile o fosfato in 3’ o 5’ dei filamenti come mostrato in Figura 17. 3’ 1) sticky end 3’-3’ 3’ 2) 3’ sticky end 3’ 2) 3’ 5’ sticky end 5’-3’ 3) 3’ 4) blunt-y y 3’ 5) sticky end 3’-y y 6) 3’ y-y y 7) sticky end y-5’ 5’ 8) 9) 5’ sticky end 5’-5’ 5’ 5’ 10) sticky end 5’ molecola blunt: senza spigoli Figura 17: sticky-end 16 Nota: la parte y indica la porzione di filamento non complementare. Alle forme bilineari strette si aggiungono la monostruttura: −→, gli eteroduplex, strutture con un singolo filamento: hairpin (punta di capello) e le varie combinazioni circolari e doppio circolari (Figura 18) eteroduplex harpin circolari Figura 18: forme non lineari 2.7 Notazione doppia stringa A questo punto occorre fornire le molecole di una opportuna notazione per poter descrivere matematicamente le operazioni sulla struttura monomerica. Dato un alfabeto finito A, definiamo A∗ come tutte le possibili sequenze di stringhe su A. Nel nostro caso A = {A, T, C, G} e corrisponde all’alfabeto nucleotidico. Chiamiamo α, β, γ . . . le sequenze sull’alfabeto. Avendo a disposizione l’operazione di concatenazione, le sequenze sono a tutti gli effetti delle stringhe; preso α e β, la concatenazione produce la sequenza α seguita da β: αβ. Per rappresentare l’orientamento dei nucleotidi faremo seguire la stringa da una freccia α →: la parte sinistra indica la presenza del gruppo fosforico e la pate destra l’ossidrile. L’orientamento opposto lo otteniamo con l’ndicazione ← α. Indichiamo con λ la sequenza vuota formata cioè da nessun nucleotide. Un’altra operazione su A? è il rev, ad esempio rev(cane) = enac. Definizione di rev : rev(x) = x rev(αβ) = rev(β)rev(α) rev(λ) = λ Esempio: rev(cane) = rev(ane)rev(c) = rev(ne)rev(a)rev(c) = rev(e)rev(n)rev(a)rev(c) = enac. 17 Assioma: αλ = α λα = α Sulle stringe definiamo inoltre la lunghezza |α|: |λ| = 0 |αβ| = |α| + |β| |x| = 1 Abbiamo cosı̀ definito tre operazioni di base sulle stringhe: • concatenazione • reverse • lunghezza Per rappresentare l’appaiamento di due filamenti utilizziamo la notazione frazionaria in cui il filamento superiore ha verso 50 − 30 e quello inferiore è il reverse ovvero 30 − 50 . Ad esempio, se N è un generico nucleotide una possibile notazione frazionaria è la NN seguente: N N N CACGN GCAC Operazioni sulle doppie stringhe • sottostringa α[i, j]: porzione di stringa tra le posizioni i e j • concatenazione αβ • complemento (αc ): ad ogni base si prende la lettera complementare • reversing rev(α): stringa girata in senso opposto • mirroring rev((αc )): composizione tra rev e complemento, ovvero la stringa è girata dall’altra parte ed è complementata • Hibridazione α][β: indica che le stringhe si possono ibridizzare • pairing α β: è sottointeso che hanno verso opposto • overlapping α ./ β • overlap concatenation α|β • blunt pairing < α > Le operazioni non vengono svolte su singole stringhe, ma su popolazioni di stringhe; si tratta dunque di capire come agire sulla popolazione per avere i comportamenti voluti sulle singole stringhe. 18 Definizioni. • (α)c , (λ)c = λ (T )c = A (A)c = T (C)c = G (G)c = C (αβ)c = (α)c (β)c • mirr(α) = rev((α)c ) = ᾱ si usa questo simbolo come abbreviazione • orientamento: • α rev(ᾱ) α λ = α → notazione superiore λ α =← rev(α) notazione inferiore =< α > ovvero: α rev(rev(α)c ) = α αc N ota: rev e mirr sono involutive, ovvero: rev(rev(α)) = α e (αc )c = α Esempio: Sia α → la seguente stringa: 5’ATTCCG→ 30 se ora si esegue il mirror si ottiene: CGGAAT→, ma vediamo nel dettaglio come operare. Per effettuare il mirror, prima si complementa e poi si fa il reversing: (α)c = T AAGGC = α0 rev(α0 ) = CGGAAT → • pairing: α k β sse β = mirr(α), ricordando che mirr = rev(αc ) ovvero si ha il pairing se e solo se β è il mirror(α) e in questo caso è definita α l’operazione di pairing: rev(β) Esempio. AT T CCG →k CGGAAT → La seconda stringa è il mirr della prima e quindi è possibile effettuare il pairAT T CCG→ ing: ←T AAGGC La difficoltà rispetto alle stringhe normali consiste nel fatto che si deve operare in primo luogo con doppie stringhe e poi occorre considerare due elementi aggiuntivi come la coplementarietà e l’orientamento. Nota: Se α||ᾱ allora α rev(ᾱ) = α rev(rev(αc )) = 19 α αc Sopra si legge da 50 a 30 e sotto da 30 a 50 anche se è la stessa stringa (la stringa è la stessa, ma il verso è opposto). La molecola in forma doppia la si indica con < α >. Quando la molecola è perfettamente doppia si ha l’uguaglianza < α >=< ᾱ > ovvero è uguale al suo mirror, infatti: ᾱ α α α < ᾱ >= rev(ᾱᾱ¯ )) = rev(α) = rev( ᾱ) = rev(rev(αc )) = αc che è proprio < α > • α][β indica il pairing generale, cioè α si accoppia con β se esiste γ tale che α ⊃ β,β ⊃ γ e |γ| > h, ovvero la lunghezza di γ è maggiore di un certo valore chiamato costante di ibridizzazione che dipende dalla temperatura e dalla composizione della molecola. α Se sussistono tali condizioni allora può esistere la struttura doppia rev(β) . ∗ ∗ L’insieme di tutte le strutture doppie le indichiamo con B |B . Assioma di rotazione: α rev(β) = β rev(α) Le molecole doppie sono rotazionali perchè si trovano in un ambiente fluido e pertanto un enzima le può leggere indifferentemente da sopra o da sotto. • Overlapping α ./ β = max{g|α = f g ∧ β = gp} L’operazione max si riferisce alla massima lunghezza. L’idea è la seguente(Figura 19): Due filamenti appaiati hanno una parte f g g p Figura 19: overlapping perfettamente appaiata, quindi l’overlapping è quella parte appaiata. • overlap concatenation < α|β >=< f gp > questa è una operazione che viene effettuata dall’enzima polimerasi (Figura 20). • Extend (ext) ext(αγ, δ̄γ̄ β̄) = ext(αγ, δc γλc β c ) = αγβ Questa operazione corrisponde all’estensione di un filamento prendendo come template, come stampo, il filamento inferiore. Se la seconda molecola si appaia per un pezzo con la prima, allora come risultato si ha l’estensione della prima copiando quello che trova sotto. Ovvero si mette la seconda stringa in notazione frazionaria, si vede se c’e una parte in comune (γ) e copio la 20 f g g p Figura 20: overlap concatenation sottostringa rimanente β nella stringa superiore (indipendentemente da α e δ). Inoltre si ha: ext(αγ, η) = αγ se η 6= β̄γ̄ δ̄ ∀βγ ovvero se η non si può fattorizzare con il template β̄γ̄ δ̄, allora l’estensione non fa nulla e ritorna il primo filamento come risultato Nella notazione a doppia stringa, l’ext() utilizza come template il filamemto appaiato. Abbreviazioni ext(α,β) rev(β) ≡ ext(α) rev(β) α rev(ext(β,α)) ≡ α rev(ext(β)) ext(α,β) rev(ext(β,α)) ≡ ext(α) rev(ext(β)) : Overlap Concatenation su doppia stringa 21 3 Operazioni sul DNA Consideriamo come oggetto delle operazioni un pool di DNA; un pool è un multiinsieme di elementi appartenente a B∗ |B∗ ovvero l’insieme di tutte le stringhe doppie. Il pool di DNA è contenuto in una provetta che indichiamo con P. P indica sia il contenuto che il contenitore: ad esempio R = R + 1 è l’operazione di incremento in cui R indica a sinistra il registro e a destra il contenuto del registro; o ancora P = ext(p) dove a sinistra P indica la provetta e a destra il contenuto. Chiamiamo filamento un oggetto s sul quale è definita l’operazione type che assegna ad s una stringa di B∗ |B∗ . in particolare, se type(s) è una singola stringa allora s è un singolo filamento, mentre se type(s) è una doppia stringa, allora s è un doppio filamento. Consideriamo un pool P di DNA come un insieme di filamenti o come un multiinsieme di singole o doppie stringhe di B∗ |B∗ . Possiamo scrivere: P = {n1 : α1 , n2 : α2 , . . . , nk : αk } dove: α1 . . . αk ∈ B∗ |B∗ , n è il numero della molecola di uno specifico tipo e α è il tipo della molecola Oppure possiamo indicare P come segue: P = {S1 , S2 , . . . , Si } ∀ i si ha che S : α, α ∈ {α1 . . . αk } Ovvero un multiinsieme di stringhe di B∗ |B∗ è specificato dalla funzione molteplicità multp da B∗ |B∗ ai numeri naturali, che indica il numero di copie per ogni filamento di tipo η ∈ B∗ |B∗ : multp : B∗ |B∗ → N Esempio: multp(α1 ) = n1 multp(αk ) = nk multp(β) = 0 Si può dunque scrivere che: y ∈ P sse multp(y) 6= 0: la stringa y appartiene al pool sse nel pool c’è qualche oggetto di quel tipo. S ∈ P sse type(S) 6= λ: Ogni filamento in provetta ha come tipo una stringa, i filamenti che non sono in provetta hanno come tipo una stringa vuota. Si ha che: T ype(P ) = {y ∈ B∗ |B∗ |y ∈ P } = {type(S)|S ∈ P } Type è un insieme di stringhe ovvero è un linguaggio. L’operatore type assegna ad un filamento una stringa e l’operatore Type assegna ad un pool di filamenti l’insieme dei tipi dei suoi filamenti. Stringhe e filamenti sono concetti differenti anche se spesso i due termini vengono usati come sinonimi. Infatti una stringa è fisicamente implementata dal filamento che ha come tipo la 22 stringa stessa. Le operazioni sul DNA viste con la nostra notazione sono sostanzialmente operazioni su linguaggi. Vedremo le operazioni biologiche mix, split, length, separate, sintesi, amplificazione, naturazione, denaturazione e sequenziamento. Note sul calcolo Dato un singolo filamento S, con la notazione introdotta esso viene rappresentato come stringa α e un doppio filamento come una doppia stringa. Si dice che S α ha un tipo: rispettivamente S : α t.c type(S) = α e S : α β t.c. type(S) = β . Anche una popolazione P ha un tipo, che è l’insieme di tutti i tipi che si hanno nella popolazione: T ype(P ) = {type(S) ∈ B ? B ? |S ∈ P } dove P = {S1 , S2 , . . . , Sn } è un multiinsieme. Le operazioni viste e che vedremo operano su popolazioni di oggetti per cui si passa da P a P’ senza avere la piena conoscenza di come è fatto P; si conosce solamente il suo tipo, ovvero il tipo degli oggetti in P. Quello che interessa è passare a P’ contenente altri oggetti di un certo tipo; si ha quindi il passagio di tipi: Type(P) → Type(P’). 3.1 Operazioni di base: mix, split, length(elettroforesi), separate, synthetize 1. mix o merge (unione). mix(P 1, P 2) = P 1 + P 2: è la somma delle molteplicità come multiinsieme; il contenuto di due provette separate viene mescolato in una unica provetta. 2. split (divisione). split(P ) = (P 1, P 2) tale che P 1 + P 2 = P e T ype(P 1) = T ype(P 2 = T ype(P )): il tipo di entrambi gli elementi prodotti deve uguagliare il tipo di partenza. Dopo lo split il linguaggio di P si trova sia in P 1 che in P 2, quindi se in P si hanno le stringhe α1 e α2 , allora un certo numero di esse si sono distribuite sia in P 1 che in P 2 (Figura 21) P1 P P2 Figura 21: split 3. length. length(P ) = {n1 , n2 , . . . , nn } è un insieme finito di numeri che rappresentano le lunghezze presenti in 23 provetta. Questa operazione viene effettuata tramite uno strumento di analisi chiamato elettroforesi su gel e consente di separare le molecole in base alle loro dimensioni. Un gel costituito da agarosio può essere considerato come una rete tridimensionale in cui vengono fatte migrare le molecole sotto l’azione di un campo elettrico. Le molecole di DNA, essendo cariche negativamente per la presenza del gruppo fosfato, migrano verso il polo positivo con una velocità che è funzione del loro peso molecolare. Molecole di dimensioni minori si muovono più velocemente attraverso le maglie del gel e quindi si separano da quelle di dimensioni maggiori. Dopo un certo tempo l’insieme delle molecole che hanno la stessa lunghezza appaiono come bande a diversa distanza dal pozzetto di ingresso, Figura 22. Si possono vedere utilizzando particolari reagenti e illuminando il gel con luce ultravioletta. +++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++ 0 0 10 10 20 20 30 30 40 40 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ingressi per vari pool di DNA T Figura 22: elettroforesi 4. separate. separate(P, n) = {s ∈ P | type(s) = η, |η| = n} prende la banda delle molecole lunghe n; questa operazione si basa sull’elettroforesi. 5. synthetize. È la procedura per creare ovvero scrivere una stringa di DNA. I nucleotidi possono essere creati con metodi di sintesi chimica e quello che si desidera è mettere questi nucleotidi in una specifica posizione nella sequenza; ad esempio potremmo essere interessati a produrre la sequenza ATCG→. La scrittura avviene da destra a sinistra, contrariamente alla lettura che avviene da sinistra a destra. Il procedimento si basa su una sequenza di tre operazioni: ancoraggio, blocco e sblocco come descritto di seguito. (a) Si prende una certa quantità di molecole di un certo tipo a esempio G. Non essendo possibile operare su singole molecole (data la loro piccolissima dimensione) se ne prende un quantitativo pari ad esempio a 1014 e si effettua la procedura di ancoraggio, ovvero si rende solidale la molecola con un supporto solido. (b) Si riempiono quattro vaschette con i nucleotidi A,T,C,G (una per vaschetta) e si bloccano in 50 tramite la defosforilazione (eliminazione del fosforo); in questo modo si impedisce la possibile formazione di un legame con 30 dalla parte di 50 . 24 (c) Si intinge il supporto solido nella vaschetta C e poichè, tali nucleotidi non hanno il fosforo, l’unico legame che si può creare è dalla parte dell’ossidrile (30 ), cosı̀ la C si attacca con la G dalla parte voluta: si è creato un legame 30 − 50 tra C e G. (d) Si toglie il supporto dalla vaschetta e quindi tramite opportune operazioni chimiche si sblocca C. A questo punto si ha 50 30 50 su CG. Quindi si intinge il supporto cosı̀ formato in T e dopo averlo estratto si ha 50 30 50 30 50 su TCG; si ripete per A e si ottiene la sequenza voluta ATCG. La lettura della stringa è invece piu complicata perchè necessita di una fase di amplificazione del materiale genetico. Solitamente l’ordine di grandezza del materiale amplificato è di 1020 . A livello simbolico un pool di molecole avente un certo tipo, occorre trasformarlo in un pool contenete tanti insiemi di molecole, dove ogni insieme contiene cloni di molecole dello stesso tipo: T ype(P ) = {α1 , α2 . . . αk } 7→ ({α1 }, {α2 } . . . {αk }) Nei prossimi capitoli vedremo le tecniche di amplificazione e di lettura. 25 3.2 Denaturazione e Rinaturazione del DNA Il DNA, per effetto di agenti denaturanti fisici (calore) e chimici (condizioni estreme di pH e forza ionica) può subire il fenomeno della denaturazione. Esso consiste nella distruzione della struttura a doppia elica con separazione delle due catene nucleotidiche cha la costituiscono, senza però che vengano scissi i legami del gruppo fosforico che assicurano la continuità della catena con il desossiribosio (Figura 23). Il DNA in questo stato denaturato non può essere utilizzato dalle cellule come fonte di informazione genetica. Se il DNA, denaturato al calore, viene raffreddato lentamente lasciandolo ad una temperatura vicina a quella di denaturazione per un tempo abbastanza lungo, si consente alle eliche di provare ad accoppiarsi formando alcuni legami ad idrogeno: se l’appaiamento è coretto, la formazione dei primi legami porta vicine fra loro altre basi complementari che possono formare cosı̀ altri legami, per cui le catene si chiudono rapidamente come se fossero una cerniera lampo dando luogo ad una doppia elica stabile, identica a quella di partenza: si è verificata la rinaturazione (Figura 24). La sola cosa che conta ai fini della formazione della doppia elica, è la presenza di sequenze complementari, per cui la rinaturazione avviene anche se le catene provengono da DNA diversi: tale fenomeno prende il nome di ibridazione 3’ 5’ T A G A G C T C C A C G T G G C G A T T A C T A A T T A G T C A DNA a doppio filamento C G G C 5’ 3’ 5’ 3’ T G A G A C G T C A C G T G G C G A T C T A T C T G Inizio del processo di denaturazione A A T A T C C A G 5’ C 3’ 3’ 5’ T G A G C A C G G A T T A T G A C T G T G C C T A T A C A C A T C G G C 5’ Singole catene di nucleotidi 3’ Figura 23: denaturazione 26 3’ 5’ T G A G C A C G G A T T A G T T C G Due filamenti separati A C T C G T G C C T A A T A C A G C 5’ 3’ 3’ 5’ T G A G C A C G G A T T A T G T A C T C G T G C C T A A T C G A C A 5’ 5’ 3’ T A G C 3’ G A G C T C C A C G T G G C G A T T A C T A A T T A G T C A C G G C 5’ 3’ Tentativo di appaiamento Appaiamento corretto Figura 24: rinaturazione 3.3 Amplificazione con PCR La reazione a catena della DNA polimerasi detta PCR (Polymerase Chain Reaction) è una tecnica introdotta nel 1985 da Kary Millis che consente di amplificare in modo specifico e selettivo una stringha di DNA. Per amplificare una striga di DNA è indispensabile disporre di un nucleotide complementare alla estremità della sequenza di partenza (primer ). La sintesi richiede pertanto che sia nota almeno la sequenza nucleotidica di brevi zone adiacenti alla sequenza da amplificare. La PCR consiste di vari cicli di amplificazione e ogni ciclo è costituito da tre fasi: denaturazione, appaiamento (annealing) e sintesi. In breve la duplicazione è completamente svolta dall’enzima Polimerasi (ad esempio l’enzima TAQIII, Termo Acquaticus III), il quale una volta identificato un innesco (Primer ), inizia a duplicare la parte complementare del filamento mancante leggendo l’altro filamento (Figura 25). Gli ingredienti principali per la PCR sono il DNA campione, i primer, i nucleotidi molecola da duplicare 5’ 3’ 5’ 3’ parte aggiunta dal TAGIII primer Figura 25: polimerasi trifosfati (A,T,C,G) e il TaQIII. La reazione di amplificazione avviene tramite cicli 27 sequenziali ed è una reazione a catena in cui i filamenti neosintetizzati agiscono da stampo per l’ulteriore sintesi di DNA nel ciclo successivo. La procedura è la seguente: • Si parte da una molecola bersaglio < α . . . β >, ma come si è gia detto non si lavora mai con singole molecole, ma con pool di DNA. • Denaturazione: si innalza la temperatura a 90◦ C per facilitare la denaturazione (Figura 26) a a b a b b b a Figura 26: denaturazione di < α . . . β > • Annealing: si disegnano i primer α e β̄ e si abbassa la temperatura attorno ai 30◦ C per facilitare l’appaiamento per complementarietà con i filamenti template (Figura 27) b a b a b a Figura 27: Annealing con i primers • Sintesi: si porta la temperatura attorno ai 70◦ C per un certo tempo per facilitare il lavoro della polimerasi (Figura 28): il TaqIII, partendo dal primer, aggiunge i singoli nucleotidi (sparsi nella soluzione del pool) che sono complementari al filamento template. A b a taqIII A G T b a C taqIII G T a C b Figura 28: Estensione Iterando il processo per n volte si ottengono 2n copie. Nota: La PCR copia un filamento template, aggiungendo nucleotidi, sempre nella direzione 28 50 − 30 e mai nella direzione 30 − 50 (Figura 29); più precisamente il filamento, lungo il quale le basi sono scansite, è percorso dall’enzima nella direzione 30 − 50 , ma la scrittura avviene nel neofilamento in direzione 50 − 30 . Aggiunta di nucleotidi: 5’ G G A G A T C C G AT T C G A T C C T G G 3’ C C T C T A G G C T A A G C T A G G A C C A T T A C G oppure G C A T T A C C A G G A T C G A A T C G G A T C T C C 3’ G G T C C T A G C T T A G C C T A G A G G 5’ Nessuna aggiunta di nucleotidi: 5’G A G G A C A T C C G A T T C A G G A G T A C C 3’ C T C C T G T A G G oppure G G A T G T C C T C 3’ C C A T G A G G A C T T A G C C T A C A G G A G 5’ Figura 29: Direzione di sintesi Algoritmo per PCR: PCR(P,n){ let Type(P) input P for i = 1,n { P:= P:= P:= } output P } = {<a...b>,c,d} do denature(P) hybridize(P) extend(P) 29 //<a..b>: tipo del template; c,d: primers 3.3.1 Alberi PCR La visualizzazione della PCR tramite alberi è particolarmente utile per osservare cosa accade quando la forma e la posizione delle molecole risulta essere complessa. Si dimostra che tra le molecole che vengono duplicate esponenzialmente, c’è ne sarà sicuramente una di tipo blunt; si avranno tante forme diverse, ma una o più saranno blunt. La forma della molecola blunt sarà delimitata dai primers considerando il template superiore (Figura 30) a y y b2 b1 b2 Figura 30: Regola molecola blunt Esempio. Con riferimento alla Figura 31a, nel primo ciclo della PCR, la molecola template si divide e i filamenti 1 e 2 si attaccano ai relativi primer, e dopo il lavoro della polimerasi si ottengono le molecole descritte nella Figura 31b. Al secondo ciclo le molecole cosı̀ ottenute si separano e i filamenti 1 e 2 si riattaccano con i primer (infatti sono i template di partenza) e si ottengono le stesse molecole ottenute al passo precedente. I filamenti 3 e 4 non si attaccano ai primers perchè non sono complementari (rispetto ai primers), però si appaiano nella loro parte comune e la polimerasi completa i filamenti ottenendo cosı̀ una molecola blunt (Figura 31c). 30 2 primer primer 1 a) 2 3 Molecole ottenute al primo ciclo 4 1 b) 3 4 Molecole ottenute al secondo ciclo 2 1 c) Figura 31: esempio blunt Nota: Quando si scrive ᾱ significa che si sta leggendo un filamento singolo da 50 a 30 ; se α invece si vuole leggere in notazione doppia si deve scrivere rev( ᾱ) Alcuni alberi PCR: Esempio 1 , Figura 32 Figura 32: Albero pcr esempio 1 31 Esempio 2 , Figura 33 Da questo lato, da qui in poi, si ottengono sequenze tutte uguali. 2 1 2 1 Figura 33: Albero pcr esempio 2 Esempio 3 , Figura 34 1 3 4 2 3 1 5 4 2 5 2 Al terzo passo si è ottenuta la molecola blunt la cui lunghezza è quella delimitata dai due primer sulla molecola iniziale Figura 34: Albero pcr esempio 3 32 Altri esempi di forme di PCR: Sticky end 3’-3’ La polimerasi lavora nel verso 5’-3’ e con molecole con Sticky ends 3’-3’, la PCR non fa nulla (Figura 35) 3’ 5’ 3’ 5’ Figura 35: Albero pcr Sticky end 3’-3’ Sticky end 5’-5’ Con Sticky ends 5’-5’ la polimerasi completa i filamenti (Figura 36) 3’ 5’ 3’ 5’ Figura 36: Albero pcr Sticky end 5’-5’ Blunt Ad ogni passo la polimerasi lavora solo sul filamento inferiore e scarta quello superiore. In questo caso si ha una amplificazione lineare (Figura 37) 3’ 5’ 3’ 5’ 3’ 5’ 3’ 5’ Figura 37: Albero pcr blunt Forma a Y Anche in questo caso si ha una amplificazione lineare in quanto le parti nuove non possono essere appaiate dai primers, mentre quelle vecchie si (Figura 38) Forma a Y Altro esempio di molecola a forma di Y (Figura 39) 33 2 1 old 2 new new 1 old Figura 38: Albero pcr y-y Figura 39: Albero pcr y 3.4 Altre operazioni: Ligasi, Fish, Infix-Suffix ligasi. Concatena le stringhe aggiungendo un legame fosforico.La ligazione è un processo di saldatura di frammenti di DNA e avviene grazie ad un enzima denominato DNA Ligasi. La ligazione tra molecole di DNA, è indispensabile per effettuare il clonaggio molecolare (vedi Paragrafo 3.5). Esempio. In riferimento alla Figura 40 la polimerasi allunga il primer complementare al template, poi l’enzima ligasi concatena il neofilamento con il filamento accanto. Si può dire che la polimerasi chiude i “buchi“ grandi e la ligasi i “buchi“ piccoli. Con la notazione introdotta possiamo esprimere la ligasi come segue: α→β→ 0 ⇒ αβ→ γ γ . La ligasi toglie l’ossidrile in posizione 3 e forma un’unica catena. Allungamento per Polimerasi Figura 40: Ligasi 34 Collegamento per Ligasi fish. Si tratta di un pescaggio dei filamenti desiderati, ovvero identifica una specifica sequenza di DNA. Si effettua l’ancoraggio del complementare della parola che si vuole pescare, la si immerge nella popolazione e i filamenti che corrispondono al template si attaccheranno. Questa operazione si basa sulla ibridazione molecolare. ibridazione molecolare. Permette di evidenziare la presenza di una specifica sequenza di DNA all’interno di un pool. Si basa sulla proprietà della molecola di DNA di poter subire i processi di denaturazione e rinaturazione. In condizioni opportune di temperatura i singoli filamenti che presentano sequenze di basi complementari possono appaiarsi e dare origine a molecole a doppio filamento, ovvero possono ibridare tra di loro2 . Per poter individuare un dato filamento di DNA occorre disporre di una molecola detta sonda, che contiene la sequenza complementare a quella che si è interessati. La sonda viene denaturata a singolo filamento e immersa in un pool anch’esso denaturato. A questo punto la sonda potrà appaiarsi al filamento complementare presente tra le migliaia di filamenti non complementari. Si forma cosı̀ un ibrido molecolare a l’avvenuta ibridazione può essere evidenziata mediante un opportuno sistema di rilevazione ad esempio tramite radiografia se le sonde sono state marcate con elementi radioattivi. infix-suffix. Se si vuole duplicare una molecola blunt, si deve conoscere la porzione di DNA corrispondente alla testa e alla coda per poi utilizzare i loro complementari come primers. Non sempre è possibile avere questa conoscenza, cosı̀ si aggiunge al filamento un prefisso e un suffisso per poi usare i loro complementari come primers (Figura 41). b a b a a a b b a b Figura 41: infix-suffix Questa operazione utilizza la ligasi. Se non si conosce la sequenza della molecola N, grazie all’infix, la posso prefissare e sufissare riprendendo il controllo della molecola: αN β. Innanzitutto si prendono due molecole note α e β e gli si leva il fosforo nella estremità 5’ per ridurre la possibilità di aggancio, quindi la ligasi può operare solamente tra la punta e la coda (Figura 42). Una volta avvenuta la ligasi, la polimerasi produrrà una molecola doppia allungando i singoli filamenti. A questo punto si ha il completo controllo della molecola poichè si ha la conoscenza delle parti terminali ed è possibile progettare i primers in modo opportuno per applicare la PCR e amplificare la molecola: P CR(α, β̄) (Figura 43). 2 L’appaiamento avviene per formazione di legami di idrogeno tra le basi complementari appaiate 35 Molecola N a b or a + b a or b Figura 42: Possibili agganci di infix-suffix a a a b b b Allungamento per PCR Figura 43: progettazione primer 3.5 Amplificazione con clonaggio molecolare Tramite clonaggio molecolare è possibile isolare un singolo gene o in generale un frammento di DNA e produrne molte copie identiche. Per clonare un filamento di DNA occorre inserirlo in un vettore di clonaggio tramite il processo di ligazione. I vettori ricombinati vengono successivamente introdotti in idonee cellule ospiti (cellule batteriche o di lievito), ottenendo una grande collezione di cloni ricombinati che viene detta libreria di DNA. Dopo aver costruito una libreria, occorre identificare la sequenza di DNA che contiene il gene. L’amplificazione, effettuata tramite clonaggio o PCR, permette di ottenere in entrambi i casi molte copie di una sequenza di DNA; tuttavia dono diversi i principi e i metodi: con la clonazione si usa la macchina genetica della natura, ovvero i batteri; la PCR invece permette di fotocopiare in modo sintetico (con un processo semplice, poco costoso e soprattutto programmabile) attraverso il meccanismo dei primers che sono i segnali che dirigono il fenomeno amplificativo. 3.5.1 Vettori di clonaggio Sono molecole di DNA in grado di replicarsi autonomamente in una cellula ospite. In tali molecole è possibile inserire, in una posizione nota, i frammenti di DNA da clonare. I singoli vettori ricombinati possono essere introdotti in una cellula ospite (cellula batterica o di lievito) nella quale veicolano il frammento di DNA precedentemente inserito. In tali cellule i singoli vettori replicano il proprio DNA e quello del frammento in esso integrato. Metaforicamente il vettore è come se fosse un bus contenente un passeggero; il bus entra in un box specializzato (cellula) che in pochi istanti replica il bus stesso compreso il passeggero. In questo modo quando la cellula batterica si divide, porta con se i plasmidi compreso il DNA target. Esistono quattro tipi di vettori di clonaggio: i plasmisi, i batteriofagi, i cosmidi e i cromosomi artificiali di lievito. I primi tre usano come cellula ospite il batte- 36 rio Escherichia Coli (comunemente chiamato E.Coli), mentre il quarto il commune lievito di birra. Tali vettori sono in grado di effettuare una replicazione autonoma nelle cellule ospiti, presentano più siti di taglio per enzimi di restrizione in corrispondenza dei quali inserire i frammenti di DNA da clonare (la regione della cellula che contiene i siti si chiama polylinker), inoltre contengono uno o più marcatori selettivi per distinguere le cellule ospiti che contengono il vettore da quelle che non lo contengono; un marcatore selettivo potrebbe essere un gene resistente ad un antibiotico. La scelta dei vettori dipende dalle dimensioni dei filamenti di DNA che si è interessati a clonare. 3.5.2 Enzimi di restrizione La scoperta degli enzimi di restrizione ha reso possibile la tecnologia del DNA ricombinante. Sono enzimi di origine batterica in grado di tagliare una molecola di DNA a doppia elica in corrispondenza di specifiche sequenze di basi. Questi enzimi servono ai batteri per difendersi dall’invasione di virus, in quanto riconoscono e degradano ogni DNA estraneo che penetra nella cellula. La sequenza di coppie di basi riconosciuta da un enzima di restrizione prende il nome di sito di restrizione. Ogni enzima riconosce uno specifico sito che in genere è un palindromo3 I siti di restrizione possono essere costituite da 4 o 6 o più coppie di nucleotidi e le modalità di taglio possono essere le seguenti: • esattamente al centro, generando estremità piatte • in modo asimmetrico, generando estremità a singolo filamento (estremità coesive o appiccicose) sporgenti verso il 5’ • in modo asimmetrico, generando estremità a singolo filamento, sporgenti verso il 3’ Esempi di enzimi di restrizione: Enzima HaeIII Sequenza di riconoscimento HbaI GC • GC C • GCG HpaII C • CGG GGC • C ecoRI G• AAT T C CT T AA• G 50 GG• CC30 30 CC • GG50 3 In linguistica il palindromo é una parola che rimane identica sia se letta da sinistra verso destra che viceversa. Nel caso di DNA, palindromo è una sequenza di nucleotidi a simmetria binaria che presenta la stessa sequenza di basi se letta in direzione 5’-3’ sia su 0 ACC30 un’elica sia sull’altra; esempio 530 GGT CCAT GG50 37 In Figura 44 vediamo alcuni esempi di taglio con altri enzimi di restrizione. Taglio con Sma I Taglio con Bam HI Taglio con Pst I 5’CCCGGG3’ 5’CCC 3’GGGCCC5’ 3’GGG GGG3’ CCC5’ 5’GGATCC3’ 5’G 3’CCTAGG5’ 3’CCTAG5’ 5’CTGCAG3’ 3’GATGTC5’ Estremita’ piatte 5’GATCC3’ G5’ Stiky end 5’ 5’CTGCA3’ G3’ 3’G 3’ACGTC5’ Stiky end 3’ Figura 44: Esempi di taglio con enzimi di restrizione 38 3.5.3 Plasmidi I plasmidi sono molecole circolari di DNA presenti nei batteri. Queste molecole non sono strettamente necessarie alla vita del batterio, ma possiedono dei geni che possono fornire caratteristiche aggiuntive al batterio che ne possiede; tipicamente questi geni codificano la resistenza ad un antibiotico. Inoltre i plasmidi, essendo dotati di un’origine per la replicazione, hanno la capacità di replicarsi autonomamente all’interno di una cellula, e i loro geni vengono espressi indipendentemente dal cromosoma principale. I geni vengono cosı̀ trasmessi alle cellule figlie nella divisione cellulare, conferendogli lo steso vantaggio. I plasmidi possono essere riprodotti in laboratorio e progettati in modo da avere caratteristiche aggiuntive rispetto a quelli naturali. In Figura 45 vediamo un generico plasmide in cui sono evidenziate le caratteristiche principali dove AR e B R sono i geni capaci di conferire resistenza a un antibiotico. I plasmidi si replicano in modo autonomo rispetto al cromosoma che contiene l’inSiti di taglio per enzimi di restrizione BamHI EcoRI PstI B R Origine replicazione(ori) A R Figura 45: Caratteristiche principali di un vettore plasmidico formazione genetica principale, ma il principio è lo stesso, ovvero tramite l’enzima DNA polimerasi, quindi durante la divisione cellulare i plasmidi vengono trasferiti da una cellula all’altra come mostrato in Figura 46. Grazie agli enzimi di restrizione in grado di tagliare il DNA in corrispondenza di sequenze specifiche, è possibile utilizzare i plasmidi per introdurre nei batteri del DNA esogeno al fine di produrre proteine o per amplificare tratti di DNA. La Figura 47 rappresenta il taglio di un plasmide e di un DNA esogeno tramite un enzima di restrizione. La successiva ligazione tramite l’enzima ligasi tra il plasmide e il DNA estraneo, forma una molecola chiamata plasmide ricombinato. 39 Plasmide Cromosoma Figura 46: Trasferimento del DNA plasmidico 5’ 3’ Frammenti di DNA esogeno 5’ 3’ 5’ A 3’ R Taglio in corrispondenza di un sito di restrizione Vettore di clonaggio Figura 47: Ligazione tra molecole di DNA 3.5.4 Algoritmo di clonazione Le tecniche di clonaggio consistono di inserire un frammento di DNA in un vettore, introdurre la nuova molecola in una cellula ospite e successivamente isolare il clone che contiene la molecola di DNA ricombinante. L’algoritmo dettagliato è il seguente: 1. Si sceglie un vettore circolare (plasmide) che include un gene che codifica la resistenza ad un antibiotico A ed un gene per la resistenza ad un antibiotico B. 2. Si linearizza il vettore tagliandolo con un enzima di restrizione in un sito che compare una volta sola e che interrompe la sequenza del gene che codifica l’antibiotico B. Ad esempio supponiamo che tale gene sia codificato dalla sequenza 50 T T T CCCGAAT T CAAA30 30 AAAGGGCT T AAGT T T 50 si applica un enzima di restrizione che spezza tale sequenza eliminando la possibilità di produrre la proteina che produce la resistenza e di conseguenza il plasmide diviene vulnerabile a tale antibiotico (Figura 48) 40 Figura 48: Taglio del plasmide 3. Si adatta il frammento da amplificare con infix-suffix, in modo da avere estremità complementari a quelle del plasmide linearizzato (Figura 49) A A T T C G C T T A A G Figura 49: Adattamento DNA esogeno 4. Si collegano vettore e frammento per opera della ligasi ottenendo plasmidi ricombinati (Figura 50) L’enzima DNA ligasi salda le estremità compatibili A A T T C G Figura 50: Collegamento per ligasi 41 G C T T A A di DNA, senza selezionare le molecole a cui le estremità appartengono. Infatti si possono creare due tipi diversi di molecole in grado di replicarsi una volta inseriti nella cellula: (a) DNA ricombinante ovvero plasmide con inserto DNA esogeno (b) Plasmide circolare puro ovvero il taglio dell’enzima di restrizione si è risaldato, per ligasi infatti può avvenire la reazione del plasmide con se stesso (Figura 51). PLASMIDE 5’TTTCCCGAATTCAAA3’ 3’AAAGGGCTTAAGTTT5’ Taglio con enzima di restrizione 5’TTTCCCG3’ 3’AAAGGGCTTAA5’ 5’AATTCAAA3’ 3’GTTT5’ INSERTO 5’AATTCXXXXXG3’ 3’GXXXXXCTTAA5’ Appaiamento e Ligasi del plasmide con l’inserto Appaiamento e Ligasi del plasmide con se stesso 5’TTTCCCGAATTCXXXXXGAATTCAAA3’ 3’AAAGGGCTTAAGXXXXXCTTAAGTTT5’ 5’TTTCCCGAATTCAAA3’ 3’AAAGGGCTTAAGTTT5’ Figura 51: Due tipi di appaiamento per ligasi 5. Si infetta un batterio non resistente all’antibiotico A con il plasmide ricombinato, sfruttando il fenomeno della infezione univoca (al più un plasmide entra nella menbrana batterica). Attenzione, in questa fase possono entrare nei batteri anche i plasmidi puri come descritto al passo precedente. È da notare che solo una minoranza di batteri assume DNA esogeno (circa 1 su 10.000), per cui i batteri che ospitano il plasmide ricombinato devono essere individuate tra le numerose cellule non trasformate. 6. I batteri vengono posti in pozzetti di crescita separati (un batterio per pozzetto) il cui nutrimento contiene l’antibiotico A; l’antibiotico uccide tutti i batteri privi di plasmide. Dopo ripetute divisioni cellulari si ha la formazione di una colonia di tali batteri. Derivando da una singola cellula originaria, tutte le cellule hanno il medesimo patrimonio genetico, per cui si parla di cloni cellulari (i batteri hanno dimensioni che permettono l’individuazione di singole unità ). Vedi Figura 52 7. Si selezionano nella colonia i batteri resistenti all’antibiotico A, che costituiscono una colonia M 42 COLTURA CON ANTIBIOTICO TIPO A DNA cromosomico Plasmide ricombinato I batteri che non contengono i pasmidi muoiono a contatto con l’antibiotico A Batterio Moltiplicazione cellulare Figura 52: Coltura con antibiotico A 8. Dei batteri sopravvissuti si preleva un batterio da ciascun clone in modo da costruire, dopo crescita in coltura, una colonia mirror M’ della colonia M (Figura 53) Colonia M di cloni sopravvissuti all’antibiotico A 6 6 5 7 Colonia M’. E’ una copia conforme alla colonia M 5 7 8 8 4 1 4 1 2 2 3 3 Pozzetti conteneti i cloni Figura 53: Colonia mirror M’ di M 9. Si espone M’ all’antibiotico B per discriminare i bateri resistenti a tale antibiotico da quelli non resistenti (Figura 54). Applicando l’antibiotico al mirror si vede chi muore in seguito alla sua azione. Se nel mirror muoiono le cellule nei pozzetti 2, 5, 8 allora nella colonia originale, negli stessi pozzetti, deve esserci l’inserto (che ha interrotto il gene che sviluppa la resistenza a B) 10. A questo punto dalla mappa della sopravvivenza in M’ si può capire quali 43 6 7 4 1 Dopo l’esposizione all’antibiotico B sopravvivono solo le colonie resistenti a tale antibiotico, ovvero quei batteri non ricombinati 3 Figura 54: Esposizione all’antibiotico B sono i batteri di M che sono resistenti a B. Si prelevano da M tali batteri e si pongono in una coltura C; tutti questi batteri contengono il plasmide ricombinato. (Figura 55) Colonia M’ Colonia M 6 6 7 5 7 8 4 4 1 1 3 2 3 Dalla mappatura di M’ si deduce che in M i pozzetti 2,5,8 contengono cloni con plasmidi ricombinati Figura 55: Individuazione dei cloni con inserto 11. Per lisi si elimina la membrana dei batteri di C e si filtra il contenuto trattenendo i plasmidi ricombinati. 12. Nel pool dei plasmidi ricombinati si agisce con l’enzima di restrizione in modo da separare il frammento inserito dal vettore originale. Quindi per elettroforesi si selezionano i filamenti di lunghezza uguale a quella del frammento iniziale da amplificare. Considerazioni. La chiave dell’algoritmo sta nel fatto che il sito dell’enzima di restrizione è all’interno del gene dell’antibiotico B, cosı̀ quando un frammento di DNA esogeno viene inserito in quel punto, la funzionalità del gene viene eliminata. Poi tutte le cellule del batterio con plasmide trasformato o no, possono svilupparsi in presenza dell’antibiotico A. Ma le cellule del batterio che contiene il plasmide ricombinato con DNA esogeno non sarà mai in grado di svilupparsi in presenza dell’antibiotico B. Tuttavia, in modo meno preciso si può recuperare il frammento di DNA esogeno senza operare la seconda selezione con l’antibiotico B. In questo caso l’algotimo diventa il seguente; brevemente: 44 1. Linearizzazione 2. Inserimento del passeggero 3. Infezione dei batteri non resistenti all’antibiotico A con plasmidi ricombinati 4. Produzione della colonia di batteri in presenza dell’antibiotico A 5. Selezione dei batteri ricombinati, ovvero la colonia sviluppata al passo 4 6. Recupero dei plasmidi per lisi della cellula 7. Rimozione inserto con enzima di restrizione ed elettroforesi 45 3.6 Sequenziamento Sequenziare un frammento di DNA significa leggere la successione di basi che esso contiene individuando l’ordine con cui A,C,G,T si alternano. Negli anni settanta sono state sviluppate due tecniche. Un metodo, messo a punto da Maxam e Gilbert utilizza un processo di degradazione chimica del DNA; l’altro è stato messo a punto da Sanger e utilizza un approccio di tipo enzimatico. Per tale contributo questi ricercatori condivisero il premio Nobel. Il metodo di Sanger ha subito nel tempo molti miglioramenti rendendolo robusto, affidabile e automatizzabile. Tuttavia questa tecnica ha delle limitazioni per tutte quelle operazione che necessitano di un elevato flusso di informazioni. Nel frattempo sono stati studiati metodi alternativi come il sequenziamento per ibridizzazione, sequenziamento per firma parallela basato sulla ligazione e il pyrosequencing. Il pyrosequencing sta avendo una notevole diffusione in quanto risulta essere estremamente rapido, totalmente automatizzabile e soprattutto a basso costo. Nei prossimi paragrafi verranno analizzate in dettaglio le tecniche più utilizzate, ovvero il metodo di Sanger e il pirosequenziamento, ma per capire meglio il loro funzionamento risulta utile un breve ripasso di alcuni concetti riguardo le reazioni chimiche e del ruolo importantissimo degli enzimi catalizzatori. 3.6.1 L’energia di attivazione delle reazioni chimiche Tutte le reazioni per avvenire spontaneamente, devono svolgersi con liberazione di energia (devono cioè possedere un ∆E negativo): in altre parole, il contenuto energetico dei prodotti deve essere inferiore a quello dei reagenti. Ma il fatto che un processo possibile (spontaneo) dal punto di vista termodinamico non implica necessariamente che esso si verifichi con velocità apprezzabile in ogni condizione. Supponiamo di prendere in esame una reazione spontanea tra i composti A-B e C-D, che dia come prodotti i composti A-D e B-C. È chiaro che per formare il composto A-D è necessario rompere gli altri legami. La rottura di un legame chimico tra due atomi richiede energia almeno per destabilizzare i legami esistenti che devono dare origine ai nuovi composti. Questo si verifica nel momento in cui le molecole dei reagenti collidono tra di loro per dare luogo alla reazione: se l’energia è sufficiente si forma il cosiddetto complesso di attivazione, nel quale i vecchi legami sono resi instabili, mentre i nuovi cominciano a formarsi; è una sorta di stato intermedio tra quello iniziale e quello finale. L’energia necessaria alla formazione del complesso è detta energia di attivazione. Il complesso di attivazione si trova cosı̀ ad un livello energia superiore quello dei reagenti. Una volta formato, il complesso può sia tornare indietro, riformando i reagenti, sia andare avanti, formando i prodotti della reazione. L’energia di attivazione rappresenta un ostacolo allo svolgimento della reazione: se le molecole dei reagenti non posseggono energia sufficiente a superare tale ostacolo, la reazione, pur essendo possibile non può avvenire. Ora, l’energia che consente alle molecole di superare la barriera deriva dall’energia con cui esse si muovono e collidono (energia cinetica), che a sua volta dipende dalla temperatura del sistema (tanto più alta è la temperatura, tanto maggiore è l’energia cinetica delle molecole). Alla temperatura ambiente, che caratterizza la materia vivente, l’energia delle molecole è mediamente insufficiente a consentire loro di superare la barriera di attivazione per la stragrande maggioranza delle reazioni, e 46 quindi queste, anche se teoricamente possibili, di fatto non avvengono, se non in misura infinitamente piccola. Inoltre occorre che la collisione tra gli stomi avvenga in modo giusto. Se ciò non accade, può avvenire una reazione diversa, che porta alla formazione di sottoprodotti, oppure ad un aborto della reazione stessa. 3.6.2 Gli enzimi catalizzatori In un sistema che debba rimanere a temperatura costante e relativamente bassa, come la materia vivente, il solo modo di aggirare questi problemi è quello di ricorrere ai catalizzatori, cioè sostanze che si ritrovano inalterate al termine della reazione e che sono capaci di accelerarne lo svolgimento abbassando l’energia di attivazione, cosı̀ che le molecole deo reagenti, pur avendo una energia cinetica bassa, sono in grado ugualmente di effettuare la reazione. Questi catalizzatori sono gli enzimi.Gli enzimi sono estremamente specializzati, in quanto ciascuno di essi catalizza un solo tipo di reazione utilizzando un ristretto numero di composti simili tra loro, detti substrati; in molti casi il substrato è rappresentato da un singolo composto. Alla base del meccanismo degli enzimi sta il fatto che il substrato si combina temporaneamente con l’enzima per formare un complesso enzima-substrato. La combinazione non avviene a caso, ma in corrispondenza di una specifica zona della superficie dell’enzima, detta sito attivo o sito catalitico. Esso è costruito in modo da riconoscere proprio i substrati ad esso dedicati. Grazie alla formazione del complesso enzima-substrato, le molecole dei substrati vengono orientate nello spazio nel modo corretto per lo svolgimento della reazione,e soprattutto, sempre nelle molecole dei substrati, avviene una serie di modificazioni che favoriscono il complesso di attivazione. In questo modo si abbassa l’energia di attivazione. una volta avvenuta la reazione, il complesso enzima-substrato diviene complesso enzima-prodotti della reazione. Questi si distaccano dall’enzima, che ritorna nella situazione iniziale e può tornare a combinarsi con nuove molecole di substrato, iniziando un nuovo ciclo detto di catalisi (Figura 56) E Enzima + S Substrato E-S Complesso enzima-substrato E-P Complesso enzima-prodotti P Prodotti E Enzima Figura 56: catalisi 3.6.3 ATP Il composto adenosintrifosfato (ATP4 ), o altri nucleotidi equivalenti, costituisce la forma di energia immediata per tutte le forme di lavoro svolte dalla materia vivente. 4 Si ricorda che alcuni nucleotidi, oltre ad essere i monomeri che compongono gli acidi nucleici, svolgono un ruolo essenziale negli scambi di energia all’interno delle cellule, fungono ciè da carburante per le reazioni chimiche; l’ATP è il più importante 47 L’energia utilizzabile è quella che può essere liberata dall’idrolisi dei due legami anidridici che uniscono tra di loro i fosfati: in caso di rottura del primo legame, viene prodotto adenosindifosfato (ADP) e fosfato inorganico; in caso di rottura del secondo, viene prodotto adenosinmonofosfato (AMP) e pirofosfato inorganico (Figura 57) P P Adenina base azotata Adenina base azotata A A P Z H + ATP adenosintrifosfato 2 O P P Z ADP adenosindifosfato Acqua + P Fosfato inorgnico a) rottura di un fosforo P P Adenina base azotata Adenina base azotata A A P ATP adenosintrifosfato Z H + 2 O P P Z AMP adenosinmonofosfato Acqua + P P Pirifosfato inorgnico (ppi) b) rottura di due fosfori Figura 57: idrolisi ATP 3.6.4 Metodo chimico Il metodo di Maxam e Gilbert, oggi praticamente abbandonato, impiega fosforo radioattivo 32P per marcare le molecole ad una estemità. In seguito, il DNA da analizzare viene ripartito in quattro provette, una per nucleotide (A,T,C,G), e sottoposto ad un trattamento chimico che modifica un tipo solo di base per provetta. Si aggiunge poi una sostanza chiamata piperidina che taglia la catena a livello della base modificata, e quindi si procede all’analisi dei frammenti generati mediante elettroforesi su gel. 3.6.5 Metodo enzimatico di Sanger Il sequenziamento viene effettuato su un frammento di DNA clonato in un vettore di clonaggio (vedi Paragrafo 3.5) oppure amplificato mediante PCR. Il DNA viene dapprima denaturato a singolo filamento, poi si fa avvenire l’appaiamento con un primer in una zona adiacente a quella che si vuole sequenzaire. Vengono quindi allestite quattro diverse reazioni contenenti i seguenti materiali: • DNA denaturato con primer appaiato 48 • enzima polimerasi • desossinocleotidi trifosfati (dATP, dCTP,dGTP, dTTP), indicati come dNTP • uno dei quattro didesossinucleotidi trifosfati (ddATP o ddCTP o ddGTP o DDTTP), uno diverso per ogni reazione Un didesossinucleotide (ddNTP) è un nucleotide privato di un gruppo OH in posizione 30 (Figura 58) La mancanza del gruppo OH in 30 determina la terminazione P P P 5’ B 3’ OH Figura 58: ddNTP della sintesi della catena di DNA. Il legame OH è infatti indispensabile per il legame con il nucleotide successivo. Per questo il metodo di Sanger prende anche il nome di sequenziamento tramite terminazione della catena o tramite didesossinucleotidi. I desossi e i didesossinucleotidi sono presenti in ognuna delle quattro reazioni in un rapporto di concatenazione tale che statisticamente possa essere incorporato o il nucleotide normale o il corrispondente didesossinucleotide. Ad esempio se sul filamento template è presente una base T, allora sul filamento di nuova sintesi deve essere incorporato una base A. Ora, nella reazione in cui è presente il ddATP , l’enzima può incorporare il dATP o il ddATP. Se avviene l’incorporazione con il ddATP la sintesi termina, se viene incorporato il dATP, la sintesi continua e l’enzima può nuovamente scegliere tra il dATP o il ddATP: si generano quindi frammenti di DNA di lunghezza diversa, ciascuno dei quali termina nell’estremo 30 con un ddNTP. Analogamente, in ciascuna delle reazioni in cui sono presenti il ddTP, il ddCTP oppure il ddGTP, si ottengono frammenti di lunghezza diversa ciascuno dei quali termina in 30 , rispettivamente con un ddT, un ddC e un ddG. In ciascuna provetta si utilizza un qualche meccanismo che ha l’effetto di tagliare le sequenza in un solo punto. Se indichiamo le provette come PT , PA , PC , PG , allora in PT i nuovi filamenti di sintesi saranno sempre tagliati dopo una base T, in PA sempre dopo una base A, ecc. . . I frammenti cosı̀ ottenuti in ogni reazione, possono essere separati mediante elettroforesi; in ogni corsia vengono fatti correre i frammenti ottenuti in ciascuna delle quattro provette. La sequenza nucleotidica può quindi essere dedotta dalla posizione delle bande nelle corsie: se il frammento più piccolo è localizzato nella corsia del ddA allora il neofilamento inizia con A, il successivi più corto si trova nella corsia G 49 e dunque la seconda base è una G e cosi via . . . In tal modo, risalendo lungo la lastra attraverso le varie corsie, si può determinare la sequenza del filamento di nuova sintesi e la lettura del filamento template originale si ottiene complementando la sequenza precedentemente ottenuta. (Figura 59) ddATP + dNTP 3’ Primer T 5’ ddGTP + dNTP C G G A T C T G A A A A A A G G G G ddCTP + dNTP C C C A A A G G G C C C C C C C C T T A A T T A A G G A ddTTP + dNTP A A G G C C C C T T Prodotto A G G A A C C Reazione T 1 6 8 2 7 3 4 9 5 10 ddC ddT Numero di nucleotidi Sequenza da leggere ddG ddA 10 9 8 7 6 5 4 3 2 1 Elettroforesi Sequenza dedotta dalla distrubuzione delle bande AGCCTAGACT Sequenza filamento template TCGGATCTGA Figura 59: Sequenziamento di Sanger 3.6.6 Pyrosequencing È un metodo di sequenziamento basato sul principio di sequenziamento mediante sintesi. Il metodo si basa sulla possibilità di osservare l’attività della polimerase attraverso l’enzima della chemiluminescenza (quello delle lucciole). Si sintetizza il complementare del template da leggere aggiungendo sequenzialmente un tipo di base per volta, quando una base si ibridizza con il template viene emesso un segnale luminoso; sapendo per ogni passo quale base è stata aggiunta e tenendo traccia dei segnali si risale alla sequenza del template. La base del principio risiede nel fatto che viene rilasciato del pirofosfato (ppi) 50 ogni volta che una base è aggiunta alla sintesi. Questo fenomeno è stato descritto gia negli anni ottanta, e successivamente si è cercato di mettere a punto un sequenziamento mediante sintesi utilizzando nucleotidi marcati, ma senza grandi successi. In seguito venne utilizzato l’enzima luciferasi, ma venivano continuamente osservati falsi segnali quando veniva aggiunta alla sintesi un dATP. Nel 1996 Mustafa Ronaghi ebbe l’intuizione di sostituire il dATP con l’adenosina alfa-trio-trifosfato (dATPαS) nella reazione della polimerasi. Un secondo miglioramento è stato quello di inserire nella reazione l’enzima apirasi formando cosı̀ un sistema a quattro enzimi; l’aggiunta di questo enzima permette di aggiungere nucleotidi in modo sequenziale evitando lavaggi intermedi dopo ogni passo. La procedura è costituita dai seguenti cinque passi. 1. Il DNA da analizzare viene amplificato tramite PCR, quindi viene denaturato a singolo filamento, appaiato con un primer e incubato assieme agli enzimi DNA polimerase, ATP solforilasi, luciferasi e apirasi, e ai substrati adenosina 50 solfofosfato (APS) e luciferina (substrati rispettivamente per gli enzimi ATP e luciferasi) vedi Figura 60. Sequenza da analizzare Enzima ATP solforilasi Primer substrato APS Enzima DNA polimerasi Enzima luciferasi Enzima apirasi substrato luciferina Figura 60: pyrosequencing step1 2. Il primo dei quattro deossinucleotidi trifosfato (dNTP) viene aggiunto alla reazione. L’enzima DNA polimerasi catalizza il dNTP nel neofilamento di DNA se esso è complementare alla base presente nel filamento template. Ogni reazione è accompagnata dal rilascio di pirofosfato (ppi) in una quantità proporzionale al numero di nucleotidi di quel tipo appaiati (Figura 61). 3. L’enzima ATP solforilasi, con l’aiuto del substrato APS, converte tutto il ppi prodotto al passo 1 in ATP. Questo ATP fornisce l’energia all’enzima luciferasi che trasforma il substrato luciferina in ossidoluciferina liberando luce visibile in quantità proporzionale all’ATP. La luce prodotta viene rilevata 51 polimerasi (DNA) n (DNA) n+1 + ppi + dNTP Figura 61: pyrosequencing step2 da un dispositivo CCD ed analizzata da un programma che fornisce come output un picco di segnale. Ogni segnale luminoso è proporzionale al numero di nucleotidi appaiati (Figura 62) ATP solforilasi segnale ATP APS + ppi Luciferasi Luce luciferina tempo Figura 62: pyrosequencing step3 4. L’enzima apirasi continuamente degrada i dNTP che non vengono appaiati e l’ATP rimanente. Quando la degradazione è completata viene aggiunto un’altro dNTP (Figura 63) Apirasi dNTP dNDP + dNMP + fosfato Apirasi ATP ADP + AMP + fosfato Figura 63: pyrosequencing step4 5. Si aggiungono gli altri dNTP ciclicamente fino alla deduzione completa della sequenza. È da notare che al posto del dATP viene usato il dATPαS il quale viene riconosciuto senza problemi dalla polimerasi come se fosse ATP, ma non dalla luciferasi; questo per evitare falsi segnali dovuti all’attività dell’ATP con la luciferasi. In Figura 64 viene mostrato un ciclo del procedimento; al ciclo successivo la polimerasi appaia tre dCTP liberando ppi in quantità tripla rispetto al ciclo precedente, quindi viene emesso un segnale luminoso che il ccd rileva con intensità tripla. La apirasi infine elimina l’unico dCTP non appaiato e il ciclo si ripete aggiungendo altri dNTP. Se vengono aggiunti dNTP non complementari al template non viene emesso alcun segnale luminoso. 52 A C T T G G G A C T T G G G T G A 1 d A T Pa S A C T T G G G T G A A 3 T G A 2 ppi ppi d A T Pa S d A T Pa S ATP solforilasi d A T Pa S d A T Pa S d A T Pa S d A T Pa S d A T Pa S APS ATP ATP Luciferasi segnale 4 5 dCTP LUCE dCTP Luciferina A Apirasi dCTP dCTP tempo d A T Pa S d A T Pa S d A T Pa S Figura 64: pyrosequencing-esempio 4 4.1 Calcolare con il DNA L’esperimento di Adleman (1994) L’esperimento di Adleman risolve il problema del cammino Hamiltoniano: dato un grafo totalmente connesso stabilire se esiste un cammino che, partendo da un vertice iniziale e arrivando ad un vertice finale, visiti tutti i nodi una e una sola volta. Tale problema si risolve in tempo polinomiale con una macchina non deterministica e pertanto appartiene alla classe dei problemi NP. È possibile risolverlo in modo deterministico utilizzando un algoritmo di forza bruta che genera tutti i possibili cicli Hamiltoniani e questo richiede un tempo esponenziale rispetto alla dimensione dell’input (con n nodi, i possibili cicli hamiltoniani sono n − 1! e per la formula di Stirling n! ≈ O(nn )); in particolare si dimostra che il problema NP-completo. L’idea di Adleman è quella di utilizzare un modello di calcolo in grado di generare facilmente lo spazio delle soluzioni del problema. Sfrutta quindi la naturale capacità di calcolo parallelo e di codifica delle molecole di DNA. Adleman codifica i vertici del grafo con piccole sequenza di nucleotidi lunghe 20. Un arco aij che collega due vertici viene rappresentato considerando il reversing del complementare degli ultimi dieci nucleotidi del primo con i primi dieci del secondo. 53 In questo modo è possibile sfruttare il fenomeno dell’ibridizzazione e della ligasi per formare un doppio filamento che rappresenta un cammino. Infatti mettendo in un unico pool ad esempio 1014 coppie delle codifiche dei vertici e degli archi si formano tutti i possibili cammini per ibridizzazione (Figura 65). In A1 B1 B1 A2 A2 B2 B2 A3 B3 A3 B3 Figura 65: Ibridizzazione tra vertici e archi questo modo lo spazio delle possibili soluzioni viene praticamente generato in un tempo polinomiale a differenza della computazione convenzionale. I passi da seguire sono quindi i seguenti: • Codifica dei nodi e degli archi • Ibridizzazione • Ligasi che concatena due nodi consecutivi • Se tra i nodi c’è un cammino allora si forma la catena, ma ovviamente si sono formati tutti i possibili cammini e non necessariamente solo quelli voluti (ad esempio tra il nodo n1 e il nodo n7 ); quindi si isola il cammino desiderato amplificando con PCR(n1 , n7 ) • Il cammino ha una lunghezza di nucleotidi predefinita, ad esempio se il cammino comprende 7 nodi allora esso sarà lungo 140 nucleotidi (20 × 7). I filamenti con questa lunghezza si trovano con l’elettroforesi. • Per essere sicuri che ogni nodo è visitato una sola volta si esegue una selezione per affinità dei filamenti in cui occorrono le codifiche di tutti i vertici: For i = 1 to 7 Fish(Ci) end For Per non perdere il segnale si deve ulteriormente amplificare • Se nel pool finale è rimasto del materiale allora quello è il cammino cercato 4.1.1 Extract Model L’Extract Model è il tipico modello computazionale del DNA Computing secondo Adleman. Questo modello si basa su due passi fondamentali; a) un pool di filamenti di DNA codifica un insieme di soluzioni candidate del problema tipicamente ottenute per annealing e ligazione da un pool iniziale che codifica i dati; b) una procedura che estrae le soluzioni vere separandole da quelle false. L’operazione di ‘extract’ può essere migliorata utilizzando altre operazioni come separate, merge, detect. L’operazione ‘separate’ prende in input un pool T e un 54 filamento S, e fornisce un pool T’ contenente filamenti in cui S compare come sottostringa e un T” contenente gli altri filamenti. Il ‘merge’ produce un unico pool contenente i filamenti di due pool separati. L’operazione di ‘detect’ conferma la presenza o l’assenza di DNA in un pool. In seguito alla realizzazione di queste operazioni biologiche, il costo computazionale degli algoritmi di DNA computing può essere identificato nel numero di ‘extract’ effettuati. Quindi per valutare gli algoritmi secondo questo modello sono necessari solo due parametri: • la dimensione dello spazio delle soluzioni, che corrisponde alla quantità di DNA necessaria per codificare l’insieme delle soluzioni candidate • il numero di operazioni di ‘extract’ necessarie per ottenere il pool finale dei risultati. Questo significa che per migliorare tali algoritmi occorre concentrarsi su tre aspetti: la diminuzione della dimensione dello spazio delle soluzioni, migliorare l’implementazione dell’ ‘extract’ o diminuire il numero di passi di ‘extract’ nella fase finale. 55 4.2 Algoritmi per 3-SAT L’interesse per il problema SAT è dovuto al fatto che viene utilizzato come tool per risolvere numerosi problemi pratici. In particolare SAT può essere ridotto in tempo polinomiale al problema 3-SAT che è un prolema NP-completo in cui data una espressione booleana in forma normale congiunta dove tutte le clausole hanno tre letterali, chiede di stabilire se l’espressione è soddisfacibile. Una formulazione equivalente può essere espressa in termini di risolvibilità di un sistema di equazioni booleane. Indichiamo con il termine letterali una variabile booleana o la sua negazione e consideriamo un sistema di equazione basato sull’algebra booleana assumendo che in ogni equazione i membri di sinistra siano la disgiunzione di tre letterali e il numero di destra sia 1. Una istanza appartiene a 3-SAT se esiste un assegnamento che soddisfa tutte le equazioni del sistema. 4.2.1 Mix&Split Model È un metodo più efficiente per generare lo spazio delle soluzioni. Si mettono in un pool le tessere che codificano X1 e ¬X1 , poi con la tecnica di split si divide il pool iniziale in due pool conservando i tipi, ovvero entrambi i nuovi pool mantengono le informazioni di X1 e ¬X1 . Poi si esegue un estensione dei due pool con la codifica di X2 da una patre e ¬X2 dall’altra, quindi si effettua un mix ottenendo tutte e quattro lepossibiltà di accoppiamento per la coppia X1 e X2 . Si itera il procedimento n volte. X1 X1 Split X1 X1 X1 X1 Estensione Estensione X2 X2 Mix X2 X2 X1 X1 Figura 66: Mix & Split In generale questa tecnica permette di generare per concatenazione tutte le possibili combinazioni di stringhe A∗ a partire da un insieme finito di stringhe. In tempo lineare dunque si genera lo spazio di soluzioni 2n . Il problema è il costo in termini di denaro e tecnologia, e attualmente viene fatto solo in poche aziende al mondo. 56 4.2.2 Algoritmo di Lipton Un primo approccio è il metodo di Adleman, avvero quello di generare le possibili soluzioni e quindi estrarre solo quello che interessa. Per tale scopo si prendono 2n tessere che codificano le variabili e le loro negate, e 4(n − 1) tessere per formare i connettori tra le variabili (quattro per ciascuna coppia). Questi connettori rappresentano le possibili scelte; ad esempio per la coppia di variabili X1 e X2 posso avere i connettori (scelte) mostrate in Figura 67. Quindi si mettono nel pool le tessere e X1 X2 X1 X2 2) 1) X1 X1 X2 X2 4) 3) Figura 67: connettori per ibridizzazione si formeranno tutti i possibili cammini, poi con varie operazioni di extract si separano le soluzioni vere da quelle false. Lo svantaggio è che al crescere del numero di variabili serve un numero spropositato di materiale di DNA e diventa poco conveniente. L’algoritmo di Lipton prevede di generare lo spazio delle soluzioni tramite Mix&Split e verificare l’esistenza di un cammino che rappresenta la soluzione, tramite la ripetizione dell’operazione biologica ‘extract’. L’extract può essere realizzata tramite il fish, che per essere efficiente e sicuro diviene un’operazione molto costosa. Il fish viene realizzato con una sorta di tubo a strati dove ogni sezione corrisponde ad un filtro che fa passare solo determinate molecole (nel nostro caso, solo le molecole che soddisfano la clausola). Lipton risolve m equazioni booleane (m clausole) con 3m operazione di extract: tre operazioni per ogni clausola. Dopo aver generato lo spazio delle soluzioni, la selezione avviene iterando le operazioni di extract per ogni clausola, lavorando ogni volta sul risultato precedente. Ad ogni ciclo si selezionano i letterali che soddisfano l’equazione. Algoritmo: Genera lo spazio delle soluzioni com mix&split e metti in T for j = 1 to m do begin T1 := extract(T,L(1,j)) T := T-T1 T2 := extract(T,L(2,j)) T := T-T2 T3 := extract(T,L(3,j)) T := merge(T1,T2) T := merge(T,T3) end if T not null then prendi un clone e sequenzialo else problema insolubile 57 Dove Ti sono i pool, L(1, j), L(2, j), L(2, j) sono i termini booleani dell’equazione j-esima e m è il numero di clausole. Ad esempio se la prima equazione è X1 ∨ ¬X2 ∨ X3 , i letterali corrispondenti saranno L(1, 1), L(2, 1), , L(3, 1); alla prima iterazione del ciclo for verranno estratte le stringhe che codificano l’1 di X1 , lo 0 di X2 r l’1 di X3 Note: Si può notare che mentre la costruzione dello spazio delle soluzioni è la stessa per tutte le formule aventi lo stesso numero di variabili, l’algoritmo di selezione della soluzione cambia al variare della formula. I procedimenti biologici, inoltre, sono solamente due; l’accoppiamento nella fase iniziale e l’estrazione per affinià nell’esecuzione dell’extract. L’operazione più complicata è l’extract che viene eseguita 3m volte (dove m è il numero di clausole), il tempo di computazione è quindi polinomiale in m. Un algoritmo deterministico con MdT per risolvere 3-SAT richiede un tempo esponenziale nel numero delle variabili per generare lo spazio (2n ) e un tempo polinomiale nel numero delle clausole (m) per verificare se la soluzione è ammissibile. 4.2.3 SAT come rete di contatto SAT può essere formulato come il problema della rete di contatto. Si associa ad ogni clausola C un grafo con due nodi, il nodo sorgente S(C) e il noto target T(C) e, per ogni letterale nella clausola, un arco che collega questi nodi. In Figura 68 è mostrata una istanza di una rete di contatto X Y T(C1) S(C1) Z Y T(C3) Y Z X Y T(C4) S(C4) S(C3) S(C2) Z X X T(C2) Z Figura 68: Istanza rete contatto I successivi algoritmi risolvono SAT come istanza del problema della rete di contatto. 58 4.2.4 Algoritmo di Jonoska Si costruisce un pool contenente molte copie del grafo che rappresenta la rete di contatto. Si esegue uno split separado il pool iniziale A in dure pool equivalenti A e B. Si rimuovono in tutti i grafi di A gli archi etichettati con X1 e nei grafi di B gli archi etichettati con ¬X1 . Quindi si effettua un merge tra il risultato di A e B, e si ripete la procedura (separazione, taglio degli archi, unificazione) per ogni variabile. La formula originale è soddisfatta se alla fine della procedura rimangono uno o più grafi che connettono il nodo sorgente della prima clausola con il nodo target dell’ultima clausola. È da notare che non si trova un’unica soluzione valida, ma bensi tutte, e nel pool finale saranno presenti anche tutti i grafi disconnessi. P0 E1 NotE1 Taglio X1 Taglio NotX1 Merge(E1,NotE1) P1 E2 NotE2 Taglio X2 Taglio NotX2 Merge(E2,NotE2) P2 Figura 69: Janoska 59 4.2.5 Algoritmo di Sakamoto Si realizza un nuovo spazio di soluzioni composto da tessere di DNA che rappresentano i tre letterali di ciascuna clausola, codificando Xi e ¬Xi con nucleotidi Xi complementari (¬Xi = mirr(Xi ovvero ¬X )), in modo tale che se l’annealing proi duce un cammino non valido, si formi un hairpin per complementarietà (Figura 70). Xi Xi Figura 70: hairpin Si consideri un nodo sorgente S(C) e target T(C) per ogni clausola Ci e si costruisce il grafo collegando un arco tra i due nodi per ogni letterale Lj che appartiene alla clausola Ci , si completa poi la rete di contatto aggiungendo un arco tra il nodo target di una clausola e il sorgente del nodo successivo. Quindi si esegue un test per verificare l’esistenza di un percorso incoerente cioè se occorre un letterale sia nella sua forma positiva che negativa. Ogni letterale che risulta incoerente viene rimosso. Il problema originale è soddisfacibile se rimane qualche percorso coerente nella rete di contatto. In Figura 71 è raffigurata una rete di contatto relativa ad una istanza di SAT (3, 4) T(C1) T(C3) T(C2) T(C4) S(C1) Lit(C1) S(C2) S(C3) Lit(C2) Lit(C3) S(C4) Lit(C4) Figura 71: istanza-sakamoto Le tessere cosı̀ composte vengono messe in provetta e per ibridizzazione si crea tutto lo spazio delle soluzioni. Se in un cammino si ha la presenza di una variabile e la sua negata si ha la formazione di un hairpin tra le due tessere. Quindi tramite selezione, in un unico passaggio, si possono eliminare tutte le soluzioni non valide. Lo spazio delle soluzioni è 3m dove m è il numero delle clausole. Il tempo per eseguire l’extract non è più una funzione di m o n, ma bensi risulta essere costante e questo porta ad un miglioramento dell’extract model, ma a discapito di un aumento dello spazio delle soluzioni. 60 4.2.6 Algoritmo di Manca Si converte il problema 3-SAT in un BCP (Bipartite Covering Problem): dato un insieme finito C (clausole) e n coppie di sotto insiemei di C: A1 /B1 . . . An /Bn tali che Ai ∩ Bi = ∅ per i = 1 . . . n, trovare n insiemi Y1 . . . Yn tali che Y1 ∪ . . . ∪ Yn = C e Yi = Ai oppure Yi = Bi . In sostana l’algoritmo codifia strinhe di clausole in un BCP. Ragionando in termini di grafo di contatto, l’algoritmo costruisce stringhe di clausole cosi fatte: per ogni variabile si considerano due nodi S(X) e T(X) (sorgente e target) da connettere con archi etichettati con Cla(X) e Cla(¬X) corrispondenti all’insieme delle clausole in cui occorre il letterale X e a quello in cui occorre ¬X. Quindi si completa il grafo collegando i target di una variabile con i sorgenti della variabile sccessiva. Le stringhe di clausole coincidono con tutti i possibili percorsi dal primo nodo all’ultimo. Un stringa di clausole si dice completa se ogni clausola appartiene a qualche insieme che occorre come arco, qundi si eliminano tutti i percorsi incompleti e quello che rimane è la soluzione dell’istanza del problema (Figura 72) Quindi gli insiemi S(X1) Cla(X1) T(X1) S(X2) T(X1) S(X3) Cla( X2) Cla( X1) S(X1) Cla(X2) T(X2) S(X2) Cla(X3) T(X3) Cla( X3) T(X2) S(X3) T(X3) Figura 72: stringhe di clausole Ai e Bi non sono alro che Cla(Xi ) e Cla(¬Xi ). Di seguito viene mostrato un esempio su quattro equazioni. Si costruiscono coppie di insiemi Ai /Bi mettendo in Ai i pedici delle clausole in cui compare il letterale positivo Xi e in Bi i pedici delle clausole in cui compare il letterale negativo ¬Xi . X1 + ¬X2 + X3 = C1 X1 + X3 + X4 = C2 X2 + ¬X4 + X3 = C3 ¬X1 + X2 + ¬X3 = C3 Xi = Ai se Xi oppure Bi se ¬Xi A1 |B1 = 1, 2|4 A2 |B2 = 3, 4|1 A3 |B3 = 1, 2, 3|4 A4 |B4 = 2|3 La soluzione è composta dagli insiemi che determinano una copertura completa delle clausole. Ad esempio la soluzione A1 B2 B3 A4 che coprono rispettivamente le clausole 1 e 2 , 1, 4, 2 non è corretta poichè non copre la clausola 3. una soluzione corretta potrebbe essere B1 , B2 , A3 , B4 . Gli insiemi si codificano tramite due filamenti di DNA aventi due differenti parti 61 centrali che corrispondono ad Ai e Bi , ma aventi lo stesso sticky end sinistro Xi e lo stesso sticky end destro ¬Xi+1 . Quindi per ogni variabile Xi si hanno due domini con stessi sticky end ma con differenti parti centrali che codificano rispettivamente le clausole che contengono Xi e le clausole che contengono ¬Xi . Per esempio i domini per A1 e B1 hanno la forma della Figura73 5’ X1 3’ C1 C2 3’ 5’ X1 X2 5’ X2 5’ 3’ C4 3’ Figura 73: Codifica insiemi A1 e B1 Si mettono poi molte copie di Ai e Bi in un pool e dopo annealing e ligazione per complementarietà degli sticky end, si ottengono stringhe di clausole (vedi Figura74) e le stringhe di DNA che codificano tutte le clausole rappresentano la soluzione. X1 X2 A1|B1 A2|B2 X2 Figura 74: Stringa di DNA 62 X3 4.3 Considerazioni Il DNA computing inizia nel 1994 con Leonard Adleman mostrando che le molecole biologiche possono essere usate per scopi decisamente non biologici. Adleman ha dimostrato come l’enorme parallelismo di miliardi di filamenti di DNA possono risolvere problemi considerati dificili (NP). Ricordiamo che utilizzando l’approccio del DNA è stato decrittato il codice DES. È interessante sottolineare alcuni aspetti che renderebbero i DNA computer più convenienti rispetto ai calclatori elettronici. A favore dei primi ci sarebbero il notevole calcolo parallelo, il basso consumo energetico e l’elevata densità di memorizzazione. Relativamente al primo aspetto, sebbene l’elevato parallelismo permette teoricamente di eseguire tutti gli algoritmi in tempo polinomiale, sfortunatamente la loro applicabilità è per ora limitata a piccole istanze, infatti mentre gli algoritmi hanno tempo di esecuzione lineare nelle dimensioni degli input, la massa di DNA necessario per la codifica dei dati cresce esponenzialmente. Per esempio il DNA necessario per codificare tutti i cammini di un grafo con 200 vertici avrebbe una massa pari a quella della terra. L’algoritmo di Adleman per il problema del commesso viaggiatore può essere realizzato per un grafo avente al massimo 70 vertici, ma in tal caso può essere risolto in modo più conveniente dai calcolatori al silicio. Attualmente altri argomenti a sfavore dei DNA computer sono la possibilità di errori dovuti sia alla esecuzione pratica delle operazioni biologiche che alla fase di codifica, le quali se non sono sufficientemente accurate potrebbero permettere la formazione di filamenti iniziali non previsti, tuttavia le tecniche di biologia molecolare si evolvono rapidamente e tali errori possono essere notevolmente ridotti. 63 5 XPCR (Cross Pairing PCR) Il modello fondamentale degli algoritmi di DNA è l’extract model di AdlemanLipton e consiste di due passi fondamentali: la generazione dello spazio delle soluzioni, e l’estrazione dei filamenti che codificano le istanze positive del problema. Grazie all’estremo parallelismo del DNA, la complessità di questi due passi è polinomiale rispetto alla dimensione dell’istanza. Tuttavia, mentre il primo passo può essere ulteriormente migliorato utilizzando la procedura di Mix-and-Split, l’estrazione rimane il punto critico del paradigma, ma grazie ad una specializzazione della PCR è possibile renderla più efficiente. La XPCR è una variante della PCR dove due molecole e due primers vengono utilizzati in modo tale che un primer ibridizzi con un singolo filamento di una mlecola e l’altro primer con un singolo filamento dell’altra molecola. Rispetto alla PCR invece di avere un’unica doppia sringa target per l’amplificazione, se ne hanno due con type < αργ > e type < γψβ > La XPCR puo essere utilizzata principalmente in due tipi di applicazioni: l’estrazione e la ricombinazione di DNA: • Estrazione. Extraction(P, γ) = {ξ ∈ P | ∃δ, η t.c.ξ = δγη, δη ∈ A? } γ viene estratto da P. Il nuovo insieme, chiamiamolo Pγ , è una copia delle stringhe in P e non sono le stringhe di P estratte: Pγ * P ma T ype(P ) =⊆ T ype(P ) • Ricombinazione. P = {α1 , α2 . . . αn }, Q = {β1 , β1 . . . βn } → L = {γ1 . . . γn t.c. γi ∈ {αi , βi }} Passo principale della XPCR: È il passo chiave dell’algoritmo di estazione. Si mettono in un pool copie di molecole α . . . γ e γ . . . β, cioè che finiscono e iniziano rispettivamente con la stessa sottostringa γ, e i due primers α e β. La PCR genera la superstringa5 α . . . γ . . . β, e poi si amplifica. L’evento avviene nel seguente modo: i primers ibridizzano con i singoli filamenti delle due molecole liberando le rispettive molecole appaiate. A questo punto i singoli filamenti possono ibridizzare tramite le loro parti complementari γ e γ̄ e la polimerasi utilizza come template proprio questi singoli filamenti e completa la doppia stringa (Figura 75). Formalmente lo schema di esecuzione è il seguente: < αϕγ >, < γψβ >, α, β ⇒ γψβ αϕγ λ λ λ , (αϕγ)c , λ , (γψβ)c , α, β γψβ αϕγ α (γψβ)c , (αϕγ)c , β c ⇒ ⇒ < αϕγψβ > ovvero il risultato dell’overlap concatenation tra αϕγ e γψβ 5 γ superstringa := qualsiasi stringa che include la stringa γ 64 g a b g a b g a b g Separazione g a g a g Ibridizzazione per PCR b b g a g a a g b b b Figura 75: XPCR 5.1 Estrazione con XPCR Il problema dell’estrazione è il seguente: data una specifica sequenza γ e un pool di molecole lunghe n aventi in comune lo stesso prefisso e suffisso, si vuole produrre un pool P 0 contenente solo filamenti che includono la sequenza γ. Si assume che le molecole abbiano la stessa lunghezza n, lo stesso prefix e suffix α e β e l’invarianza di γ ovvero: α1 δ1 γδ2 β,αδ3 γδ4 β → αδ1 γδ4 β, αδ3 γδ2 β, αδ1 γδ2 β, αδ3 γδ4 β Passi: • Split(P ) = P1 , P2 • P 1 := P CR(P1 , α, γ̄) • P 2 := P CR(P2 , γ, β̄) • P = P1 ∪ P2 ; con gel elettroforesi si selezionano le sequenze corte. In questo passo rimangono solo stringhe del tipo α . . . γ e γ . . . β • P := P CR(P, α, β̄) • elettroforesi per selezionare la molecola più lunga: P := separate(P, n + |α| + |β|) Esempio in Figura 76 65 P1 1) P P2 a a g Amplificazione esponenziale della molecola <a..g> 2) a a g b g a b g g a g g a g b a g g Amplificazione esponenziale della molecola <g..b> 3) a b g a b g g b g b a g g b g b g b b 4) Selezione di <a..g> e <g..b> con elettroforesi b a g a g a g b g b 5) b a b g g a b g a g b Superstringa che contiene g e che verra’ amplificata dalla polimerasi 6) Selezione delle stringhe piu’ lunghe con elettroforesi Figura 76: Extract con XPCR 5.1.1 Considerazioni • Se ξ = αδ1 γδ2 β ∈ P ⇒ ξ ∈ XP CR(P, γ) = {ξ ∈ P t.c. ξ = αδγηβ, δη ∈ A? } ovvero le sequenze originali vengono mantenute nel pool finale • Se ξ ∈ P, ξ 6= δγη∀δη ∈ A? ⇒ ξ ∈ / XP CR(P, γ) ovvero le sequenze che non contengono γ vengono eliminate dall’elettroforesi • Se αδ1 γδ2 β ∈ P, αδ3 γδ4 β ∈ P, αδ1 γδ4 β ∈ / P ⇒ αδ1 γδ4 β ∈ XP CR(P, γ)? → Si, infatti la XPCR prende cose di partenza e cose miste: XP CR(P, γ) ! extr(p, γ) 66 5.2 Ricombinazione con XPCR • XPCR come generatore dello spazio delle soluzioni: Partendo da Ii (i = 1 . . . n), facendo 2(n − 1) cicli di XPCR si ottiene tutto lo spazio. Esempio. I1 = X1 X2 X3 X4 X5 X6 I2 = Y1 Y2 Y3 Y4 Y5 Y6 I3 = X1 Y2 X3 Y4 X5 Y6 I4 = Y 1X2 Y3 X4 Y5 X6 sia P = {αIi β, i = 1, 2, 3, 4} ovvero estendo con αprefix e βsuffix For i=2 to n-1 begin XPCR(P,xi) XPCR(P,yi) end L’algoritmo prende P 0 = uno spazio esponenziale Qn i=i (xi + yi ) = {xi , yi }n e in tempo lineare si ha • XPCR per ricombinare strinhe: Esempio. In riferimento all’insieme I1 . . . I4 del punto precedente – Vorrei ottenere: Y1 Y2 X3 Y4 Y5 X6 XP CRy2 (I2 , I3 ) 7→ Y1 Y2 X3 Y4 X5 Y6 = I5 ma è sottointeso anche X1 Y2 Y3 Y4 Y5 Y6 XP CRy4 (I5 , I2 ) 7→ Y1 Y2 X3 Y4 Y5 Y6 = I6 XP CRy5 (I6 , I4 ) 7→ Y1 Y2 X3 Y4 X5 X6 – Vorrei ottenere: X1 Y2 X3 X4 X5 X6 XP CRX3 (I1 , I3 ) 7→ X1 Y2 X3 X4 Y5 X6 In sostanza per una qualsiasi sequenza presa a caso, esiste sempre una sequenza di operazioni XPCR t.c. determina la sequenza voluta. 67 6 Teoria dei Linguaggi Formali (FLT) 6.1 introduzione La teoria dei linguaggi formali ha un ruolo fondamentale nella teoria della computazione. Inoltre molti meccanismi biologici (DNA, sintesi proteica, metabolismi) e fisici hanno una natura discreta dell’informazione e la teoria dei linguaggi formali permette di formulare modelli adeguati per modellare un gran numero di fenomeni in quanto una struttura discreta la si può sempre rappresentare tramite un linguaggio formale. La nozione stessa di problema, una volta codificato, ha uno stretto legame con i linguaggi e tra tutti i problemi, quelli di decisione (la cui risposta è si o no), sono quelli di maggior interesse. Fissato un modello di calcolo è possibile rappresentare i parametri del problema mediante stringhe di simboli propri del modello (codifica P dell’istanza). Dato quindi uno schema l’alP?di codifica per un problema π e sia fabeto usato dallo schema, l’insieme conterrà le codifiche di tutte le istanze del problema e non solo. Il sottoinsieme delle codifiche delle istanze positive caratterizza in modo il problema: Punico ? t.c.ω è codifica di una istanza positiva } Lπ = {ω ∈ Segue che il problema π può essere visto come il problema di riconoscere il linguaggio corrispondente Lπ Riconoscere un linguaggio è uno dei quattro metodi per definire i linguaggi formali; due di tipo matematico e due di tipo algoritmico: 1. Metodi logici: descrizione tramite proprietà L = {α ∈ A? t.c. P (α)} 2. Metodi algebrici: costruzione del linguaggio tramite operazioni insiemistiche 3. Metodi generativi:grammatiche che consistono in algoritmi che producono tutte e solo le parole del linguaggio 4. Metodi reconoscitivi: automi che per ogni α ∈ A? dicono se α appartiene o meno al linguaggio Nota: Dato un algoritmo riconoscitivo se ne ottiene uno generativo (l’algoritmo che prende tutte le parole di A? ) e genera tutte e sole quelle che riconosce appartenenti ad L. Il viceversa non è vero. 6.2 Stringhe e linguaggi • un alfabeto è un insieme finito e non vuoto di oggetti detti simboli • una stringa, detta parola, è una sequenza finita di simboli di A. L’insieme delle possibili sequenze su A si indica con A? • un linguaggio su A è un elemento di ℘(A? ). Si indica con L un generico linguaggio e con L la classe dei linguaggi • operazioni: – unione ∪ 68 – intersezione ∩ – differenza \ – concatenazione • – iterazione ∗ ( o stella di kleene) Descrivere un linguaggio attraverso la forma delle sue stringhe oppure tramite una grammatico o un automa è un qualcosa di simile. Infatti una grammatica o un automa si limitano a stabilire le regole che possono essere applicate a certe stringhe iniziali per generare o riconoscere una stringa del linguaggio. 6.2.1 Gerarchia di Chomsky • Il concetto di grammatica di Chomsky si basa su un sistema di riscrittura di stringa: meccanismo di rimpiazzamento • Si chiama grammatica di Chomsky una quaterna G = (A, T, S, R) t.c. – A è l’alfabeto – T ⊂ A è un insieme di simboli detti terminali – S ∈ A\T è un simbolo di Start del linguaggio – R ⊂ A? × A? è l’insieme delle produzioni, delle regole • Quando si scrive α →G β (riscrivi α con β) si indica (α, β ∈ R), R ⊂ A? × A? • A partire dalla grammatica G si definisce una regola di riscrittura ad un passo ⇒G : 0 0 ω ⇒G ω sse ∃α, β, γ, δ ∈ A? t.c. (α →G β) ∧ (ω = γαγ) ∧ (ω = γβδ) • A partire da una relazione ⇒G si definisce una riscrittura in più passi ⇒G : 0 0 ω ⇒?G ω sse ∃α1 . . . αn t.c. α1 = ω ∧ αn = ω ∧ αi ⇒G αi+1 ∀i • Il linguaggio generato da una frammatica G è L(G): L(G) = {α ∈ T ? |S ⇒?G α} • A? si chiama universo linguistico dell’alfabeto A. A? è un monoide rispetto alla concatenazione che è associativa ed ha λ come elemento neutro (λ = stringa vuota) • Per generare un linguaggio di una grammatica G, si parte dal simbolo S e si fa una riscrittura a più passi rimpiazzando sottostringhe secondo le regole di R. Possono esserci più regoole applicabili per uno steso passo; in questo caso si procede in modo non deterministico, scegliendo tra le regole applicabili e tra i vari modi di applicarle. Ci si ferma quando non ci sono più regole da applicare. La parola ottenuta appartiene al linguaggio solo se appartiene a T ?. Esempio. L(G) = {an bn cn }|n ∈ N linguaggio trisomatico di nteresse biologico poichè modella lo sviluppo di un embrione nelle sue tre parti (mesoderma,endoderma,ectoderma). È generato dalla seguente grammatica G. A = {a, b, c, B, S}; T = {a, b, c}; R = {S → abc, S → aSBc, cB → Bc, bB → bb} 69 6.2.2 Classi di Chomsky Nel definire una grammatica ci sono quattro tipi di regole e una grammatica si dice di tipo i(i = 0, 1, 2, 3) se tutte le sue produzioni sono di tipo i. Ogni regola di tipo i è necessariamente di tipo i − 1. Le classi di Chomsky corrispondono alle classi dei linguaggi L0, L1, L2, L3 generati dalle grammatiche di tipo 0, 1, 2, 3. Tipi di regole: • indichiamo con N i non terminali: A\T • indichiamo con le lettere minuscole i simboli terminali • le regole hanno la forma α → β con α e β stringhe ∈ A? Tipo 0. α ∈ A? N A? Cioè in α ci deve essere almeno un simbolo non terminale (non può essere ab → bb). Questa condizione impedisce a stringhe terminalizzate di continuare la derivazione. Avere due tipi di simboli, terminali (T) e non teminali (N) è fondamentale. Sistemi grammaticali composti solo da simboi terminali sono sistemi poveri. Quando si genera qualcosa e ci sono simboli N, allora quella generazione contiene forme immature che possono ancora essere sviluppate. L’introduzione di simbili non terminali e la scelta di accettare solo simboli terminali, definisce implicitamente una strategia. In generale infatti, il modello di Chomsky è basato su una generazione non deterministica, si deriva a caso applicando ogni produzione possibile e se si prendono strade non finalizzate al risultato finale non si terminalizza. La distinzione tra T e N serve quindi a selezionare tra cammini inutili (stringhe parassite) da cammini buoni. Vedremo che {L(G)|G : 0} = RE Tipo 1. (0) ∧ (|α| 6 |β|) Le grammatiche con queste regole sono equivalenti alle grammatiche CS, sensibili al contesto, aventi le produzioni del tipo: αXβ → αγβ con X ∈ N e αγβ ∈ A? e γ 6= λ. La riscrittura aviene in modo contestuale solo se è presente il contesto α e β le quali fungono da stringhe di controllo. 70 Tipo 2. (1) ∧ |α| = 1 Queste grammatice coincidono con le grammatiche CF libere dal contesto le cui produzioni sono del tipo: X → γ dove X ∈ N, γ ∈ A? , γ 6= λ Si vede subito che CF ⊆ CS poichè la grammatica CF è una grammatica CD particolare in cui α e β sono vuote. Inoltre si dimostra che L2 (CF) può esprimere simmetrie binarie e L1 (CS) può esprimere simmetrie ternarie; per cui il linguaggio trisomatico è discriminante tra L1 e L2: è generato da una G : 1 e quindi ∈ L1 ma ∈ / L2 perchè quest’ultima ha simmetria binaria, qundi CF CS. Tipo 3. (2) ∧ (β ∈ T ∪ T · N ) e α ∈ N Questa regola dice che a destra, ovvero in β c’è un sombolo N oppure una coppia TN, ad esempio x → aY, x → b. Esempio. Riprendiamo la G per il linguaggio trisomatico e identifichiamo il tipo di grammatica S → abc à Tipo 2 S → aSBc à Tipo 2 cB → Bc à Tipo 1 bB → bb à Tipo 1 La G è di tipo 1¥ 6.2.3 Inclusioni Valgono le seguenti inclusioni strette: L3 ↓ ASF ⊂ L2 ↓ PDA ⊂ L1 ↓ LBA ⊂ L0 ↓ MdT La classificazione è importante perchè indica i quattro livelli di difficoltà nel generare i linguaggi è quindi nel calcolare. Gli strumenti di calcolo che generano i linguaggi sono sempre più complicati e vanno dagli ASF per L3 ai PDA (nastro a pila) per L2, alle MdT con nastro limitato per L1 e alle MdT per L0 Le forme di interesse naturale si possono modellare con linguaggi compresi tra tipo 1 e tipo 2, devono cioè avere una qualche forma di contestualità , ovvero quello che avviene in una stringa dipende da quello che avviene in un’altro punto della stringa stessa (si dice che ci sono dei collegamenti a distanza). 71 6.3 6.3.1 Risultati fondamentali Teorema di universalità di Chomsky {L(G)|G : 0} = RE ovvero L0 = RE Ricordiamo che: • Sia f una funzione da A? in A? (A alfabeto finito), si dice che f è calcolabile se esiste un sistema fisico che assunto uno stato che codifica un ingresso di f si evolve nel tempo raggiungendo uno stato finale solo se f è definita sull’ingresso; lo stato finale codifica il risultato di f. • Un linguaggio L su un alfabeto A si dice ricorsivamente enumerabile o semidecidibile o effettivamente generabile se L è il codominio di una funzione calcolabile. La classe di questi linguaggi si indica con RE. • In genere si dice computazionalmente universale un qualsiasi formalismo che fornisca un metodo di costruzione per ogni linguaggio in RE. Questo teorema è importante perchè generare = calcolare e dicendo che G:0 = RE diciamo che con tale grammatica possiamo generare tutto ciò che è possibile generare con le MdT, cioè che G:0 ha la stessa potenza delle MdT. Ad esempio posso calcolare una funzione f se riesco a costruire una macchina che genera il suo grafico6 . Quindi so calcolare f se so generare il suo grafico e viceversa. La calcolabilità , previa opportuna codifica, è espressa in termini di linguaggi formali e invece di studiare la calcolabilità si studia la generabilità del linguaggio. Quindo le G:0 calcolano tutto cio che possono calcolare le MdT e le MdT calcolano il calcolabile per la tesi di Church, e in conclusione, con le grammatiche è possibile sviluppare tutta la calcolabilità . Dimostrazione di RE= L0 ⊆) Sia L(M ) ∈ RE con M = M dT si vuole costruire una grammatica GM di tipo 0 che genera lo stesso linguaggio di M. Suddividiamo le regole di GM in regole di ingresso, di programma, di uscita e di allungamento. • Regole di ingresso S0 → $S1 S1 → S# S → Sx∀x ∈ A S → q0 6 graf ico(f ) = {X, f (X)|X ∈ T ? } dove T = alfabeto di f 72 S0 è il simbolo iniziale e q0 un simbilo che rappresenta lo stato iniziale. I simboli $ e # indicano l’inizio e la fine del nastro. La terza produzione simula la trascrizione di simboli dell’alfabeto sul nastro e produce la stringa $q0 α#; le produzioni applicate nell’ordine di esposizione corrispondono a caricare la macchina M con ingresso α. • Regole di programma ∀ regola qi xyqj L (Spostamento a sinistra) qi x → q¯j y z q¯j → qj z ∀ regola qi xyqj R (Spostamento a destra) qi x → yqj • Regole di allungamento # → b# $ → $b Questa regola ci permette di poter simulare un nastro illimitato, ad esempio: $bbb . . . b# → $bbb . . . bb# è stata aggiunta una casella vuota • Regole di uscita qf x → xqf 0 qf # → q# # 0 Bq# → q# # xq# → qf 0 x 0 Idem per $ # → λ 0 $ →λ Queste regole spostano qf fino alla fine e simulano la sostituzione di B 0 con # da destra a sinistra Le regole cosı̀ ottenute simulano la MdT e formano un sistema di rimpiazzamento binario in cui tutte le stringhe non hanno più di due simboli, chiamato anche Forma Normale di Kuroda. Si ha dunque L(GM ) = {α|S0 →? α} e per costruzione si ha che L(Gm ) = Output(M ). Quindi per ∀M ∈ M dT esiste una grammatica GM tale che L(M ) = L(GM ) e tale che G è di tipo 0. ¥ ⊇) Data una G:0 è possibile costruire un M ∈ M dT tale che L(G) = L(GM ). Si implementano tante procedure quante sono le regole di G. Si inizia con S sul nastro e in modo non deterministico M si porterà in uno stato qi e cercherà sul nastro la codifica di αi →G βi e rimpiazzerà αi con βi . ¥ 73 Considerazioni. Le regole di uscita che cancellano i blank sono importanti, infatti l’uscita della MdT è composta dal contenuto del nastro senza i blank estremi. Senza questa convenzione, la potenza della MdT si ridurrebbe notevolmente: la motivazione sarà resa nota con il teorema di Savich (vedi Paragrafo 6.3.4) La MdT è cosı̀ potente perchè cancella; se non cancellasse sarebbe equivalente ad un G:1. Il meccanismo di cancellare aumenta la potenza computazionale e determina la differenza tra i linguaggi RE e CS. Dal punto di vista filosofico corrisponde al tornare indietro, al calcolo reversibile e il non cancellare rende il calcolo unidirezionale indebolendolo in potenza computazionale. Nota: Come si riconosce se un formalismo è più deole di un’altro? F1 < F2 à Formalismo F1 più debole di F2. I due formalismi generano due linguaggi L(F 1) e L(F 2) e le rispettive classi di linguaggi, ovvero tutti i linguaggi generati: L1 = {L|L = L(F 1), F 1 ∈ F1} L2 = {L|L = L(F 2), F 2 ∈ F2} Un formalismo è più piccolo di un’altro se la classe dei linguaggi associati è strettamente inclusa nell’altro: L1 ( L2 6.3.2 Teorema di Kleene Partendo da linguaggi finiti ed utilizzando le operazioni di concatenazione, unione e stella di Kleene si generano linguaggi regolari. Tali linguaggi vengono riconosciuti dagli automi a stati finiti (ASF). Gli ASF partendo da uno stato iniziale q0 , scandiscono la stringa in input secondo le regole di transizione e se alla fine si trovano in uno stato finale allora l’automa accetta la stringa. ASF = (A, Q, q0 , F, R) Il linguaggio generato è L(M ) = {α|q0 α →? q ∈ F } La differenza tra grammatica e automa sta rispettivamente nel generare e riconoscere una parola α: g : S →? α : genera α ASF : q0 α →? q ∈ F : riconosce α Il teorema dice che: {L(M )|M ∈ ASF } = L3 = REG dove REG = CLOS(FIN,·, ?, +) Dove CLOS indica la chiusura algebrica rispetto alle operazioni indicate. 74 Dimostraione: • {L(M )|M ∈ ASF } = L3: Data una G:3 avente produzioni del tipo α →G β con α = x ∧ β = T ∪ T · N , si può costruire una M ∈ ASF che genera lo stesso linguaggio e viceversa: S → aS1 S1 → bS2 .. . ⇔ Si → b q0 a → q1 q1 b → q2 .. . qi b → qf • L3 = REG: Dimostriamo che ogni L(M) con M ∈ ASF è ottenibile con unioni, concatenazioni e stella di Kleene di linguaggi finiti su un alfabeto A. Il viceversa è ovvio. Sia Q = {q1 . . . qn } gli stati di M con q1 stato iniziale e F = {qm . . . qn } gli stati finali. Cosideriamo il linguaggio: Lni,j = {α ∈ A? |qi α → qi+1 β → . . . qj ∈ F } ovvero il linguaggio fatto dalle parole α che vengono lette passando dagli stati qi . . . qj compresi n stati intermedi ∈ Q Per esempio L3i,j è il linguaggio formato da tutti i simboli che legge la macchina per passare dallo stato i allo stato j passando per tre stati intermedi. Per induzione si osserva che: base: L0i,j ⊆ A, tale linguaggio è finito e quindi ∈ REG infatti: L0i,j = {α|qi α →? qj , Q = 0} = {a|qi α → qj , a ∈ A} = {a} ⊆ A, quindi essendo A finito, lo è anche L0i,j e L0i,j è regolare. induzione: k k ? k k Lk+1 i,j = Li,k+1 · (Lk+1,k+1 ) · Lk+1,j + Li,j ∀i, j ∈ N Infatti per andare da qi a qj avendo k + 1 stati si può passare o meno da qk+1 e i due tipi percorso sono compresi rispettivamente in: Lki,k+1 · (Lkk+1,k+1 )? · Lkk+1,j e in Lki,j Per ipotesi induttiva Lki,j è regolare ed essendo Lk+1 i,j composto da unione e concatenazione è esso stesso regolare. Quindi: L(M ) = S qk ∈F Ln1,k = REG ⇒ L3 = REG dove Q = {q1 . . . qn } con q1 iniziale e qk sono stati finali e L(M ) = {Ln1,m ∪ Ln1,m+1 ∪ . . . ∪ Ln1,n } ¥ 75 6.3.3 Teorema di Ginzburg È un teorema di chiusura. Sia C una classe di Chomsky allora: L ∈ C ⇒ L ∩ R ∈ C ∀R ∈ REG Ovvero i linguaggi regolari hanno la proprietà di conservare la gerarchia di Chomsky, o meglio l’intersezione con i regolari non fa cambiare la classe di complessità . Dimostrazione. Si dimostra per casi, L ∈ Li con i = 0, 1, 2, 3 • Se L ∈ RE banale RE ∩ REG = RE poichè REG ⊂ RE • Se L ∈ REG, basta considerare che REG è chiusa rispetto unione e complemento, quindi rispetto l’intersezione: L∩R= L∪R • L ∈ CS (G:1) se L ∈ CS, R ∈ REG ⇒ L ∩ R ∈ CS ∃M ∈ ASF tale che R = L(M ) si vuole costruire una nuova grammatica corrispondente al linguaggio intersezione. Apicizzo le reogole di G: ax → yz ≡ a0 x0 → y 0 z 0 ottenendo G0 Aggiungo le seguenti regoleottenedo G00 : 0 β ∀x0 α0 → y 0 β 0 ∈ G0 x0q0 α → yq0 0 0 0 a qi b → ab qj ∀qi a → qj ∈ M bqi → b ∀qi b → qf ∈ M, qf ∈ F Questa grammatica G00 partendo da Sq0 genera stringhe uguali a quelle che avrebbe generato la G, con la differenza di avere stringhe apicizzate e indici qi . Gli indici e gli apici spariscono solo se la stringa è riconosciuta anche dall’automa M (per costruzione). Tale G00 è di tipo 1. Esempio: Sq0 0 →? a01q0 a02 . . . a0n → a1 a02qi . . . a0n →? a1 a2 . . . an Gli ultimi due passaggi avvengono sse la stringa è riconosciuta da M. ¥ • L ∈ CF (G:2) se L ∈ CF, R ∈ REG ⇒ L ∩ R ∈ CF Apicizzo G ottenendo G0 , aggiungo le seguenti regole di tipo 2 ottenendo G00 : S → Sq0 0 qf ∀qf ∈ F x → yz ≡ xq1 q2 → yq1 q3 zq3 q2 ∀q1 , q2 , q3 ∈ Q 76 x → y ≡ xq1 q2 → yq1 q3 aq,q0 → a ∀q1 , q2 ∈ M ∀a ∈ T, ∀q1 , q 0 ∈ M La seconda e la terza regolea mettono coppie di stati, la quarta dice che: aq,q0 diventa a se nell’automa nello stato q, leggendo a passa in q 0 . Se la grammatica originale generava: S → x1 , x2 . . . x11 e poi terminalizza in a1 , a2 . . . a11 , ora la nuova G00 , partenso da Sq0 qf genera stringhe del tipo aq0 q1 bq1 q2 . . . e tale stringha terminalizza solo se l’automa riconosce la parola secondo la sequenza: aq0 → q1 , bq1 → . . . qk . Esempio: S →? x1q1 q3 , x2q3 q7 , x3q7 q9 , . . . x11q15 q17 con q17 ∈ F . Nella stringa ci sono tutti ipossibili stati da q0 a qf e i pedici spariscono quando la stringa è riconosciuta da M. Quindi se l’automa riconosce la stringa, tale stringa viene riconosciuta anche dalla G00 che è di tipo 2 per costruzione, quindi L(G00 ) ∈ L2 6.3.4 Teorema di Savich Questo teorema determina il passaggio dalla contestualità alla universalità . ∀L ∈ RE = L0, ∃L0 ∈ CS = L1 t.c L = {α|∃n : α è di tipo α#n ∈ L0 } con # terminale. La potenza di calcolo degli RE deriva dalla possibilità di cancellare, avere cioè un calcolo bidirezionale (avanti e indietro). Esempio. L = {α1 , α2 , . . .} ∈ RE → L0 = {α1 ##, α2###, . . .} ovvero allungando opportunamente le parole di L, tutto quello che si otteneva con una MdT ora lo si può fare con un LBA. Questo significa che se si ha la possibilità di cancellare caratteti, la complessità dell’automa che generara il linguaggio è maggiore. l’operazione di cancellare è un operazione difficile proprio perchè fa aumentere al complessità dell’automa. Capire bene cosa eliminare o dimenticare per una gestione informativa efficiente è una operazione tutt’altro che banale. Ricordiamo che: L1 = CS ( REC ( RE = L0 • REC ( RE Costruisco un Lk che è RE ma non ricorsivo. Si numerino le grammatiche Gi e le parole αi di A? , ora ∀i, j ∈ N × N si controlli se Gi nei primi j passi ha trovato αi ; in caso positivo si aggiunga αi in Lk , altrimenti no. Questo è un metodo generativo per costruire Lk , quindi Lk ∈ RE, ma non si conosce un modo finito per stabilire se data una stringa ∈ Lk o ∈ / Lk • L1 ⊂ REC La condizione |α| 6 |β| su α → β fa scendere nei decidibili ovvero che presa α ∈ L1 si può stabilire se α ∈ L1 o se α ∈ / L1 . Preso G:1 e una stringa α tale che |α| = n, la generazione di α tramite le regole (che sono finite) contiene stringhe al più lunghe n (S → α1 → 77 α2 . . . → α) e quindi controllando tutte le possibili generazioni posso dire se α può essere generata. • L1 ( REC Si numerino tutte le grammatiche Gi di L1 e le stringhe αi di A? . Sia LR = {αi |αi ∈ / L(Gi )}, LR è ricorsivo poichè le grammatiche sono decidibili; ora se LR fosse generato da G:1 ovvero da CS avremmo due casi: 1. γ ∈ LR → γ ∈ {αi |alphai ∈ / L(Gi )} → γ ∈ / L(Gi ) ovvero ∈ / L(Gcs ) ⇒ γ∈ / LR Assurdo. 2. γ ∈ / LR → γ ∈ / {αi |alphai ∈ / L(Gi )} → γ ∈ L(Gi ) ovvero ∈ L(Gcs ) ⇒ γ ∈ LR Assurdo. ¥ Dimostrazione del teorema di Savich: • Apicizzo le regole d G per trattare tutti i simboli come non terminali (G’) Nella forma contestuale si ha αXβ → αγβ, ma in G:0 la X si può cancellare, mentre in G:1 (contestuale) non si può perchè deve essere |α| 6 |β| quindi nella trasformazione da α a β al più si aggiunge materiale e non si può toglire nulla. In G:0 sarebbe dunque αXβ → αβ, cosı̀ inserisco in G’ un simbolo ⊥ come simbolo fittizio da mettere al posto della cancellazione. α0 X 0 β 0 → α0 ⊥β 0 : significa che quando in G:0 cancello, in G:1 metto ⊥ alposto del carattere nullo. • S → $S 0 :il $ funge da marcatore per l’inizio della stringa • ⊥X 0 → X 0 ⊥ : sposta il ⊥ a destra • $X 0 → X$ : sposta i simboli diversi da ⊥ a sinistra • $⊥ → #⊥ • #⊥ → ## : i ⊥ alla destra del $ diventano # che è simbolo terminale Alla fine avrò tutti i simboli diversi da ⊥ a sinistra de $ e il ⊥ alla destra del $. L’idea è spostare il ⊥ in fondo a destra e farlo diventare # e il teorema è cosı̀ dimostrato, perchè ho messo in fondo tutti i cancelletti che sono simboli terminali, e il tutto è stato fatto con regole di tipo 1 Esempio. $X 0 Y 0 ⊥Z 0 ⊥ $X 0 X 0 Z 0 ⊥⊥ XXZ$⊥⊥ XXZ#⊥⊥ XXZ### regola regola regola regola 3 4 5 6 Non permettendo l’operazione di cancellazione, l’automa genera la stringa voluta con l’aggiunta di altro materiale prodotto durante il calcolo. Ecco perchè con le MdT è importante cancellare i blank generati in fase di elaborazione, altrimenti si produrrebbero linguaggi CS declassificando la potenza di calcolo. 78 References 1 Chieffi, Dolfini, Malcovati, Pierantoni, Tenchini. Biologia e Genetica. EdiSES edizioni. 2 Vincenzo Manca. Frontiere della ricerca, DNA Computing il calcolatore in provetta. Mondo digitale n.4, p.19-32, Dicembre 2006. 3 Giuditta Franco, Cinzia Giagulli, Carlo Laudanna, Vincenzo Manca. DNA Extraction by Cross Pairing PCR. LNCS 3384, p.106-114, Springer-Verlag, 2005. 4 Vincenzo Manca. On the logical and geometry of bilinear forms. Fundamenta Informaticae, volume 64 p.261-273, IOS Press, 2005. 5 Vincenzo Manca, Giuditta Franco. Computing by polymerase chain reaction. Mathematical Biosciences n.211, p.282-298, 2008 6 Vincenzo Manca, Claudio Zandron. A clause string DNA algorithm for SAT. Lecture Notes in Computer Science, vol 2340, p.172-181, Springer-Verlag, 2001. 7 Vincenzo Manca. Linguaggi, Grammatiche e Automi. Dipartimento di Informatica, Università di Verona. 8 Appunti del corso di Modelli di calcolo non convenzionali. Dipartimento di Informatica, Università di Verona. 9 H.Papadimitriou. Computational Complexity. Addison Wesley Longman. 79