Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague

Podobné dokumenty
Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague

Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague

Algoritmus pro hledání nejkratší cesty orientovaným grafem

Algoritmizace Dynamické programování. Jiří Vyskočil, Marko Genyg-Berezovskyj 2010

Hledání v textu algoritmem Boyer Moore

63. ročník Matematické olympiády 2013/2014

Dynamické programování

Suffixové stromy. Osnova:

Algoritmus pro generování normálních magických čtverců

Modely teorie grafů, min.kostra, max.tok, CPM, MPM, PERT

Matice. a m1 a m2... a mn

Paralelní grafové algoritmy

Matice přechodu. Pozorování 2. Základní úkol: Určete matici přechodu od báze M k bázi N. Každou bázi napíšeme do sloupců matice, např.

Metodický koncept k efektivní podpoře klíčových odborných kompetencí s využitím cizího jazyka ATCZ62 - CLIL jako výuková strategie na vysoké škole

Výběr báze. u n. a 1 u 1

Základy algoritmizace. Pattern matching

Návrh Designu: Radek Mařík

Řešení: PŘENESVĚŽ (N, A, B, C) = přenes N disků z A na B pomocí C

= je prostý orientovaný graf., formálně c ( u, v) 0. dva speciální uzly: zdrojový uzel s a cílový uzel t. Dále budeme bez

fakulty MENDELU v Brně (LDF) s ohledem na disciplíny společného základu (reg. č. CZ.1.07/2.2.00/28.

Limita a spojitost funkce a zobrazení jedné reálné proměnné

Prohledávání do šířky = algoritmus vlny

6 Ordinální informace o kritériích

LDF MENDELU. Simona Fišnarová (MENDELU) Základy lineárního programování VMAT, IMT 1 / 25

Vzdálenost uzlů v neorientovaném grafu

Cvičení 5 - Inverzní matice

1. července 2010

ANTAGONISTICKE HRY 172

0.1 Úvod do lineární algebry

3. ANTAGONISTICKÉ HRY

Obsah prezentace. Základní pojmy v teorii o grafech Úlohy a prohledávání grafů Hledání nejkratších cest

Dijkstrův algoritmus

Numerické metody 6. května FJFI ČVUT v Praze

Limita a spojitost funkce

12. Lineární programování

Dynamic programming. Historie. Dynamické programování je obsaženo v těchto programech: Příklad: chceme optimálně přiložit dvě sekvence

VYBRANÉ PARTIE Z NUMERICKÉ MATEMATIKY

Binární soubory (datové, typované)

1 Determinanty a inverzní matice

Dynamické programování UIN009 Efektivní algoritmy 1

Binární vyhledávací stromy pokročilé partie

Úlohy nejmenších čtverců

Matematika (CŽV Kadaň) aneb Úvod do lineární algebry Matice a soustavy rovnic

Algoritmizace Hashing II. Jiří Vyskočil, Marko Genyg-Berezovskyj 2010

[1] samoopravné kódy: terminologie, princip

HEURISTICKÉ ALGORITMY PRO ŘEŠENÍ ÚLOH OBCHODNÍHO CESTUJÍCÍHO

Výhody a nevýhody jednotlivých reprezentací jsou shrnuty na konci kapitoly.

INVESTICE DO ROZVOJE VZDĚLÁVÁNÍ. Modernizace studijního programu Matematika na PřF Univerzity Palackého v Olomouci CZ.1.07/2.2.00/28.

Řešení 1b Máme najít body, v nichž má funkce (, ) vázané extrémy, případně vázané lokální extrémy s podmínkou (, )=0, je-li: (, )= +,

přirozený algoritmus seřadí prvky 1,3,2,8,9,7 a prvky 4,5,6 nechává Metody řazení se dělí:

Teorie informace a kódování (KMI/TIK) Reed-Mullerovy kódy

1 Projekce a projektory

bin arn ı vyhled av an ı a bst Karel Hor ak, Petr Ryˇsav y 23. bˇrezna 2016 Katedra poˇ c ıtaˇ c u, FEL, ˇ CVUT

Interpolace Lagrangeovy polynomy. 29. října 2012

0.1 Úvod do lineární algebry

Parametrické programování

a počtem sloupců druhé matice. Spočítejme součin A.B. Označme matici A.B = M, pro její prvky platí:

Zadání semestrálního projektu Algoritmy II. letní semestr 2017/2018

Algoritmizace prostorových úloh

4. Trojúhelníkový rozklad p. 1/20

Cykly a pole

Maticí typu (m, n), kde m, n jsou přirozená čísla, se rozumí soubor mn veličin a jk zapsaných do m řádků a n sloupců tvaru:

Dynamické programování

2D transformací. červen Odvození transformačního klíče vybraných 2D transformací Metody vyrovnání... 2

(Cramerovo pravidlo, determinanty, inverzní matice)

Jan Březina. 7. března 2017

Dynamické programování

Metody analýzy dat I. Míry a metriky - pokračování

Jednoduchá exponenciální rovnice

Báze a dimenze vektorových prostorů

Vektory a matice. Obsah. Aplikovaná matematika I. Carl Friedrich Gauss. Základní pojmy a operace

Grafové algoritmy. Programovací techniky

Vytvoření uživatelské šablony

Numerická stabilita algoritmů

Jiří Neubauer. Katedra ekonometrie FEM UO Brno

9 Kolmost vektorových podprostorů


Markovské metody pro modelování pravděpodobnosti

1 Linearní prostory nad komplexními čísly

Soustavy. Terminologie. Dva pohledy na soustavu lin. rovnic. Definice: Necht A = (a i,j ) R m,n je matice, b R m,1 je jednosloupcová.

Semestrální práce 2 znakový strom

příkladů do cvičení. V textu se objeví i pár detailů, které jsem nestihl (na které jsem zapomněl) a(b u) = (ab) u, u + ( u) = 0 = ( u) + u.

Grafové algoritmy. Programovací techniky

Operační výzkum. Přiřazovací problém.

Jednofaktorová analýza rozptylu

3 Bodové odhady a jejich vlastnosti

Lineární algebra : Násobení matic a inverzní matice

Stavový model a Kalmanův filtr

V každém kroku se a + b zmenší o min(a, b), tedy vždy alespoň o 1. Jestliže jsme na začátku dostali 2

Lineární programování

1 Polynomiální interpolace

FP - SEMINÁŘ Z NUMERICKÉ MATEMATIKY. Katedra matematiky a didaktiky matematiky Technická univerzita v Liberci

1 Řešení soustav lineárních rovnic

Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague

Množinu všech matic typu m n nad tělesem T budeme označovat M m n (T ), množinu všech čtvercových matic stupně n nad T pak M n (T ).

f(c) = 0. cn pro f(c n ) > 0 b n pro f(c n ) < 0

Základy algoritmizace a programování

SOUSTAVY LINEÁRNÍCH ALGEBRAICKÝCH ROVNIC

13. Lineární programování

9. T r a n s f o r m a c e n á h o d n é v e l i č i n y

Transkript:

1 / 66 Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague

2 / 66 sekvencí pokud biologové objeví nový gen, většinou se nezná jeho funkce zkouší se zjistit, kterým jiným genům je nejpodobnější bereme tedy postupně geny z databáze a porovnáváme je se zkoumaným genem snažíme se pak nějakým způsobem určit, jak moc jsou si dva geny podobné úloha se řeší pomocí metody dynamického programování nejprve si ukážeme tuto metodu

3 / 66 Dynamické programování Úloha turisty na Manhattanu (Manhattan tourist problem) máme turistu v levém horním rohu Manhattanu turista chce za jeden den projít co nejvíce zajímavých míst, ale co nejméně se nachodit řekne si tedy, že se bude pohybovat jen směrem na jih a na východ úkolem je najít trasu, na které projde co nejvíce zajímavých míst

4 / 66 Dynamické programování Zdroj: http://www.ynegve.info/post/192/manhattan-tourist-problem

5 / 66 Dynamické programování vytvoříme si nejprve graf, kde křižovatky tvoří uzly a ulice hrany každou hranu ohodnotíme podle toho, jak turisticky zajímavé atrakce tam jsou

6 / 66 Dynamické programování Zdroj: http://www.ynegve.info/post/192/manhattan-tourist-problem

7 / 66 Dynamické programování nyní už jde o nalezení nejdelší cesty v grafu z levého horního rohu do pravého dolního úlohu řešíme algoritmem "vlna", který známe ze ZALGu postupně do každého vrcholu vyplňujeme délku nejdelší cesty z levého horního rohu do daného vrcholu k napočítání nejdelší cesty do určitého vrcholu potřebujeme znát nejdelší cestu do jeho levého a horního souseda přitom nejdelší cesty podél horní a levé hranice grafu lze napočítat snadno, tím také začneme

8 / 66 Dynamické programování Zdroj: http://www.ynegve.info/post/192/manhattan-tourist-problem

9 / 66 Dynamické programování Zdroj: http://www.ynegve.info/post/192/manhattan-tourist-problem

10 / 66 Dynamické programování Zdroj: http://www.ynegve.info/post/192/manhattan-tourist-problem

11 / 66 Dynamické programování Zdroj: http://www.ynegve.info/post/192/manhattan-tourist-problem

12 / 66 Dynamické programování Zdroj: http://www.ynegve.info/post/192/manhattan-tourist-problem

13 / 66 Dynamické programování označme si uzlu grafu jako s ij pro i = 1,..., m, j = 1,..., n váhy hran jdoucích dolu označíme jako w váhy hran jdoucích doprava označíme jako w na začátku definujeme s 11 := 0 dále počítáma pro i = 1 a j = 2,..., n pro j = 1 a i = 2,..., m s 1,j := s 1,j 1 + w 1,j 1 s i,1 := s i 1,1 + w i 1,1 pro i = 2,..., m, j = 2,..., n { s s i,j = max i 1,j + w i 1,j s i,j i + wi,j 1

algoritmus lze zapsat takto Dynamické programování 1: procedure MANHATTANTOURIST(s, w, w, m, n) 2: s 11 := 0 3: for i := 2 to m do 4: s i,1 := s i 1,1 + w i 1,1 5: end for 6: for j := 2 to n do 7: s 1,j := s 1,j 1 + w1,j 1 8: end for 9: for i := 2 to m do 10: for j := 2 to n do 11: s ij := max 12: end for 13: end for 14: return s mn 15: end procedure { s i 1,j + w i 1,j s i,j i + w i,j 1 14 / 66

15 / 66 Dynamické programování pokud chci cestu následně zrekonstruovat, mám dvě možnosti u každého uzlu si v průběhu výpočtu pamatovat, odkud jsem do něj přišel jdu od pravého dolního rohu a postupně v každém uzlu hledám souseda, jehož hodnota se liší právě o váhu hrany vedoucí z tohoto souseda

16 / 66 Editační vzdálenost vrat me se k naší úloze porovnávání dvou řetězců otázka je, jak ohodnotit podobnost dvou řetězců Hammingova vzdálenost se nehodí Example 1 v = "ATATATAT" w = "TATATATA" d H (v, w) = 8 v = w = "ATATATAT-" "-TATATATA" d H (v, w) = 2

17 / 66 Editační vzdálenost 1966, Vladimir Levenshtein zadefinoval editační nebo také levenshteinovu vzdálenost ta je definována pomocí editačních operací smazání znaku vložení znaku přepis znaku Definition 2 Levenshteinova nebo editační vzdálenost mezi dvěma řetězci obecně různé délky je minimální počet editačních operací, které je potřeba provést k přepsání jednoho řetězce na druhý. Levenshtein sám nenašel algoritmus pro výpočet této vzdálenosti algoritmus byl objeven později nezávisle v několika různých oborech

18 / 66 Zarovnání řetězců k výpočtu editační vzdálenosti nejprve musíme provést tzv. zarovnání řetězců string Definition 3 Mějme dva řetězce v a w. Jejich zarovnání je dvouřádková matice, která v prvním řádku obsahuje řetězec v a ve druhém řádku řetězec w oba případně doplněné o mezery tak, že v žádném sloupci nejsou dvě mezery. Example 4 v = ATGTTAT w = ATCCTAC AT-GTTAT- ATCCT-A-C v = w =

19 / 66 Zarovnání řetězců pokud jsou v jednom sloupci oba znaky stejné, jde o shodu (match) pokud jsou v jednom sloupci oba znaky různé, jde o neshodu/přepis (mismatch) je-li v jednom sloupci mezera, jde o tzv. indel mezera v prvním řádků je vložení znaku insertion mezera v druhém řádku je mazání znaku deletion jde nám o to, jak najít zarovnání s co nejmenším počtem editačních operací to získáme pomocí dynamického programováni nejprve si ale ukážeme jedndušší úlohu, kde nebudeme uvažovat přepisování znaků, tj. jenom vkládání a mazání

20 / 66 Nejdelší společná podposloupnost Definition 5 Podposloupnost (sub) řetězce je posloupnost znaků jdoucích po sobě, ale ne nutně bezprostředně po sobě. Tj. pro v=v 1 v 2... v n a libovolnou ostře rostoucí posloupnost indexů 1 i 1 < i 2... i k n je řetězec v i1 v i2... v ik podposloupnost v. Example 6 v = ATTGCTA AGCA a ATTA jsou podposloupnosti v TGTT není podposloupnost v po GT již nenásleduje T

21 / 66 Nejdelší společná podposloupnost Definition 7 Společná podposloupnost (common sub) řetězců v=v 1... v n a w=w 1... w m a je posloupnost pozic 1 i 1 < i 2,... i k n, ve v a posloupnost pozic 1 j 1 < j 2,..., j k m, ve w takových, že v it = w jt, pro všechna t = 1,..., k.

22 / 66 Nejdelší společná podposloupnost pokud provedeme zarovnání dvou řetězců bez přepisů, stejné znaky pod sebou tvoří společnou podposlounpost Example 8 v = ATGTTAT w = ATCCTAC AT-G-TTAT- ATC-CT-A-C v = w =

23 / 66 Nejdelší společná podposloupnost naším úkolem bude najít nejdelší společnou podposloupnost dvou řetězců v a w k výpočtu zarovnání použijeme algoritmus dynamického programování řetězce napíšeme podél horní a levé strany grafu, tak že znaky řetězců jsou zarovnané na hrany grafu tam, kde se řetězce shodují, uděláme šikmou hranu doprava dolu dolníme všechny svislé a vodorovné hrany

24 / 66 Nejdelší společná podposloupnost Zdroj: Jones, Pevzner, An introduction to bioinformatics algorithms

25 / 66 Nejdelší společná podposloupnost jakákoliv cesta z levého horního do pravého dolního rohu pak odpovídá nějakému zarovnání krok po šikmé hraně odpovídá shodě krok po svislé nebo vodorovné hraně odpovídá mezeře v jednom z řetězců pokud šikmé hrany ohodnotím jedničkou a ostatní nulou, stačí už jen najít nejdelší cestu v grafu její délka pak odpovídá délce nejdelší společné podposloupnosti

Nejdelší společná podposloupnost Zdroj: Jones, Pevzner, An introduction to bioinformatics algorithms 26 / 66

27 / 66 Nejdelší společná podposloupnost řešíme tedy úlohu dynamického programování s předpisem s i 1,j + 0 s ij = max s i,j 1 + 0 s i 1,j 1 + 1 pokud v i = w j pokud chci následně získat LCS, jde pouze o rekonstrukci nejdelší cesty

28 / 66 Globální porovnávání řetězců nyní se vracíme k naší původní úloze porovnávání řetězců kromě vkládání a mazání znaků umožníme provádět i přepisy právě podle definice editační vzdálenosti do našeho grafu dynamického programování tak vložíme šikmé hrany i tam, kde se oba řetězce nerovnají tyto nové hrany ale musíme ohodnotit menší vahou než 1, aby algoritmus upřednostňoval aplikaci shody řetězců

29 / 66 Globální porovnávání řetězců Obecně můžeme použít následující penalizace: µ pro přepis σ pro vložení nebo mazání znaku 1 pro shodu znaků Tím získáme následující pravidlo: s i 1,j σ s s ij = max i,j 1 σ s i 1,j 1 µ s i 1,j 1 + 1 pro v i w j pro v i = w j Example 9 http://demonstrations.wolfram.com/globalandlocalsequencealignmentalgorithms/

30 / 66 Globální porovnávání řetězců to lze zobecnit zavedením matice δ, která všechny možné dvojice znaků, které se mohou vyskytnout pod sebou v matici zarovnání. v našem případě by vypadala takto δ A T C G A 1 µ µ µ σ T µ 1 µ µ σ C µ µ 1 µ σ G µ µ µ 1 σ σ σ σ σ matici δ nazýváme maticí skóre (scoring matrix)

31 / 66 Globální porovnávání řetězců algoritmus dynamického programování by se pak řídil pravidlem s i 1,j + δ(v i, ) s ij = max s i,j 1 + δ(, w j ) s i 1,j 1 + δ(v i, w j ) výhodou je, že nyní můžeme každý přepis ohodnotit jinak

32 / 66 Globální porovnávání proteinů to je výhodné při porovnávání proteinů zde vlastně porovnáváme řetězce tvořené abecedou aminokyselin biologové vědí, že v přírodě se díky mutacím některé aminokysleliny zaměňují poměrně často, zatímco jiné velmí zřídka hodota δ(i, j) pak vyjadřuje pravděpodobnost, s jakou se zaměňují aminokyseliny i a j tyto pravděpodobnosti ale závísí na zkoumaném proteinu pokud budeme mít dostatečně velkou databázi porovnaných proteinů, můžeme tyto pravděpodobnosti snadno spočítat tuto databázi ale nedostaneme, dokud nenapočitáme porovnání proteinů, k čemuž tyto pravděpodobnosti potřebujeme postupuje se tak, že nejprve porovnám proteiny s jednoduchou

33 / 66 Lokální porovnávání řetězců v některých situacích nás více zajímá co nejlepší shoda určitých podřetězců obou sekvencí raději, než porovnání celých sekvencí Zdroj: Jones, Pevzner, An introduction to bioinformatics algorithms v grafu dynamického programování takové zarovnání vypadá takto...

34 / 66 Lokální porovnávání řetězců Zdroj: Jones, Pevzner, An introduction to bioinformatics algorithms

35 / 66 Lokální porovnávání řetězců co brání nalezení takové cesty? jsou to penalizace nabrané před a po požadovaném zarovnání rádí bysme našli způsob, jak je najít penalizací před zarovnáním se lze zbavit tak, umožníme přeskočit tu část zarovnání, kde získáváme záporné body v grafu to znamená, že ke každému vrcholu přidáme hranu vedoucí do levého horního rohu s nulovou vahou

36 / 66 Lokální porovnávání řetězců Zdroj: Jones, Pevzner, An introduction to bioinformatics algorithms

37 / 66 Lokální porovnávání řetězců vztahy pro úlohu dynamického programování pak mají tvar 0 s s ij = max i 1,j + δ(v i, ) s i,j 1 + δ(, w j ) s i 1,j 1 + δ(v i, w j ) jak se zbavit penalizací za lokálním zarovnáním? po ohodnocení všech vrcholů grafu algoritmem dynamického programování najdeme vrchol s nejvyšším skóre ten znamená konec nejlepšího lokálního zarovnání od něj pak běžným způsobem rekonstruujeme nejdelší cestu, dokud nenarazíme na vrchol s nulovou hodnotou jde o Smithův-Watermanův algoritmus

38 / 66 řetězců s dlouhými sekvencemi v přírodě jsou častejší podobnosti, kdy se záměny provádí po delších sekvencích a ne po jednotlivých nukleotidech k nalezení takových zarovnání je potřeba zavést vyšší penalizaci pro vložení první mezery první mezeru v sekvenci mezer budeme navíc penalizovat hodnotou ρ další mezery hodnotou σ problém je v tom, jak v daném bodě zjistit, na jak dlouhou sekvenci mezer napojujeme další mezeru mohli bysme zkusit opět přidat další hrany do grafu bylo by ale nutné přidat všechny možné svislé a vodorovné hrany, což by zpomalilo algoritmus

39 / 66 řetězců s dlouhými sekvencemi zavedeme si dva pomocné grafy s a s nyní budeme hledat nejdelší cestu po třech grafech v jednom se nám půjde nejlépe doprava, ve druhém dolu a ve třetím šikmo dolů

sekvencí r ete zcu s dlouhými sekvencemi Zdroj: Jones, Pevzner, An introduction to bioinformatics algorithms 40 / 66

41 / 66 řetězců s dlouhými sekvencemi rekurentní vztahy pak mají tvar { s s ij = max i 1,j σ s i 1,j (ρ + σ) s ij { s = max i,j 1 σ s i,j 1 (ρ + σ) s i 1,j 1 + δ(v i, w j ) s ij = max s i 1,j si,j 1

42 / 66 více sekvencí nyní se pokusíme o porovávání více sekvencí najednou pro tři řetězce v, w, u to může vypadat například takto Zdroj: Jones, Pevzner, An introduction to bioinformatics algorithms

43 / 66 více sekvencí nyní při sestavování každého dalšího sloupce matice můžeme provést: vložení znaku z jednoho řetězce a dvě mezery vložení různých znaků ze dvou řetězců a jedné mezery vložení svou stejných znaků a jedné mezery vložení tří různých znaků vložení tří stejných znaků to vše musíme opět vhodně ohodnotit použijeme opět "matici" δ úloha dynamického programování se bude řešit ve třech dimenzích

44 / 66 více sekvencí rekurence pro úlohu dynamického programování má tvar: s i 1,j,k + δ(v i,, ) s i,j 1,k + δ(, w j, ) s i,j,k 1 + δ(,, u k ) s ijk = max s i 1,j 1,k + δ(v i, w j, ) s i 1,j,k 1 + δ(v i,, u k ) s i,j 1,k 1 + δ(, w j, u k ) s i 1,j 1,k 1 + δ(v i, w j, u k )

45 / 66 více sekvencí snadno tak lze odvodit algoritmus pro porovnvání obecně k sekvencí problém je ale v tom, že složitost je O(n k ), pokud budou mít všechny sekvence délku přiližně n pro n = 1000 a k = 3 jsou pamět ové nároky sizeof (int) 1000 3 = 4 GB často tedy musíme použít heuristiky mohli bysme zkusit napočítat optimální zarovnání všech ( k 2) dvojic a ty pak skombinovat dohromady to se ale nemusí vždy podařit

46 / 66 více sekvencí Zdroj: Jones, Pevzner, An introduction to bioinformatics algorithms

47 / 66 více sekvencí efektivním algoritmem je progresivní zarovnávání sekvencí vybere se dvojice sekvencí s nejlepším zarovnáním ty se pak sloučí do jednoho řetězce k němu se pak přidává další tento algoritmus používá známý program Clustal

48 / 66 Pamět ově efektivní porovnání sekvencí problém algoritmu pro porovnávání sekvencí není ani tak v časové složitosti jako spíš ve velkém nároku na pamět 1975 - Daniel Hirschberg, navrhl algoritmus typu "rozděl a panuj", který pamět ové nároky snižuje využívá faktu, že k napočítání j-tého sloupce matice/grafu s nám stačí znát pouze j 1-ní sloupec předchozí sloupce využívá pouze při rekonstrukci nejdelší cesty pokud by nám stačilo napočítat pouze délku nejdelší cesty, nemusíme si tyto sloupce už pamatovat

49 / 66 Pamět ově efektivní porovnání sekvencí Zdroj: Jones, Pevzner, An introduction to bioinformatics algorithms

Pamět ově efektivní porovnání sekvencí bud j index prostředního sloupce necht nejdelší cesta prochází jeho i -tým řádkem otázka je, jak tento index i najít? délky všech n cest z levého horního rohu do pravého dolního lze vyjádřit pro i = 1,..., n jako součet délky z levého horního rohu do j -tého sloupce prefix i z pravého dolního rohu do j -tého sloupce suffix i řešímé úlohu dynamického programování se startem v pravém dolním rohu snadno pak vidíme, že j = arg max i=1,...,n (preffix i + suffix i ) 50 / 66

51 / 66 Pamět ově efektivní porovnání sekvencí k výpočtu prefix i řešíme úlohu dynamického programování se zahazováním nepotřebných sloupců s počátkem v levém horním rohu k výpočtu suffix i řešíme úlohu dynamického programování se zahazováním nepotřebných sloupců s počátkem v pravém dolním rohu celkem tedy potřebujeme ukládat jen 3n prvků pokud známe souřadnice (i, j ) rozdělíme problém na dva nalezení nejdelší cesty z levého horního bodu do (i, j ) nalezení nejdelší cesty z (i, j ) do pravého dolního rohu

52 / 66 Pamět ově efektivní porovnání sekvencí Zdroj: Jones, Pevzner, An introduction to bioinformatics algorithms

53 / 66 Pamět ově efektivní porovnání sekvencí Zdroj: Jones, Pevzner, An introduction to bioinformatics algorithms

54 / 66 Pamět ově efektivní porovnání sekvencí Zdroj: Jones, Pevzner, An introduction to bioinformatics algorithms

55 / 66 Pamět ově efektivní porovnání sekvencí jaká je časová složitost? po každém dělení procházíme jen polovinu uzlů grafu s znovu, tj. 1 + 1 2 + 1 4 + 1 8 +... 2 algoritmus tedy poběží maximálně dvakrát tak dlouho jako normální algoritmus protože ale máme větší šanci, že výpočet poběží v cache CPU, může být výpočet ještě výrazně rychlejší

56 / 66 Blokové porovnávání sekvencí zatím není známý žádný spodní odhad složitosti pro porovnávání sekvencí algoritmus dynamického programování vede na kvadratickou složitost ukážeme si, jak algoritmus urychlit za cenu horšího výsledku použijeme tzv. blokové porovnávání předpokládejme pro jednoduchost velikost úlohy n n, tj. v = w = n graf s rozdělíme na bloky o velikosti t t, a cesty omezíme tak, že musí procházet vždy pouze skrz rohy bloků

57 / 66 Blokové porovnávání sekvencí Zdroj: Jones, Pevzner, An introduction to bioinformatics algorithms

58 / 66 Blokové porovnávání sekvencí jelikož nyní víme, že do každého bloku může každá cesta vstupovat jen levým horním rohem a vystupovat pravým dolním, můžeme si nejprve napočítat cesty skrz jednotlivé bloky získané skóre v každém bloku označíme jako β ij tj. délka nejdelší cesty blokem následně řešíme úlohu dynamického programování pro bloky sestavíme tedy graf S tvořený jednotlivými bloky a řešíme úlohu S i 1,j tσ S ij = max S i,j 1 tσ, S i 1,j 1 + β ij

Blokové porovnávání sekvencí složitost blokové úlohy je O(n 2 /t 2 ) vyřešení jednoho bloku je O(t 2 ) bloků je n 2 /t 2, což dává opět O(n 2 ) abychom získali rychlejší algoritmus, je potřeba si skóre pro jednotlivé bloky β ij předpočítat každý blok je jednoznačně určen částí řetězce w nad jeho horní hranou a částí řetězce v podél jeho levé hrany tj. znaky v it, v it+1,..., v it+t 1 a w jt, w jt+1,..., w jt+t 1 v abecedě se čtyřmi znaky je to celkem 4 t 4 t možností pokud vollíme t = log 4 n/2 je 4 t 4 t = 4 log 4 n/2 4 log 4 n/2 = n 1 2 n 1 2 = n to lze předpočítat do tabulky se složitostí O(n log 2 n) 59 / 66

60 / 66 Blokové porovnávání sekvencí složitost blokového dynamického programování je O(n 2 / log 2 n) celkem tedy O(n 2 / log 2 n) trik je tedy v tom, že pokud si velikost bloků zvolíme dostatečně malou, musí se některé bloky opakovat tím, že je ale předpočítám do tabulky, napočítám každý blok jen jednou

61 / 66 Blokové porovnávání pro LCS pro úlohu nalezení nejdelší společné podposloupnosti lze pomocí bloků získat dokonce optimální řešení umožníme, aby libovolná cesta mohla křižovat hranici bloku kdekoliv, ne jen v protějších rozích

62 / 66 Blokové porovnávání pro LCS Zdroj: Jones, Pevzner, An introduction to bioinformatics algorithms

Blokové porovnávání pro LCS řešíme tedy úlohu dynamického programování na všech uzlech na hranách bloků každý blok je nyní popsán podřetězci v it, v it+1,..., v it+t 1 a w jt, w jt+1,..., w jt+t 1 hodnotami skóre s ij podél své horní a levé hrany ze znalosti těchto vstupních dat dokážeme napočítat skóre s ij v libovolném uzlu podél pravé a dolní hrany bloku pro úlohu globálního porovnávání řetězců je to příliš mnoho kombinací na to, aby se daly předpočítat do tabulky pro úlohu LCS to ale lze 63 / 66

64 / 66 Blokové porovnávání pro LCS úloha LCS je dána předpisem s i 1,j + 0 s ij = max s i,j 1 + 0 s i 1,j 1 + 1 pokud v i = w j skóre s ij se tedy může podél horní a levé hrany měnit pouze o 0 nebo 1 to lze zakódovat do posloupnosti nul a jedniček o délce t celkem tak máme kombinací 4 t 4 t 2 t 2 t = 2 6t pro t = log 2 n/4 n 1.5 kombinací

65 / 66 Blokové porovnávání pro LCS zmíněná technika se nazývá Four-Russians Speed-up po autorech V.L. Arlazarov, E. A. Dinic, M. A. Kronrod, and I. A. Faradzev. On economical construction of the transitive closure of an oriented graph. Soviet Math. Dokl., 11:1209 1210, 1970.

66 / 66 Program diff je založen na algoritmu pro hledání LCS E.W.Myers, An O(ND) Difference Algorithm and Its Variations, Algorithmica, (1), 251 266, 1986. N je součet délek řetězců v a w D jejich editační vzdálenost lze dosáhnout složitosti O(N + D 2 ) pamět ová náročnost je O(N)