DNA počítače Řešení NP-úplných problémů za použití DNA počítačů Jaromír Malenko 2001
Experimenty Menmology = MENtal MOlecular bioLOGY Založeny na Filtrovacích modelech Splétajících modelech Operace, kde jsou dvě molekuly DNA oříznuty enzymy tak, že dva vzniklé konce se slepí k sobě a tím vzniknou nové molekuly. Výpočetní modely se nazývají H–systémy. Konstruktivních modelech
SAT problém R. Lipton f=(x 1 v ~x 2 v x 3 ) & (x 2 v x 3 ) & (x 1 v x 3 ) & ~x 3 Řešení je založeno na převedení na grafový problém a skládá se ze 2 fází: Generování všech cest v grafu Hledání pravdivostního ohodnocení, které splňuje formuli
SAT problém Pro formuli s k proměnnými sestrojíme graf Vrcholy v 1,…,v n odpovídají proměnným vrcholy a 0 i, a 1 i odpovídají pravdivostním hodnotám false a true Cesta v i-1 a j i v i znamená, že proměnná x i nabývá hodnoty j, kde 0 = false a 1 = true Cesta z v 0 do v k ukazuje pravdivostní ohodnocení k proměnných x 1,…,x k v0v0 v1v1 v2v2 v k–1 vkvk a01a01 a02a02 a03a03 a 0 k–1 a0ka0k a11a11 a12a12 a13a13 a 1 k–1 a1ka1k
SAT problém – 1. fáze Generování všech cest z v 0 do v k Stejně jako Adleman: uvažujme oligonukleotidy přiřazené vrcholům, a doplňkové posloupnosti přiřazené prefixům a sufixům těchto posloupností Ochlazením posloupnosti zakódují cesty v grafu Vybereme všechny cesty začínající ve v 0 a končící ve v k Graf odpovídá proměnným ne formuli, nemá cykly
SAT problém – 2. fáze Na vstupu dostává zkumavku N 0 Vybere všechny cesty, které splňují první klauzuli a tím vytvoří N 1. Pokračujeme stejným způsobem: Ze zkumavky N i, 0 i k–1 (splňující prvních i klauzulí) vybereme cesty splňující klauzuli i+1 a vytvoříme zkumavku N i+1 Jestliže zkumavka N k obsahuje nějakou molekulu, je formule splnitelná
SAT problém – příklad f = (x 1 v x 2 ) & (~x 1 v ~x 2 ) Graf: Program: (1)input(N 0 )00, 01, 10, 11 (2)N 1 = +(N 0, a 1 1 )10, 11 (3)N’ 1 = -(N 0, a 1 1 )00, 01 (4)N 2 = +(N’ 1, a 1 2 )01 (5)merge(N 1, N 2 ) = N 3 10, 11, 01 (6)N 4 = +(N 3, a 0 1 )01 (7)N’ 4 = -(N 3, a 0 1 )10, 11 (8)N 5 = +(N’ 4, a 0 2 )10 (9)merge(N 4, N 5 ) = N 6 01, 10 (10)detect(N 6 ) v in v1v1 v out a01a01 a02a02 a11a11 a12a12
Rozšíření filtrovacích metod Filtrovací metody používají následující operace, které mají konstantní čas při paralelním provádění N, N 1,…,N k jsou zkumavky (multimnožiny molekul), S je množina molekul remove(N, S): odstraní ze zkumavky N všechny molekuly obsahující jako podposloupnost aspoň jeden výskyt každého prvku S union({N 1,…,N k }, N): vytvoří zkumavku N spojením zkumavek N 1,…,N k copy(N, {N 1,…,N k }): vytvoří k kopií N označených N 1,…,N k select(N): jestliže je N neprázdná, pak vyber náhodně nějaký prvek z N, jinak vrať empty
Hamiltonská cesta – generování všech permutací Problém: Vygenerujte množinu P n všech permutací množiny {1, 2, …, n} Vstup: Zkumavka N obsahující všechny řetězce tvaru p 1 i 1 p 2 i 2 …p n i n, kde p j je kód pro pozici j a i j {1, 2, …, n}, pro 1 j n Algoritmus: for j := 1 to n–1 do begin copy(N, {N 1,…,N n }) for i = 1, 2, …, n paralelně remove(N i, {p j l | l i} {p k i | k > j}) union({N 1,…,N n }, N) end P n N Složitost: O(n)
Hamiltonská cesta Problém: Rozhodněte, zda zadaný graf G=(V, E) s n vrcholy obsahuje Hamiltonskou cestu Vstup: Zkumavka P n vyprodukovaná předchozím algoritmem. Číslo i na pozici p k v nějaké permutaci z P n je interpretováno takto: řetězec reprezentuje možné řešení problému, kde je vrchol i navštíven v kroku k. Algoritmus: for 2 i n–1 a j, k takové, že (j, k) E paralelně remove(P n, {jp ik k}) select(P n ) Složitost: O(1)
Výstup Adlemanův experiment – odpovědi ano, ne přečíst operací detect (někdy select) Isomorfismu grafů – booleovská odpověď Generování všech permutací množiny – museli jsme zkonstruovat množinu molekul Maximální klika – ptáme se na číslo Efektivním sekvenčním zpracováním může být výstupem algoritmu libovolná informace Hamiltonovská cesta – ptáme se nejen, zda nějaká cesta existuje, ale v kladném případě i na explicitní ukázání cesty nebo všech cest
Maximální klika Předpokládáme graf G=(V, E), který má n vrcholů označených čísly 0, 1, …, n–1. Podmnožiny vrcholů jsou označeny binárními čísly délky n. 1. Množina všech možných množin vrcholů je reprezentována množinou všech binárních řetězců délky n. Této množině říkáme úplná datová banka. 2. Sestrojíme doplňkový graf ke grafu G. 3. Z banky odstraníme řetězce obsahující spojení v doplňkovém grafu. Zbývající řetězce odpovídají všem klikám v původním grafu. 4. Klika s největším počtem 1 určuje největší kliku.
DNA počítače Společná vlastnost Vygenerovat velkou množinu možných řešení Filtrovat tuto množinu, dokud nezůstane jen řešení
2D zobecnění Operace denaturace není postačující k tomu, abychom dostali sílu Turingových strojů Buňkové automaty Charakterizují všechny počítačově vyčíslitelné jazyky = Chomského gramatiky typu 0 = Turingovy stroje Blokové buňkové automaty (podle W. Winfree)
Blokové buňkové automaty – reprezentace Obousměrná nekonečná páska Abeceda V, # symbol, stop symbol Množina přepisovacích pravidel tvaru ab cd Používány paralelně V každém kroku jsou všechny symboly na pásce přepsány s následujícím omezením: při přechodu z jednoho kroku do dalšího je místo použití pravidel posunuto o jednu pozici Výpočet začíná z počáteční konfigurace Výpočet končí v prvním kroku, kdy se na pásce objeví stop symbol – konfigurace v takovém kroku je výsledkem výpočtu
Blokové buňkové automaty – kódování pravidel Založeno na struktuře DNA Nazývá se DAE (Double-crossover, Antiparallel helical strands with an Even number of half-turns between crossovers) Pevná rovinná struktura, 4 volné lepivé konce xyz 5’5’ dz’u’b’ y’v’ a’w’x’c uvw 5’5’ 5’5’ 5’5’ 5’5’ 3’ y’ v’ x’ w’u’ z’ d b’ c a’ xyz wvu 3’ 5’5’ 5’5’ c a’ d b’b’
Blokové buňkové automaty – kódování pásky Počáteční obsah pásky: #aabab# Reprezentace za použití DAE bloků: Schematická reprezentace: #aabab# aabab## #abb##aa#
Blokové buňkové automaty – výpočet Struktury Ponechány ve výpočtu volně Přilepí se na odpovídající místa (kódovány doplňky) – simulace odpovídajících instrukcí Začne se sestrojovat koberec – každá řada reprezentuje jednu úroveň výpočtu Příklad: aa ba, ba ab, b# aa, ## ## #abb##aa# # #’#’#’#’ #b a’ a ab b’a’ aa b’#’#’#’#’ #
Blokové buňkové automaty – poznámky Symboly jsou v dalším kroku posunuty o jednu pozici oproti předcházejícímu místu Zvláštní symbol stop je kódován rozlišitelnými lepivými konci DAE struktury, které mohou být snadno rozpoznány Např. obarvení řešení na zadanou barvu (modrou) Když se výpočet zastaví, poslední řada DAE struktury reprezentuje výstup Jak oddělit a přečíst poslední řadu je biochemický problém
Blokové buňkové automaty – shrnutí procedury 1. Vyjádříme problém pomocí BBA 2. Vytvoříme počáteční molekulu, která reprezentuje počáteční pásku automatu 3. Vytvoříme DAE struktury odpovídající instrukcím 4. Smícháme molekuly vytvořené v krocích 2 a 3 dohromady 5. Až řešení „zmodrá“, oddělíme první řetězec s koncovým symbolem 6. Přečteme výsledek procházením řetězce získaného v kroku 5
Blokové buňkové automaty – komentáře Zatím jen malé velikosti Výpočet je plně paralelní BA pracují paralelně Denaturace probíhá paralelně Je sice nutno použít velké množství DNA, ale v každém kroku známe celou historii výpočtu Teoreticky výpočet nepotřebuje žádnou energii Oprava chyb, vyrobení počátečních molekul a přečtení vyžaduje velké množství energie