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