Voorbeeld - caagt
Voorbeeld - caagt
Voorbeeld - caagt
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Gerichte acyclische<br />
grafen<br />
toepassing: toerist in Manhattan<br />
topologisch sorteren van DAG<br />
toepassing: DNA sequence alignment<br />
Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.1/71
Manhattan tourist problem<br />
Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.2/71
Toerist in Manhattan<br />
Gegeven<br />
stadsplan van Manhattan<br />
locaties van toeristische attracties<br />
toerist begint wandeling in NW hoek en gaat<br />
naar ZO hoek<br />
beweegt enkel op W→O en N→Z straten<br />
Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.3/71
Toerist in Manhattan<br />
Gegeven<br />
stadsplan van Manhattan<br />
locaties van toeristische attracties<br />
toerist begint wandeling in NW hoek en gaat<br />
naar ZO hoek<br />
beweegt enkel op W→O en N→Z straten<br />
Probleem<br />
vind een route die het meeste toeristische<br />
attracties aandoet<br />
Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.3/71
Voorstellen als graaf<br />
Gewogen gerichte acyclische graaf (DAG)<br />
toppen: kruispunten van straten<br />
bogen: straten tussen kruispunten<br />
kan getekend worden als n × m rooster<br />
booggewichten: aantal attracties op straat<br />
pijlen op bogen: enkel → en ↓<br />
acyclisch: niet mogelijk om in cirkels te<br />
wandelen<br />
Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.4/71
<strong>Voorbeeld</strong><br />
3 2 4 0<br />
1 0 2 4 3<br />
3 2 4 2<br />
4 6 5 2 1<br />
0 7 3 4<br />
4 4 5 2 1<br />
3 3 0 2<br />
5 6 8 5 3<br />
1 3 2 2<br />
Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.5/71
Wandeling in Manhattan<br />
correspondeert met pad in gewogen DAG<br />
lengte van pad is som van gewichten van<br />
bogen op pad<br />
Bron en bestemming<br />
gegeven starttop en eindtop<br />
hier: NW-hoek (0, 0) en ZO-hoek (n,m)<br />
Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.6/71
<strong>Voorbeeld</strong><br />
3 2 4 0<br />
0 3 5 9<br />
1 0 2 4 3<br />
3 2 4 2<br />
13<br />
4 6 5 2 1<br />
0 7 3 4<br />
15 19<br />
4 4 5 2 1<br />
3 3 0 2<br />
5 6 8 5 3<br />
1 3 2 2<br />
20<br />
23<br />
Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.7/71
Oplossen van probleem<br />
Probleem vertaalt naar<br />
bepalen van langste pad van bron (0, 0) naar<br />
bestemming (n,m) in gewogen DAG<br />
Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.8/71
Oplossen van probleem<br />
Probleem vertaalt naar<br />
bepalen van langste pad van bron (0, 0) naar<br />
bestemming (n,m) in gewogen DAG<br />
Oplossen van probleem voor n × m rooster<br />
algemener probleem oplossen<br />
bepaal langste pad van (0, 0) naar alle (i,j)<br />
met 0 ≤ i ≤ n en 0 ≤ j ≤ m<br />
notatie: si,j is lengte van pad<br />
merk op: sn,m is gewenste resultaat<br />
Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.8/71
Bepalen s0,j en sj,0<br />
3 2 4 0<br />
0 3 5 9 9<br />
1<br />
5<br />
9<br />
14<br />
1 0 2 4 3<br />
3 2 4 2<br />
4 6 5 2 1<br />
0 7 3 4<br />
4 4 5 2 1<br />
3 3 0 2<br />
5 6 8 5 3<br />
1 3 2 2<br />
geen keuze in pad<br />
Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.9/71
Bepalen s1,1<br />
3 2 4 0<br />
0 3 5 9 9<br />
1<br />
5<br />
9<br />
14<br />
1 0 2 4 3<br />
3 2 4 2<br />
4<br />
4 6 5 2 1<br />
0 7 3 4<br />
4 4 5 2 1<br />
3 3 0 2<br />
5 6 8 5 3<br />
1 3 2 2<br />
s1,1 = max( s0,1 + w (0,1),(1,1) ; s1,0 + w (1,0),(1,1) )<br />
Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.10/71
Bepalen s1,j<br />
3 2 4 0<br />
0 3 5 9 9<br />
1<br />
5<br />
9<br />
14<br />
1 0 2 4 3<br />
3 2 4 2<br />
4<br />
4 6 5 2 1<br />
0 7 3 4<br />
10<br />
4 4 5 2 1<br />
3 3 0 2<br />
14<br />
5 6 8 5 3<br />
1 3 2 2<br />
20<br />
s1,j = max( s0,j + w (0,j),(1,j) ; s1,j−1 + w (1,j−1),(1,j))<br />
Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.11/71
Bepalen s2,j<br />
3 2 4 0<br />
0 3 5 9 9<br />
1<br />
5<br />
9<br />
14<br />
1 0 2 4 3<br />
3 2 4 2<br />
4 7<br />
4 6 5 2 1<br />
0 7 3 4<br />
10 17<br />
4 4 5 2 1<br />
3 3 0 2<br />
14 22<br />
5 6 8 5 3<br />
1 3 2 2<br />
20 30<br />
s2,j = max( s1,j + w (1,j),(2,j) ; s2,j−1 + w (2,j−1),(2,j) )<br />
Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.12/71
Bepalen si,j<br />
3 2 4 0<br />
0 3 5 9 9<br />
1<br />
5<br />
9<br />
14<br />
1 0 2 4 3<br />
3 2 4 2<br />
4 7 13 15<br />
4 6 5 2 1<br />
0 7 3 4<br />
10 17 20<br />
4 4 5 2 1<br />
3 3 0 2<br />
14 22 22<br />
5 6 8 5 3<br />
1 3 2 2<br />
20 30 32<br />
si,j = max( si−1,j +w (i−1,j),(i,j) ; si,j−1+w (i,j−1),(i,j) )<br />
24<br />
25<br />
34<br />
Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.13/71
Algoritme in pseudocode<br />
Input: gewogen n × m-rooster met → en ↓ pijlen<br />
Output: lengte van langste pad (0, 0) (n,m)<br />
1: s0,0 ← 0<br />
2: for i from 1 to n do<br />
3: si,0 ← si−1,0 + w(i−1,0),(i,0)<br />
4: for j from 1 to m do<br />
5: s0,j ← s0,j−1 + w (0,j−1),(0,j)<br />
6: for i from 1 to n do<br />
7: for j from 1<br />
<br />
to m do<br />
8: si,j = max<br />
si−1,j + w (i−1,j),(i,j)<br />
si,j−1 + w (i,j−1),(i,j)<br />
9: return sn,m Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.14/71
Bepalen van langste pad<br />
3 2 4 0<br />
0 3 5 9 9<br />
1<br />
5<br />
9<br />
14<br />
1 2 4<br />
3 2<br />
4 7 13 15<br />
4 6<br />
10<br />
7 3 4<br />
17 20<br />
4 4 5 2 1<br />
14<br />
5 6 8<br />
20<br />
22<br />
30<br />
0<br />
22<br />
2 2<br />
32<br />
24<br />
25<br />
34<br />
Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.15/71
Voor algemene DAGs<br />
Algemeen<br />
graaf is geen regelmatig rooster<br />
elke top heeft pijlen naar andere toppen<br />
Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.16/71
Voor algemene DAGs<br />
Algemeen<br />
graaf is geen regelmatig rooster<br />
elke top heeft pijlen naar andere toppen<br />
Definities (onderstel u → v)<br />
v is opvolger van u<br />
S(u) is verzameling van opvolgers van u<br />
uitgraad van u = |S(u)|<br />
u is voorganger van v<br />
P(v) is verzameling van voorgangers van v<br />
ingraad van v = |P(v)|<br />
Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.16/71
Bron en bestemming<br />
kunnen willekeurige toppen zijn<br />
Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.17/71
Bron en bestemming<br />
kunnen willekeurige toppen zijn<br />
Algemene formule<br />
sv = max<br />
u∈P(v) (su + wu,v)<br />
Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.17/71
Bron en bestemming<br />
kunnen willekeurige toppen zijn<br />
Algemene formule<br />
sv = max<br />
u∈P(v) (su + wu,v)<br />
Belangrijk aspect<br />
volgorde waarin toppen bezocht worden<br />
wanneer v bezocht wordt, moeten al zijn<br />
voorgangers reeds berekend zijn<br />
Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.17/71
Topologische sortering van DAG<br />
Topologische sortering van DAG<br />
lineaire ordening van toppen zo dat alle pijlen<br />
voorwaarts wijzen<br />
Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.18/71
Topologische sortering van DAG<br />
Topologische sortering van DAG<br />
lineaire ordening van toppen zo dat alle pijlen<br />
voorwaarts wijzen<br />
Mogelijkheden op rooster (evt. met<br />
diagonalen)<br />
rij per rij<br />
kolom per kolom<br />
diagonaal per diagonaal<br />
Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.18/71
Topologische sortering van DAG<br />
Topologische sortering van DAG<br />
lineaire ordening van toppen zo dat alle pijlen<br />
voorwaarts wijzen<br />
Mogelijkheden op rooster (evt. met<br />
diagonalen)<br />
rij per rij<br />
kolom per kolom<br />
diagonaal per diagonaal<br />
Voor een algemene DAG?<br />
Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.18/71
Ordening van rooster<br />
1 6 11 16 21<br />
2 7 12 17 22<br />
3 8 13 18 23<br />
4 9 14 19 24<br />
5 10 15 20 25<br />
1 2 3 4 5<br />
6 7 8 9 10<br />
11 12 13 14 15<br />
16 17 18 19 20<br />
21 22 23 24 25<br />
1 2 4 7 11<br />
3 5 8 12 16<br />
6 9 13 17 20<br />
10 14 18 21 23<br />
15 19 22 24 25<br />
Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.19/71
Ordening rooster met diagonalen<br />
1 6 11 16 21<br />
2 7 12 17 22<br />
3 8 13 18 23<br />
4 9 14 19 24<br />
5 10 15 20 25<br />
1 2 3 4 5<br />
6 7 8 9 10<br />
11 12 13 14 15<br />
16 17 18 19 20<br />
21 22 23 24 25<br />
1 2 4 7 11<br />
3 5 8 12 16<br />
6 9 13 17 20<br />
10 14 18 21 23<br />
15 19 22 24 25<br />
Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.20/71
Ordening van algemene DAG<br />
Bv. Batman kleedt zich ’s ochtends aan<br />
leotard<br />
boots<br />
tights<br />
shorts<br />
cape<br />
belt<br />
gloves<br />
hood<br />
Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.21/71
Ordening van algemene DAG<br />
Bv. Batman kleedt zich ’s ochtends aan<br />
leotard<br />
boots<br />
tights<br />
shorts<br />
cape<br />
belt<br />
gloves<br />
hood<br />
Topologisch sorteren: algemeen idee<br />
kies een top zonder voorgangers<br />
“verwijder” uit DAG<br />
herhaal tot alle toppen verwerkt<br />
Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.21/71
Aligneren van<br />
DNA-sequenties en<br />
editeerafstand<br />
Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.22/71
Aligneren van DNA-sequenties<br />
Bedoeling<br />
meten van “similariteit” tussen<br />
DNA-sequenties<br />
concept van “afstand” tussen DNA-seq.<br />
Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.23/71
Aligneren van DNA-sequenties<br />
Bedoeling<br />
meten van “similariteit” tussen<br />
DNA-sequenties<br />
concept van “afstand” tussen DNA-seq.<br />
Afstand tussen 2 strings in CS<br />
Maar<br />
Hamming-afstand<br />
# posities waarin ze verschillen<br />
Hamming-afstand is geen goede maat voor<br />
similariteit van DNA-sequenties<br />
Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.23/71
Similariteit van DNA-sequenties<br />
<strong>Voorbeeld</strong>: ATATAT en TATATA<br />
Hamming-afstand is 6<br />
maar zeer gelijkend wanneer gealigneerd als<br />
ATATAT-<br />
-TATATA<br />
Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.24/71
Similariteit van DNA-sequenties<br />
<strong>Voorbeeld</strong>: ATATAT en TATATA<br />
Hamming-afstand is 6<br />
maar zeer gelijkend wanneer gealigneerd als<br />
ATATAT-<br />
-TATATA<br />
<strong>Voorbeeld</strong>: ATATATAT en TATAAT<br />
gelijkenis beter getoond door alignering<br />
ATATATAT<br />
-TATA-AT<br />
Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.24/71
Editeerafstand<br />
Editeerafstand tussen 2 strings<br />
minimum # editeerbewerkingen die een string<br />
in de andere omzetten<br />
Editeerbewerkingen<br />
een symbool tussenvoegen (insertion)<br />
een symbool verwijderen (deletion)<br />
een symbool door een ander vervangen<br />
(substitution)<br />
Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.25/71
<strong>Voorbeeld</strong><br />
TGCATAT en ATCCGAT<br />
kunnen gealigneerd worden als<br />
(editeerafstand ≤ 5)<br />
-TGC-ATAT<br />
ATCCGAT--<br />
+.|.+..--<br />
Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.26/71
<strong>Voorbeeld</strong><br />
TGCATAT en ATCCGAT<br />
kunnen gealigneerd worden als<br />
(editeerafstand ≤ 5)<br />
-TGC-ATAT<br />
ATCCGAT--<br />
+.|.+..--<br />
of beter gealigneerd als (editeerafstand ≤ 4)<br />
-TGCATAT<br />
ATCCG-AT<br />
+.|.|-..<br />
Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.26/71
<strong>Voorbeeld</strong><br />
TGCATAT en ATCCGAT<br />
kunnen gealigneerd worden als<br />
(editeerafstand ≤ 5)<br />
-TGC-ATAT<br />
ATCCGAT--<br />
+.|.+..--<br />
of beter gealigneerd als (editeerafstand ≤ 4)<br />
-TGCATAT<br />
ATCCG-AT<br />
+.|.|-..<br />
minimum?<br />
Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.26/71
Voorstellen van aligneringen<br />
Alignering van twee strings<br />
string v (lengte n) en string w (lengte m)<br />
tabel van 2 rijen met karakters<br />
eerste rij bevat karakters van v in volgorde<br />
tweede rij bevat karakters van w in volgorde<br />
op verscheidende plaatsen zijn spaties<br />
tussengevoegd<br />
geen enkele kolom heeft spaties in beide rijen<br />
# kolommen ≤ n + m<br />
Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.27/71
<strong>Voorbeeld</strong>: ATGTTAT en ATCGTAC<br />
A T - G T T A T -<br />
A T C G T - A - C<br />
Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.28/71
<strong>Voorbeeld</strong>: ATGTTAT en ATCGTAC<br />
A T - G T T A T -<br />
A T C G T - A - C<br />
Definities<br />
match: kolom met = karakter in beide rijen<br />
mismatch: = karakter in beide rijen<br />
indel: kolom met spaties in een rij<br />
insertion: spatie in bovenste rij<br />
deletion: spatie in onderste rij<br />
e.g. 5 matches, 0 mismatches, Cursus Grafentheorie 4 indels<br />
en Combinatorische Optimalisatie (2008–2009) – p.28/71
Stringvoorstelling van rijen<br />
als string v aangevuld met spaties<br />
e.g. AT-GTTAT- en ATCGT-A-C<br />
Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.29/71
Stringvoorstelling van rijen<br />
als string v aangevuld met spaties<br />
e.g. AT-GTTAT- en ATCGT-A-C<br />
Integervoorstelling van rijen<br />
lijst van ints die # karakters tot positie geven<br />
e.g. 122345677 en 123455667<br />
Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.29/71
Stringvoorstelling van rijen<br />
als string v aangevuld met spaties<br />
e.g. AT-GTTAT- en ATCGT-A-C<br />
Integervoorstelling van rijen<br />
lijst van ints die # karakters tot positie geven<br />
e.g. 122345677 en 123455667<br />
Tabelvoorstelling van alignering<br />
combineer integervoorstelling van rijen<br />
e.g. <br />
1 2 2 3 4 5 6 7 7<br />
1 2 3 4 5 5 6 6 7<br />
Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.29/71
Interpretatie van tabelvoorstelling<br />
elke kolom is coördinaat in n × m rooster<br />
alignering is pad van (0, 0) naar (n,m)<br />
e.g. (0, 0) → (1, 1) → (2, 2) → (2, 3) → (3, 4)<br />
→ (4, 5) → (5, 5) → (6, 7) → (7, 6) → (7, 7)<br />
Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.30/71
Interpretatie van tabelvoorstelling<br />
elke kolom is coördinaat in n × m rooster<br />
alignering is pad van (0, 0) naar (n,m)<br />
e.g. (0, 0) → (1, 1) → (2, 2) → (2, 3) → (3, 4)<br />
→ (4, 5) → (5, 5) → (6, 7) → (7, 6) → (7, 7)<br />
Merk op<br />
rooster cfr. toerist in Manhattan<br />
maar kunnen ook langs diagonaal bewegen<br />
Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.30/71
<strong>Voorbeeld</strong> van alignering<br />
0<br />
1<br />
2<br />
3<br />
4<br />
5<br />
6<br />
7<br />
0 1 2 3 4 5 6 7<br />
(0, 0) → (1, 1) → (2, 2) → (2, 3) → (3, 4) →<br />
(4, 5) → (5, 5) → (6, 7) → (7, 6) → (7, 7)<br />
Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.31/71
Editeergraaf<br />
Editeergraaf<br />
n × m rooster met →, ↓, ց pijlen<br />
Pad in editeergraaf<br />
correspondeert met alignering<br />
boog kolom in tabelvoorstelling van<br />
alignering<br />
ց correspondeert met vi<br />
wj<br />
→ correspondeert met −<br />
wj<br />
↓ correspondeert met vi<br />
−<br />
Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.32/71
<strong>Voorbeeld</strong> van alignering<br />
0 1 2 2 3 4 5 6 7 7<br />
v = A T - G T T A T -<br />
| | | | |<br />
w = A T C G T - A - C<br />
0 1 2 3 4 5 5 6 6 7<br />
ց ց → ց ց ↓ ց ↓ →<br />
Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.33/71
Hoe de editeergraaf gebruiken<br />
Scorefunctie<br />
gebruikt voor inschatten waarde alignering<br />
gewenst: hoge waarden voor aligneringen<br />
met meer matchings<br />
Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.34/71
Hoe de editeergraaf gebruiken<br />
Scorefunctie<br />
gebruikt voor inschatten waarde alignering<br />
gewenst: hoge waarden voor aligneringen<br />
met meer matchings<br />
<strong>Voorbeeld</strong><br />
score voor kolom in alignering:<br />
positief getal voor = karakters<br />
negatief getal voor = karakters<br />
Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.34/71
Hoe de editeergraaf gebruiken<br />
Scorefunctie<br />
gebruikt voor inschatten waarde alignering<br />
gewenst: hoge waarden voor aligneringen<br />
met meer matchings<br />
<strong>Voorbeeld</strong><br />
score voor kolom in alignering:<br />
positief getal voor = karakters<br />
negatief getal voor = karakters<br />
score voor alignering:<br />
som van scores van kolommen<br />
Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.34/71
Opstellen van scoreschema<br />
gewichten aan bogen in graaf geven<br />
Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.35/71
Opstellen van scoreschema<br />
gewichten aan bogen in graaf geven<br />
Verschillende scorefuncties<br />
gebruikt voor verschillende<br />
aligneringsproblemen<br />
Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.35/71
Opstellen van scoreschema<br />
gewichten aan bogen in graaf geven<br />
Verschillende scorefuncties<br />
gebruikt voor verschillende<br />
aligneringsproblemen<br />
<strong>Voorbeeld</strong><br />
+1 voor match, 0 anders<br />
probleem is bepalen van langste<br />
gemeenschappelijk deelsequentie<br />
Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.35/71
Langste<br />
gemeenschappelijke<br />
deelsequenties (LCS)<br />
Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.36/71
Deelsequenties<br />
Deelsequentie van string v<br />
(geordende) sequentie van karakters (niet<br />
noodzakelijke opeenvolgend) uit v<br />
<strong>Voorbeeld</strong>: v = ATTGCTA<br />
AGCA en ATTA zijn deelsequenties van v<br />
TGTT en TCG zijn dat niet<br />
Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.37/71
Deelsequenties<br />
Deelsequentie van string v<br />
(geordende) sequentie van karakters (niet<br />
noodzakelijke opeenvolgend) uit v<br />
<strong>Voorbeeld</strong>: v = ATTGCTA<br />
AGCA en ATTA zijn deelsequenties van v<br />
TGTT en TCG zijn dat niet<br />
Merk op<br />
deelsequenties = deelstring<br />
Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.37/71
Gemeenschappelijke deelsequenties<br />
Gemeenschappelijke deelseq. van v en w<br />
deelsequentie van zowel v als w<br />
<strong>Voorbeeld</strong>: v = ATCTGAT en w = TGCATA<br />
TCTA is gemeenschappelijk aan v en w<br />
Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.38/71
Gemeenschappelijke deelsequenties<br />
Gemeenschappelijke deelseq. van v en w<br />
deelsequentie van zowel v als w<br />
<strong>Voorbeeld</strong>: v = ATCTGAT en w = TGCATA<br />
TCTA is gemeenschappelijk aan v en w<br />
Formele definitie<br />
posities 1 ≤ i1 ≤ · · · ≤ ik ≤ n in v = v1 ...vn<br />
pos. 1 ≤ j1 ≤ · · · ≤ jk ≤ m in w = w1 ...wm<br />
zo dat vit<br />
= wjt voor alle 1 ≤ t ≤ k<br />
i.e. symbolen op corresponderende posities<br />
zijn gelijk Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.38/71
Langste gemeenschapp. deelseq.<br />
Probleem: gegeven twee strings v en w<br />
van alle gemeenschappelijke deelsequenties<br />
van v en w, bepaal langste<br />
gemeenschappelijke deelsequentie (LCS)<br />
Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.39/71
Langste gemeenschapp. deelseq.<br />
Probleem: gegeven twee strings v en w<br />
van alle gemeenschappelijke deelsequenties<br />
van v en w, bepaal langste<br />
gemeenschappelijke deelsequentie (LCS)<br />
Eigenschap<br />
zij s(v,w) lengte van LCS<br />
zij d(v,w) editeerafstand tussen v en w<br />
ond. enkel insertions en deletions<br />
toegelaten<br />
i.e. # indels nodig om v in w om te zetten<br />
Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.39/71<br />
dan d(v,w) = n + m − 2s(v,w)
<strong>Voorbeeld</strong><br />
ATCTGAT en TGCATA<br />
kan gealigneerd worden als<br />
AT-C-TGAT<br />
-TGCAT-A-<br />
editeerafstand is (hoogstens) 5<br />
lenge van LCS is (7 + 6 − 5)/2 = 4<br />
LCS van lengte 4 is TCTA<br />
Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.40/71
LCS als aligneringsprobleem<br />
Dus<br />
LCS is te beschouwen als<br />
aligneringsprobleem van sequenties<br />
enkel insertions en deletions toegelaten<br />
substitution is niet toegelaten<br />
Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.41/71
LCS als aligneringsprobleem<br />
Dus<br />
LCS is te beschouwen als<br />
aligneringsprobleem van sequenties<br />
enkel insertions en deletions toegelaten<br />
substitution is niet toegelaten<br />
Corresponderende editeergraaf<br />
heeft → en ↓ bogen<br />
heeft ց bogen voor symbolen die matchen<br />
i.e. ց bogen voor niet-matchende symbolen<br />
zijn verwijderd<br />
Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.41/71
<strong>Voorbeeld</strong><br />
Bepaal LCS van TGCATA en ATCTGAT<br />
A<br />
T<br />
C<br />
T<br />
G<br />
A<br />
T<br />
T G C A T A<br />
Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.42/71
LCS als aligneringsprobleem<br />
Booggewichten in editeergraaf<br />
→ en ↓ bogen krijgen gewicht 0<br />
ց bogen krijgen gewicht +1<br />
Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.43/71
LCS als aligneringsprobleem<br />
Booggewichten in editeergraaf<br />
Dan<br />
→ en ↓ bogen krijgen gewicht 0<br />
ց bogen krijgen gewicht +1<br />
LCS-probleem is bepalen van langste pad in<br />
editeergraaf<br />
gebruiken techniek van dynamisch<br />
programmeren<br />
Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.43/71
LCS als DP-probleem<br />
Notatie<br />
si,j = lengte van LCS tussen prefixen v1 · · ·vi<br />
en w1 · · · wj<br />
Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.44/71
LCS als DP-probleem<br />
Notatie<br />
si,j = lengte van LCS tussen prefixen v1 · · ·vi<br />
en w1 · · · wj<br />
Eerste rij en kolom<br />
s0,j = 0 voor alle 1 ≤ j ≤ m<br />
si,0 = 0 voor alle 1 ≤ i ≤ n<br />
Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.44/71
<strong>Voorbeeld</strong><br />
A<br />
T<br />
C<br />
T<br />
G<br />
A<br />
T<br />
0 0 0 0 0 0<br />
0<br />
0<br />
0<br />
0<br />
0<br />
0<br />
0<br />
T G C A T A<br />
0<br />
Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.45/71
<strong>Voorbeeld</strong><br />
A<br />
T<br />
C<br />
T<br />
G<br />
A<br />
T<br />
0 0 0 0 0 0<br />
0<br />
0<br />
0<br />
0<br />
0<br />
0<br />
0<br />
T G C A T A<br />
0 0 0 1 1<br />
0<br />
1<br />
Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.46/71
<strong>Voorbeeld</strong><br />
A<br />
T<br />
C<br />
T<br />
G<br />
A<br />
T<br />
0 0 0 0 0 0<br />
0<br />
0<br />
0<br />
0<br />
0<br />
0<br />
0<br />
T G C A T A<br />
0 0 0 1 1<br />
1 1 1 1 2 2<br />
0<br />
1<br />
Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.47/71
<strong>Voorbeeld</strong><br />
A<br />
T<br />
C<br />
T<br />
G<br />
A<br />
T<br />
0 0 0 0 0 0<br />
0<br />
0<br />
0<br />
0<br />
0<br />
0<br />
0<br />
T G C A T A<br />
0 0 0 1 1<br />
1 1 1 1 2 2<br />
1 1 2 2 2 2<br />
0<br />
1<br />
Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.48/71
LCS als DP-probleem<br />
Algemene formule<br />
als vi = wj dan<br />
si,j = max<br />
<br />
als vi = wj dan<br />
⎧<br />
⎪⎨<br />
si,j = max<br />
⎪⎩<br />
si−1,j<br />
si,j−1<br />
si−1,j<br />
si,j−1<br />
si−1,j−1 + 1<br />
Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.49/71
LCS als DP-probleem<br />
Merk op<br />
si−1,j<br />
deletion van vi<br />
vi komt niet voor in LCS van i-prefix van v<br />
si,j−1<br />
insertion van wj<br />
wj komt niet voor in LCS van j-prefix van w<br />
si−1,j−1 + 1<br />
match van vi en wj<br />
Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.50/71
Algoritme in pseudocode<br />
Input: strings v en w van lengte n en m<br />
Output: s(v,w)<br />
1: for i from 0 to n do<br />
2: si,0 ← 0<br />
3: for j from 0 to m do<br />
4: s0,j ← 0<br />
5: for i from 1 to n do<br />
6: for j from 1 to m do<br />
7: if vi = wj then<br />
8: si,j ← max(si−1,j;si,j−1;si−1,j−1 + 1)<br />
9: else<br />
10: si,j ← max(si−1,j;si,j−1)<br />
11: return sn,m<br />
Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.51/71
<strong>Voorbeeld</strong><br />
Volledige DP-tabel: s(v,w) = 4<br />
A<br />
T<br />
C<br />
T<br />
G<br />
A<br />
T<br />
0 0 0 0 0 0<br />
0<br />
0<br />
0<br />
0<br />
0<br />
0<br />
0<br />
T G C A T A<br />
0 0 0 1 1<br />
1 1 1 1 2 2<br />
1 1 2 2 2 2<br />
1<br />
1<br />
1<br />
1<br />
1<br />
2<br />
2<br />
2<br />
2<br />
2<br />
2<br />
2<br />
2<br />
2<br />
3<br />
3<br />
3<br />
3<br />
3<br />
4<br />
0<br />
1<br />
3<br />
3<br />
4<br />
4<br />
Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.52/71
Bepalen van LCS<br />
Om LCS uit DP-tabel te reconstrueren<br />
opslaan van backtrack pointers bi,j<br />
houden bij welke van si−1,j;si,j−1;si−1,j−1 + 1<br />
tot si,j leidt<br />
Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.53/71
Bepalen van LCS<br />
Om LCS uit DP-tabel te reconstrueren<br />
Dus<br />
opslaan van backtrack pointers bi,j<br />
houden bij welke van si−1,j;si,j−1;si−1,j−1 + 1<br />
tot si,j leidt<br />
als si,j = si−1,j dan bi,j =←<br />
als si,j = si,j−1 dan bi,j =↑<br />
als si,j = si−1,j−1 + 1 dan bi,j =տ<br />
Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.53/71
<strong>Voorbeeld</strong><br />
Een langste pad: LCS is TCTA<br />
A<br />
T<br />
C<br />
T<br />
G<br />
A<br />
T<br />
0 0 0 0 0 0<br />
0<br />
0<br />
0<br />
0<br />
0<br />
0<br />
0<br />
T G C A T A<br />
0 0 0 1 1<br />
1 1 1 1 2 2<br />
1 1 2 2 2 2<br />
1<br />
1<br />
1<br />
1<br />
1<br />
2<br />
2<br />
2<br />
2<br />
2<br />
2<br />
2<br />
2<br />
2<br />
3<br />
3<br />
3<br />
3<br />
3<br />
4<br />
0<br />
1<br />
3<br />
3<br />
4<br />
4<br />
Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.54/71
<strong>Voorbeeld</strong><br />
Een ander langste pad: LCS is TGAT<br />
A<br />
T<br />
C<br />
T<br />
G<br />
A<br />
T<br />
0 0 0 0 0 0<br />
0<br />
0<br />
0<br />
0<br />
0<br />
0<br />
0<br />
T G C A T A<br />
0 0 0 1 1<br />
1 1 1 1 2 2<br />
1 1 2 2 2 2<br />
1<br />
1<br />
1<br />
1<br />
1<br />
2<br />
2<br />
2<br />
2<br />
2<br />
2<br />
2<br />
2<br />
2<br />
3<br />
3<br />
3<br />
3<br />
3<br />
4<br />
0<br />
1<br />
3<br />
3<br />
4<br />
4<br />
Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.55/71
Complexiteit<br />
Tijdscomplexiteit<br />
berekenen van s(v,w) kost Θ(nm) tijd<br />
reconstrueren van LCS kost Θ(n + m) tijd<br />
Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.56/71
Complexiteit<br />
Tijdscomplexiteit<br />
berekenen van s(v,w) kost Θ(nm) tijd<br />
reconstrueren van LCS kost Θ(n + m) tijd<br />
Geheugencomplexiteit<br />
DP-tabel kost Θ(nm) geheugen<br />
tabel met backtrack pointers kost Θ(nm)<br />
geheugen<br />
Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.56/71
Globaal aligneren van<br />
sequenties<br />
Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.57/71
Opmerking<br />
Merk op<br />
LCS is aligneringsprobleem met beperkte<br />
scorefunctie<br />
score 1 voor matches<br />
score 0 voor indels<br />
Proberen scorefunctie te veralgemenen<br />
Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.58/71
Globaal aligneren van sequenties<br />
Scorematrix δ<br />
een (k + 1) × (k + 1) matrix<br />
met k grootte van alfabet (bv. 4 voor DNA)<br />
δ(x,y) = score van x<br />
y in alignering<br />
Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.59/71
Globaal aligneren van sequenties<br />
Scorematrix δ<br />
een (k + 1) × (k + 1) matrix<br />
met k grootte van alfabet (bv. 4 voor DNA)<br />
δ(x,y) = score van x<br />
y in alignering<br />
<strong>Voorbeeld</strong>: meestal gebruikt<br />
−µ voor mismatch, −σ voor indel, +1 voor<br />
match<br />
Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.59/71
Globaal aligneren van sequenties<br />
Scorematrix δ<br />
een (k + 1) × (k + 1) matrix<br />
met k grootte van alfabet (bv. 4 voor DNA)<br />
δ(x,y) = score van x<br />
y in alignering<br />
<strong>Voorbeeld</strong>: meestal gebruikt<br />
−µ voor mismatch, −σ voor indel, +1 voor<br />
match<br />
Score van alignering<br />
som van scores van de kolommen<br />
Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.59/71
Probleem van globale alignering<br />
Input<br />
twee strings v en w<br />
scorematrix δ<br />
Output<br />
een alignering van v en w zo dat score (zoals<br />
gedefinieerd door δ) maximum is van alle<br />
mogelijke aligneringen van v en w<br />
Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.60/71
Recurrente betrekking<br />
Notatie si,j<br />
score van alignering van i-prefix van v met<br />
j-prefix van w<br />
Recurrente betrekking voor si,j<br />
si,j = max<br />
⎧<br />
⎪⎨<br />
⎪⎩<br />
si−1,j + δ(vi, −)<br />
si,j−1 + δ(−,wj)<br />
si−1,j−1 + δ(vi,wj)<br />
Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.61/71
<strong>Voorbeeld</strong><br />
Scores<br />
−µ voor mismatch, −σ voor indel, +1 voor<br />
match<br />
Resulterende score<br />
= #matches−µ×# mismatches−σ ×# indels<br />
Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.62/71
<strong>Voorbeeld</strong><br />
Scores<br />
−µ voor mismatch, −σ voor indel, +1 voor<br />
match<br />
Resulterende score<br />
= #matches−µ×# mismatches−σ ×# indels<br />
Recurrente betrekking herschreven<br />
⎧<br />
si−1,j − σ<br />
⎪⎨<br />
si,j−1 − σ<br />
si,j = max<br />
si−1,j−1 − µ if vi = wi<br />
⎪⎩<br />
si−1,j−1 + 1 if vi = wi<br />
Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.62/71
Opmerkingen<br />
LCS als probleem van globaal aligneren<br />
µ = ∞,σ = 0<br />
Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.63/71
Opmerkingen<br />
LCS als probleem van globaal aligneren<br />
µ = ∞,σ = 0<br />
Scorematrices<br />
voor DNA-sequenties dikwijls gebruikt<br />
µ als kost voor mismatch<br />
σ als kost voor indel<br />
ingewikkelder voor andere<br />
aligneringsproblemen<br />
Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.63/71
Lokaal aligneren van<br />
sequenties<br />
Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.64/71
Opmerking<br />
Globaal aligneren van sequenties<br />
zoekt gelijkenis tussen volledige strings<br />
nuttig wanneer gelijkenis betrekking heeft op<br />
volledige lengte van strings<br />
Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.65/71
Opmerking<br />
Globaal aligneren van sequenties<br />
zoekt gelijkenis tussen volledige strings<br />
nuttig wanneer gelijkenis betrekking heeft op<br />
volledige lengte van strings<br />
Maar in vele toepassingen<br />
score van alignering tussen twee deelstrings<br />
van v en w zou kunnen groter zijn dan score<br />
van alignering tussen volledige v en w<br />
Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.65/71
Opmerking<br />
Globaal aligneren van sequenties<br />
zoekt gelijkenis tussen volledige strings<br />
nuttig wanneer gelijkenis betrekking heeft op<br />
volledige lengte van strings<br />
Maar in vele toepassingen<br />
score van alignering tussen twee deelstrings<br />
van v en w zou kunnen groter zijn dan score<br />
van alignering tussen volledige v en w<br />
Probleem<br />
bepalen van dergelijke alignering van<br />
Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.65/71<br />
deelstrings
<strong>Voorbeeld</strong><br />
Strings zijn<br />
TCCCAGTTATGTCAGGGGACACGAGCATGCAGAGAC<br />
AATTGCCGCCGTCGTTTTCAGCAGTTATGTCAGATC<br />
Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.66/71
<strong>Voorbeeld</strong><br />
Strings zijn<br />
TCCCAGTTATGTCAGGGGACACGAGCATGCAGAGAC<br />
AATTGCCGCCGTCGTTTTCAGCAGTTATGTCAGATC<br />
Globale alignering<br />
--T--CC-C-AGT--TATGT-CAGGGGACACG--A-GCATGCAGA-GAC<br />
..|..||.|..||..|.|.|.|||....||.|..|.|..|.||||...|<br />
AATTGCCGCC-GTCGT-T-TTCAG----CA-GTTATG--T-CAGAT--C<br />
Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.66/71
<strong>Voorbeeld</strong><br />
Strings zijn<br />
TCCCAGTTATGTCAGGGGACACGAGCATGCAGAGAC<br />
AATTGCCGCCGTCGTTTTCAGCAGTTATGTCAGATC<br />
Globale alignering<br />
--T--CC-C-AGT--TATGT-CAGGGGACACG--A-GCATGCAGA-GAC<br />
..|..||.|..||..|.|.|.|||....||.|..|.|..|.||||...|<br />
AATTGCCGCC-GTCGT-T-TTCAG----CA-GTTATG--T-CAGAT--C<br />
Lokale alignering<br />
------------------tccCAGTTATGTCAGgggacacgagcatgcagagac<br />
.....................||||||||||||.....................<br />
aattgccgccgtcgttttcagCAGTTATGTCAGatc------------------<br />
Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.66/71
Probleem van lokaal aligneren<br />
Input<br />
twee strings v en w<br />
scorematrix δ<br />
Output<br />
deelstrings van v en w zo dat globale<br />
alignering, gedefinieerd door δ, maximum is<br />
van alle globale aligneringen van deelstrings<br />
van v en w<br />
Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.67/71
Probleem van lokaal aligneren<br />
Input<br />
twee strings v en w<br />
scorematrix δ<br />
Output<br />
deelstrings van v en w zo dat globale<br />
alignering, gedefinieerd door δ, maximum is<br />
van alle globale aligneringen van deelstrings<br />
van v en w<br />
Opmerking<br />
schijnt veel gecompliceerder dan globale<br />
alignering te zijn<br />
Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.67/71
Observatie<br />
Globale alignering correspondeert met<br />
bepalen van langste pad in editeergraaf<br />
tussen (0, 0) en (n,m)<br />
Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.68/71
Observatie<br />
Globale alignering correspondeert met<br />
bepalen van langste pad in editeergraaf<br />
tussen (0, 0) en (n,m)<br />
Lokale alignering correspondeert met<br />
bepalen van langste pad in editeergraaf<br />
tussen willekeurige toppen (i,j) en (i ′ ,j ′ )<br />
Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.68/71
Observatie<br />
Globale alignering correspondeert met<br />
bepalen van langste pad in editeergraaf<br />
tussen (0, 0) en (n,m)<br />
Lokale alignering correspondeert met<br />
Maar<br />
bepalen van langste pad in editeergraaf<br />
tussen willekeurige toppen (i,j) en (i ′ ,j ′ )<br />
DP-oplossing voor globale alignering bepaalt<br />
langste pad tussen (0, 0) en elke (i,j) in<br />
editeergraaf<br />
Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.68/71
Oplossen van lokale alignering<br />
Eenvoudige, maar inefficiënte benadering<br />
voor alle paren toppen (i,j) en (i ′ ,j ′ )<br />
bepalen langste pad tussen (i,j) en (i ′ ,j ′ )<br />
bijhouden wat uiteindelijke langste pad is<br />
Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.69/71
Oplossen van lokale alignering<br />
Eenvoudige, maar inefficiënte benadering<br />
voor alle paren toppen (i,j) en (i ′ ,j ′ )<br />
bepalen langste pad tussen (i,j) en (i ′ ,j ′ )<br />
bijhouden wat uiteindelijke langste pad is<br />
Efficiënter (Smith-Waterman, 1981)<br />
toevoegen boog met gewicht 0 van (0, 0) naar<br />
elke (i,j)<br />
voor alle toppen (i,j)<br />
bepalen langste pad van (0, 0) naar (i,j)<br />
Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.69/71
Recurrentie voor lokale alignering<br />
Recurrente betrekking<br />
⎧<br />
0<br />
⎪⎨<br />
si−1,j + δ(vi, −)<br />
si,j = max<br />
si,j−1 + δ(−,wj)<br />
⎪⎩<br />
si−1,j−1 + δ(vi,wj)<br />
Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.70/71
Opmerking<br />
Algemenere aligneringsproblemen, e.g.<br />
alignering met gap penalties<br />
meervoudige alignering<br />
Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.71/71
Opmerking<br />
Algemenere aligneringsproblemen, e.g.<br />
alignering met gap penalties<br />
meervoudige alignering<br />
Manier van oplossen<br />
opstellen van geschikte recurrente betrekking<br />
gebruiken dynamisch programmeren<br />
Cursus Grafentheorie en Combinatorische Optimalisatie (2008–2009) – p.71/71