2.3 Proje¸c˜ oes de Alinhamentos e Interpreta¸ c˜ ao Geom´ etrica
2.3.1 Interpreta¸ c˜ ao Geom´ etrica para Duas Seq¨ uˆ encias
A interpreta¸c˜ao geom´etrica ´e motivada pela opera¸c˜ao do algoritmo de programa¸c˜ao dinˆamica (o parDisteAlinha) para o caso de 2 seq¨uˆencias. No Cap´ıtulo 1, vimos que, de acordo com o algoritmo de programa¸c˜ao dinˆamica, o c´alculo de cada entrada deadepende de, no m´aximo, 3 outras entradas3.
Para cada uma das possibilidades, um custo est´a associado, que ´e o custo da entrada mais o custo de uma coluna correspondente (vide Figura 1.4). O custo da entrada em c´alculo (“destino”) ´e o custo da melhor escolha dentre as possibilidades de que ela depende (“origens”).
No contexto do Algoritmo Alinha, dizemos que uma entrada a[i, j] depende de uma entrada a[i0, j0] se a[i0, j0] ´e usada no c´alculo de m´ınimo paraa[i, j]. Nessas circunstˆancias, podemos representar as rela¸c˜oes de dependˆencias das entradas de aem forma de um grafo dirigido com pesos G= (V, A, c). O grafo G possui a forma de um reticulado (ou “grade”) em que:
• o conjunto de v´ertices ´eV ={0, . . . , m}×{0, . . . , n}e, a cada posi¸c˜aoa[i, j] da matriz, associamos o v´ertice (i, j)∈V;
• se a entradaa[i, j] depende da entradaa[i0, j0], ent˜ao ((i0, j0),(i, j))∈A´e um arco de G;
• see= ((i0, j0),(i, j))∈A´e um arco do grafo, ent˜ao o custo c(e) desse arco ´e igual a c(s[i], ) sei0 < ie t0 =t, ac(s[i], t[j]) sei0 < ie t0< t e ac( , t[j]) sei0 =ie t0< t.
A Figura 2.3 ilustra a forma do grafoGpara as seq¨uˆenciass=AT et=CAT. Na figura, os custos entre caracteres s˜ao dados pela m´etrica zero-ou-um.
E importante notar que cada arco de´ Grepresenta uma possibilidade de alinhamento de um caractere de sa um caractere det(i.e., um arco do grafo representa uma possibilidade para uma coluna de um alinhamento descomt). Mais do que isso, um caminho orientado qualquer que parta do v´ertice (0,0) deGe que chegue a (m, n) representa um alinhamento inteiro entre s e t em que a i-´esima coluna do alinhamento ´e dada pelo i-´esimo arco do caminho orientado.
3As c´elulas da borda deapodem depender de menos do que 3 entradas.
2.3 Proje¸c˜oes de Alinhamentos e Interpreta¸c˜ao Geom´etrica 51
C A T
1 1
1
A
1 1
1
1 1 1
1 1 1
1 1
1
1
0 1 1
0
T 1 1 1
Figura 2.3: O grafo em forma de reticulado para a matriz de programa¸c˜ao dinˆamica a entre as seq¨uˆencias s = AT e t = CAT. O custo de um arco no grafo ´e igual ao custo da coluna do alinhamento determinada pelos extremos do arco. Um caminho orientado de custo m´ınimo est´a indicado com arcos em destaque e corresponde ao alinhamento
AT CAT
.
O custo do caminho dirigido, igual `a soma dos custos de seus arcos, ´e igual `a soma dos custos das colunas do alinhamento que ele determina e, assim, o custo do caminho dirigido ´e igual ao custo do alinhamento. O objetivo do Problema APS ´e encontrar um alinhamento de custo m´ınimo e isso significa, na formula¸c˜ao em termos de grafos, que um caminho orientado de custo m´ınimo emG, com origem em (0,0) e t´ermino em (m, n) ´e procurado.
O reticulado G ´e tamb´em chamado grafo de edi¸c˜ao. Se houver custos associados `as arestas (em vez de todos arcos terem custo trivial igual a 1), ele tamb´em ´e chamadografo de edi¸c˜ao com pesos. Um caminho orientado de menor n´umero de arestas (ou de custo m´ınimo, no caso com pesos) determina um alinhamento ´otimo entre as seq¨uˆencias e, portanto, uma seq¨uˆencia de custo m´ınimo de opera¸c˜oes de edi¸c˜ao para transformar uma seq¨uˆencia na outra.
Por esse motivo, um tal caminho ´e chamadotranscri¸c˜ao de edi¸c˜ao de custo m´ınimo [Gus97, p. 223].
O que o Algoritmo Alinha faz ´e justamente “converter” um caminho de custo m´ınimo no grafo (com os arcos do caminho determinados dinamicamente) em um alinhamento. Para isso, o algoritmo observa, a cada passo (partindo do ´ultimo v´ertice do caminho, o v´ertice (m, n)), qual foi a dependˆencia entre v´ertices calculada pelo Algoritmo Dist para obter menor custo no alinhamento global.
Dizemos que um caminho orientado qualquer de (0,0) a (m, n) em G, que ao ser per-corrido produz um alinhamento, ´e um caminho associado ao alinhamento.
A tarefa contr´aria `a do Algoritmo Alinha, isto ´e, “converter” um alinhamento a um caminho orientado no grafo, tamb´em ´e poss´ıvel. Os caminhos que consideramos partem do v´ertice (0,0) e terminam no v´ertice (m, n). Se A ´e um alinhamento qualquer entre s e t com comprimento l (i.e., A possui l colunas), ent˜ao podemos construir um caminho PA=v0→v1 → · · · →vl de forma que “seguindo os arcos dePA” possamos reconstruirA.
O Algoritmo Caminhoconstr´oi um caminhoPAassociado ao alinhamento A.
Observe-se que seA´e um alinhamento livre de colunas em branco e que seA0´e um alinha-mento obtido deApor inser¸c˜ao de colunas em branco, ent˜aoCaminho(A) =Caminho(A0).
Basta, ent˜ao, para tratar de todos os poss´ıveis caminhos, restringir a aten¸c˜ao apenas aos alinhamentos livres de colunas em branco.
O AlgoritmoCaminhopode ter sua corretude verificada por indu¸c˜ao finita. ´E claro que
Algoritmo 2.1Caminho(A)
Entrada: Um alinhamento A entre as seq¨uˆenciasse t.
Sa´ıda: Um caminho orientadoPA associado ao alinhamentoA.
1: v0←(0,0); k←1; //k´e o n´umero de v´ertices de PAque j´a foram determinados
2: para k0 = 1, . . . , l fa¸ca// k0 percorre as colunas de A
3: seA[k0] ´e da forma
s[i]
ent˜ao
4: vk←vk−1+ (1,0); k←k+ 1;
5: sen˜ao seA[k0] ´e da forma s[i]
t[j]
ent˜ao
6: vk←vk−1+ (1,1); k←k+ 1;
7: sen˜ao seA[k0] ´e da forma
t[j]
ent˜ao
8: vk←vk−1+ (0,1); k←k+ 1;
9: sen˜ao
10: // Coluna em branco; o caminho fica estacion´ario para essa coluna
11: DevolvaPA=v0 →v1→ · · · →vk−1;
o Algoritmo Caminhotoma tempo linear em l, ondel ´e o n´umero de colunas de A. Se A
´
e um alinhamento livre de colunas em branco, ent˜ao l≤m+ne o algoritmo toma tempo O(m+n).
Sob luz dessa discuss˜ao, fica claro que h´a uma bije¸c˜ao entre caminhos dirigidos de G e alinhamentos livres de colunas em branco de s e t. A bije¸c˜ao ´e dada pelos Algoritmos Alinhae Caminho.
Um invariante muito simples do Algoritmo Caminho´e que, se em um dado momento de sua execu¸c˜ao, o ´ultimo v´ertice determinado do caminho foi v = (i, j), ent˜ao o sub-alinhamento considerado at´e aquele ponto alinhavas[1 . .i] a t[1 . .j]. Em outras palavras, se (i, j) ´e um dos v´ertices do caminho associado aA, ent˜ao (i, j) ´e um corte do alinhamento A. Mais ainda, se (i, j) ´e um corte de A, ent˜ao (i, j) ´e um v´ertice do caminho PA. Essas duas afirma¸c˜oes nos dizem que o caminho associado aA´e compostoexatamente pelos cortes de A (vide Se¸c˜ao 1.6.2.2).
A rela¸c˜ao entre o problema de alinhamentos com o problema de caminhos m´ınimos em grafos ´e ´util pois, al´em de permitir uma elegante interpreta¸c˜ao geom´etrica dos alinhamentos e dos algoritmos, tamb´em deixa `a disposi¸c˜ao ferramentas bem estudadas de Teoria de Grafos para resolu¸c˜ao do problema (inclusive para o estudo de solu¸c˜oes sub-´otimas).
Agora que conhecemos a bije¸c˜ao existente entre caminhos orientados e alinhamentos sem colunas em branco, podemos fornecer a justificativa prometida feita na Se¸c˜ao 1.5.1 para o n´umero de alinhamentos existentes entre duas seq¨uˆencias.
Um alinhamento de maior comprimento entre duas seq¨uˆencias ´e aquele em que cada caractere de uma seq¨uˆencia est´a alinhado a um espa¸co na outra seq¨uˆencia. Nesse caso, se as seq¨uˆencias set possuem respectivamente tamanhosm e n, tal alinhamento teriam+n colunas. Por outro lado, um alinhamento de comprimento m´ınimo ´e aquele em que o maior n´umero poss´ıvel de caracteres entre as seq¨uˆencias est˜ao alinhados e, por conseq¨uˆencia, um tal alinhamento possui max{m, n} colunas (j´a que ´e poss´ıvel emparelhar no m´aximo um n´umero de caracteres igual ao comprimento da menor seq¨uˆencia e os demais caracteres da seq¨uˆencia mais longa ficarem alinhados a espa¸cos). Em resumo, o maior alinhamento pode term+ncolunas e o menor, max{m, n}. Al´em disso, qualquer n´umero entre 0 e min{m, n}
pode ser o n´umero de pares formados entre caracteres de se t.
2.3 Proje¸c˜oes de Alinhamentos e Interpreta¸c˜ao Geom´etrica 53 E f´´ acil de ver que, quando o n´umero de emparelhamentos de caracteres desa caracteres detfica fixado, o n´umero de emparelhamentos de caracteres desa espa¸cos fica automatica-mente determinado, bem como o n´umero de caracteres detque ficam alinhados a espa¸cos.
Isso ocorre porque se exatamenteicaracteres de sforem emparelhados aicaracteres de t, ent˜ao os m−i caracteres de s restantes e os n−i caracteres restantes de t dever˜ao ficar alinhados a espa¸cos.
Ademais, da maneira representada na Figura 2.3, um caractere de s alinhado a um caractere de t ´e representado como um arco diagonal, um caractere de s alinhado a um espa¸co em t´e representado por um arco vertical e um espa¸co alinhado a um caractere de t ´e representado por um arco horizontal. Logo um caminho do v´ertice (0,0) ao v´ertice (m, n) pode ser representado por uma seq¨uˆencia deD’s,V’s eH’s, de forma que cada letra represente um tipo de arco.
Sabemos ent˜ao que se um caminho orientado de (0,0) a (m, n) possuiiarestas diagonais (D), ent˜ao o n´umero de arestas horizontais (H) ser´a n−ie o n´umero de arestas verticais (V) ser´a m−i.
Um caminho de (0,0) a (m, n) pode ent˜ao ser observado como uma palavra de i carac-teresD,m−icaracteresV en−icaracteresH, para cadaifixado. O n´umero de caminhos com i arestas diagonais (e, portanto, o n´umero de alinhamentos de s e t em que h´a i ca-racteres desemparelhados aicaracteres det) pode ent˜ao ser calculado como o n´umero de palavras distintas (anagramas) que possuemiletrasD,m−iletrasV e n−iletrasH, que
´
e dado pelo coeficiente multinomial m−i, n−i, im+n−i
. Como ipode variar entre 0 e min{m, n}, segue que o n´umero de alinhamentos entre duas seq¨uˆenciassetcom comprimentos|s|=m e |t|=n´e
min{m,n}
X
i=0
m+n−i m−i, n−i, i
.
No caso particular em que ambas seq¨uˆencias possuem comprimenton, temos que o n´umero N(n) de alinhamentos ´e
N(n) =
n
X
i=0
2n−i n−i, n−i, i
,
conforme desej´avamos argumentar.