ÁLGEBRA LINEAR, MEEC (AL-10) Aula teórica 35 UMA APLICAÇÃO: PESQUISA NA INTERNET Há um algoritmo de pesquisa na Internet que se baseia em parte no cálculo de vectores próprios de uma matriz real simétrica. Este assunto está descrito em detalhe no artigo seguinte: http://www.cs.cornell.edu/home/kleinber/auth.pdf O autor deste artigo, Jon Kleinberg (http://www.cs.cornell.edu/home/kleinber/), recebeu em 2006 o Prémio Nevanlina (http://www.mathunion.org/general/prizes/nevanlinna/index.html) no Congresso Internacional de Matemática, em Madrid. Vamos de seguida descrever este algoritmo com algumas simplificações (para todos os detalhes consultem o artigo).
PASSO 1: Digitar a frase a pesquisar, por exemplo Bons carros usados a bom preço. PASSO 2: Fazer uma primeira selecção de endereços de, digamos, 200 páginas segundo um critério razoável, por exemplo seleccionando páginas que contêm esta frase, ou que contêm muitas palavras desta frase. Obtém-se assim um conjunto R de endereços. PASSO 3: Para cada página P cujo endereço pertence a R acrescentar a R um subconjunto do conjunto de endereços de páginas que apontam para P ou que são apontadas por P. Obtém-se assim um conjunto S bastante grande. (Mas relativamente pequeno em comparação com o número de páginas da Internet!) Tipicamente este conjunto S contém (ao contrário de R) muitas das melhores páginas sobre o assunto que estamos a pesquisar. Problema: S é enorme e não está ordenado! PASSO 4: Ordenar S por ordem decrescente de interesse. Seja n N o número de elementos de S e numerem-se de 1 a n as páginas cujos endereços estão guardados em S. Para cada i {1,...,n} seja x i R + um número que representa a autoridade da página i acerca do assunto da pesquisa: quanto maior o número, maior a autoridade. As autoridades x i definem um vector x R n. Como determiná-lo? Quanto mais páginas apontarem para a página i maior, em princípio, deveria ser x i. Contudo, uma página pode apontar para outra por razões que nada têm que ver com a pesquisa, pelo que é preciso determinar quais são as boas páginas, ou seja, as que apontam para i pelo motivo certo.
Vamos então ordenar também as páginas por ordem decrescente do seu interesse enquanto distribuidoras ( hubs ): para cada j {1,...,n} seja y j R + um número que representa o valor da página j enquanto hub para o assunto da pesquisa: quanto maior o número, maior o valor. Os valores y j definem um vector y R n. Como determiná-lo? A ideia chave: xi deve ser tanto maior quanto maior for a soma j y j para as páginas j que apontam para i; y j deve ser tanto maior quanto maior for a soma i x i para as páginas i apontadas por j. Seja A Mat n n (R) a matriz definida por { 1 se j aponta para i, a ij = 0 se j não aponta para i. A soma j y j indicada acima é (Ay) i. A soma i x i indicada acima é (A T x) j. Processo iterativo: Começar com xi = y i = 1 n para qualquer i. Os vectores x e y estão assim normalizados: x 2 = n i=1 x 2 i = y 2 = n j=1 y 2 j = 1. Chamar aos vectores assim definidos x1 e y 1. Definir vectores x 2, x 3,... e y 2, y 3,... pela seguinte regra de recorrência: y k+1 = x k+1 = 1 Ax k Ax k 1 A T y k AT y k.
Daqui resulta, para cada k N: x k+2 = 1 Ax k A T y k+1 AT Ax k. Logo, para cada k N o vector x 2k+1 é unitário e é um múltiplo de ( A T A ) k x1. A T A é diagonalizável porque é uma matriz Hermitiana. A T A tem valores próprios não negativos, como se vê por um argumento semelhante ao que usámos para mostrar que as métricas têm valores próprios positivos: se λ for um valor próprio de A T A associado a um vector próprio u então temos, por um lado, e, por outro, u T A T Au = ( A T Au ) T u = λu u u T A T Au = (Au) T (Au) = (Au) (Au) 0, pelo que, sendo u 0 (porque é um vector próprio), temos λ = (Au) (Au) u u 0.
Os valores próprios de (A T A) k são da forma λ k para cada valor próprio λ de A T A e os vectores próprios de (A T A) k associados a λ k são os vectores próprios u de A T A associados a λ: (A T A) k u = (A T A) k 1 A T Au = (A T A) k 1 λu = λ(a T A) k 1 u =... = λ 2 (A T A) k 2 u =... =... =... = λ k u. (Formalmente, isto demonstra-se por indução matemática.) Se for o maior dos valores próprios de A T A então para qualquer um dos outros valores próprios a razão λ k /λ k M tende para zero quando k tende para infinito. Seja Λ = S 1 (A T A)S a matriz diagonalizada com os valores próprios na diagonal principal, onde S é uma matriz diagonalizante. Então Λ 2 = S 1 A T ASS 1 A T AS = S 1 (A T A) 2 S e vemos que para cada k se terá Λ k = S 1 ( A T A ) k S. [Isto é outra forma de verificar que os vectores próprios de (A T A) k que são as colunas de S são os mesmos de A T A e que os valores próprios, que são as entradas da diagonal principal de Λ k, são as potências λ k para cada valor próprio λ de A T A.] ( k Portanto a matriz 1 A A) T converge, quando k, para a matriz que representa a projecção ortogonal sobre o espaço próprio E λm, pois a matriz 1 Λ tem entradas da diagonal principal iguais a 1 nas colunas correspondentes aos vectores próprios associados a e valores menores do que 1 nas outras entradas:
( ) 1 k Λ = k 1 0 0... 0 1... 0 0 ( λ ) k... 0 0 0 ( λ ) k....... 0 ( λ ) k 1 0 0... 0 1... 0 0 0... 0 0 0 0....... 0 0 Desde que o vector inicial x 1 não seja ortogonal a E λm, os vectores x 2k+1 convergem para E λm quando k. CONCLUSÃO: O que verificamos é que serve para o efeito pretendido um qualquer vector próprio associado ao maior valor próprio. Ficou demonstrada a existência de soluções para o problema de ordenar os resultados da pesquisa e que o problema pode resumir-se ao cálculo de valores próprios e vectores próprios da matriz A T A. A forma de calcular os vectores próprios pode, mas não tem, de basear-se no algoritmo iterativo descrito acima.