Primeiro Exercício programa: Como o Google ordena páginas. MAP-2121 para EPUSP

Documentos relacionados
MATRIZES - PARTE Definição e Manipulação de Matrizes AULA 21

Cálculo Numérico. Sistemas lineares Métodos Iterativos: Introdução Método Iterativo de Jacobi-Richardson

étodos uméricos SISTEMAS DE EQUAÇÕES LINEARES (Continuação) Prof. Erivelton Geraldo Nepomuceno PROGRAMA DE PÓS-GRADUAÇÃO EM ENGENHARIA ELÉTRICA

Álgebra Linear Semana 04

étodos uméricos SISTEMAS DE EQUAÇÕES LINEARES (Continuação) Prof. Erivelton Geraldo Nepomuceno PROGRAMA DE PÓS-GRADUAÇÃO EM ENGENHARIA ELÉTRICA

SISTEMAS LINEARES PROF. EDÉZIO

CÁLCULO NUMÉRICO. Profa. Dra. Yara de Souza Tadano

Exercício: Identifique e faça um esboço do conjunto solução da. 3x xy + y 2 + 2x 2 3y = 0

Gabriel Coutinho DCC035 - Pesquisa Operacional Lista 6

Grafos Direcionados. > Grafos Direcionados Representações Computacionais 1/36

Métodos iterativos para sistemas lineares.

PageRank Matriz do Google Referências. Matrizes e Google. Manuela da Silva Souza IME - USP. 13 de novembro de 2013

MAP Primeiro exercício programa Método de Diferenças Finitas para solução de problemas de contorno de equações diferenciais ordinárias

MAP Métodos Numéricos e Aplicações Escola Politécnica 1 Semestre de 2017 EPREC - Entrega em 27 de julho de 2017

Primeira prova de Álgebra Linear - 06/05/2011 Prof. - Juliana Coelho

Cálculo Numérico BCC760

Programação de Computadores

Introdução aos Métodos Numéricos

Cálculo Numérico Prof. Guilherme Amorim 26/11/2013. Aula 11 Sistemas de Equações Lineares / Parte 4 Convergência e Sistemas mal-condicionados

G3 de Álgebra Linear I

Agenda do Dia Aula 14 (19/10/15) Sistemas Lineares: Introdução Classificação

Resolução de Sistemas Lineares. Ana Paula

Métodos Numéricos - Notas de Aula

Cenário sobre Sistemas Lineares

Método Simplex. Marina Andretta ICMC-USP. 19 de outubro de 2016

Álgebra Linear Teoria de Matrizes

Lista 2 - Resolução. 1. Verifique se os produtos abaixo estão bem definidos e, em caso afirmativo, calcule-os.

Poliedros na forma padrão

MAP Primeiro exercício programa Osciladores Harmônicos

Autovalores e Autovetores

Resolução de sistemas de equações lineares: Método dos Gradientes Conjugados

Exponencial de uma matriz

Laboratório de Simulação Matemática. Parte 7 2

ÁLGEBRA LINEAR I - MAT0032

4.1 Preliminares. No exemplo acima: Dom(R 1 ) = e Im(R 1 ) = Dom(R 2 ) = e Im(R 2 ) = Dom(R 3 ) = e Im(R 3 ) = Diagrama de Venn

Interpolação polinomial: Diferenças divididas de Newton

Figura : Monitoria. Monitoria Cálculo Numérico

Teoria dos Grafos. Valeriano A. de Oliveira Socorro Rangel Departamento de Matemática Aplicada.

Disciplina: Cálculo Numérico IPRJ/UERJ. Sílvia Mara da Costa Campos Victer. Aula 6 - Solução de Sistema de Equações Algébricas

O grau de saída d + (v) de um vértice v é o número de arcos que tem

Teoria dos Grafos. Valeriano A. de Oliveira, Socorro Rangel, Silvio A. de Araujo. Departamento de Matemática Aplicada

Método prático para extrair uma base de um conjunto de geradores de um subespaço de R n

Aula 14. Aula de hoje. Aula passada

Autovalores e Autovetores

Otimização em Grafos

ÁLGEBRA LINEAR AULA 2

MAP Segundo exercício programa Resolvendo sistemas esparsos por Gradientes Conjugados

Pra início de conversa... O que é um algoritmo? Exemplos de algoritmos. Como podemos descrever algoritmos? Como podemos descrever algoritmos?

ÁLGEBRA LINEAR SISTEMAS DE EQUAÇÕES LINEARES

Definição. Diremos que um número inteiro d é um divisor de outro inteiro a, se a é múltiplo de d; ou seja, se a = d c, para algum inteiro c.

Programação de Computadores

Universidade Federal do Espírito Santo - UFES

Resumo. Palavras-chave: implementações aritméticas; inverso modular; sistema de restos.

Continuidade de processos gaussianos

Modelagem Computacional. Parte 7 2

GRAFOS Aula 03 Representações de Grafos Max Pereira

Autovalores e Autovetores Determinante de. Motivando com Geometria Definição Calculando Diagonalização Teorema Espectral:

GAAL Exercícios 6: Umas soluções

Noções de Álgebra Linear

G3 de Álgebra Linear I

Universidade Federal do Rio Grande do Norte. Métodos Computacionais Marcelo Nogueira

Aula 1 Autovetores e Autovalores de Matrizes Aula 2 Autovetores e Autovalores de Matrizes Casos Especiais 17

Método Simplex dual. Marina Andretta ICMC-USP. 24 de outubro de 2016

Norma em matrizes e condicionamento de sistemas lineares

- identificar operadores ortogonais e unitários e conhecer as suas propriedades;

Álgebra Linear AL. Luiza Amalia Pinto Cantão. Depto. de Engenharia Ambiental Universidade Estadual Paulista UNESP

Método dos Mínimos Quadrados Lineares

Aula 10: Introdução a Vetores e Matrizes

UMA APLICAÇÃO: PESQUISA NA INTERNET ÁLGEBRA LINEAR, MEEC (AL-10) Aula teórica 35

Equações não lineares

x exp( t 2 )dt f(x) =

Preliminares. Profa. Sheila Morais de Almeida. agosto

ALGEBRA LINEAR 1 RESUMO E EXERCÍCIOS* P1

14 Estimador assintótico

Teoria dos Grafos. Valeriano A. de Oliveira, Socorro Rangel, Silvio A. de Araujo. Departamento de Matemática Aplicada

Universidade Federal de São Carlos UFSCar Departamento de Engenharia de Produção

EQUAÇÕES RELACIONAIS FUZZY E COMO RESOLVÊ-LAS

3 a Avaliação Parcial - Álgebra Linear

Física Computacional 18 matrizes: inversão, valores próprios e sol. da eq. De Schrödinger

Matemática III. Instituto Federal de Educação, Ciência e Tecnologia Rio Grande do Sul Campus Rio Grande

O estudo utilizando apenas este material não é suficiente para o entendimento do conteúdo. Recomendamos a leitura das referências no final deste

ÁLGEBRA LINEAR I - MAT0032

A = Utilizando ponto flutuante com 2 algarismos significativos, 2 = 0, x (0)

FORMA CANÔNICA DE JORDAN

ALGORITMO DE EUCLIDES

BANCO DE EXERCÍCIOS - 24 HORAS

Introdução aos Métodos Numéricos

Breve Introdução à Programação em Scilab 6.0

INTRODUÇÃO AOS MÉTODOS NUMÉRICOS. Solução de Sistemas Lineares

Medida do Tempo de Execução de um Programa. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR

Escalonamento. Sumário. 1 Pré-requisitos. 2 Sistema Linear e forma matricial. Sadao Massago a Pré-requisitos 1

Cálculo de tensões em treliças e o método QR para resolução de sistemas lineares

UFSM-CTISM. Comunicação de Dados Aula-17

Problema 5a by

Gabarito e Pauta de Correção ENQ

Introdução aos Métodos Numéricos

MAE GABARITO DA LISTA 2-04/10/2016

Sistemas Lineares e Matrizes

Problemas de Fluxo em Redes

Método de Newton modificado

Transcrição:

Primeiro Exercício programa: Como o Google ordena páginas MAP-2121 para EPUSP

1 Instruções gerais Os exercícios computacionais pedidos na disciplina Cálculo Numérico têm por objetivo fundamental familiarizar o aluno com problemas práticos que requeiram técnicas numéricas em sua solução Faça o seu programa até o dia 2 de novembro O programa pode ser escrito em uma linguagem de sua preferência Divirta-se! 2 Introdução Quando fazemos uma procura em um site de busca na internet, como o Google, o Yahoo, Altavista, desejamos obter as páginas que contém um determinado assunto ou palavra-chave, ordenadas em ordem decrescente de prioridade, apesar de não haver uma definição muito clara do que isso significa O aparecimento do Google no final dos anos 90 foi uma espécie de divisor de águas no que se refere a procura de assuntos na rede Isto porque, o Google parece sempre colocar os sites mais relevantes primeiro Com outros sites de procura, muitas vezes era necessário olhar páginas e mais páginas até que os resultados interessantes aparecessem O objetivo deste exercício-programa é entender como funciona um site de procura, em particular descreveremos o algoritmo utilizado pelo Google para ordenar as páginas em ordem decrescente de importância Um site de procura como o Google basicamente faz 3 coisas: i) varre a rede e localiza todas as páginas públicas; ii) indexa os dados de i) em um banco de dados de forma que uma procura por palavra-chave possa ser feita de uma maneira eficiente; iii) atribui uma importância a cada página do banco de dados de ii), de forma que quando um usuário faz uma procura e o subconjunto das páginas que contém um determinado termo é encontrado, elas podem ser listadas em ordem decrescente de importância; Como foi dito, descreveremos como iii) acima é feita e implementaremos um algoritmo para realizar tal atribuição de importâncias A idéia básica é atribuir pesos positivos às diversas páginas, sendo as com maior peso, as mais importantes Para isso, é preciso armazenar a rede como um grafo orientado, onde os vértices são as diversas páginas e as arestas orientadas (setas) representam um link de uma página para outra No exemplo 1, olhemos para a seguinte rede de 4 páginas A página 1 possui links para as páginas 2,3 e 4 A página 2 para 3 e 4, a página 3 para 1 e a página 4 para 1 e 3 A importância da página i, onde i {1, 2, 3, 4} no exemplo anterior, será representada por um número real positivo x i, o peso da página i A questão a se pensar agora é, como atribuir os x i s? Existem alguns fatores a se levar em conta, mais precisamente: 1 o fato de uma página ter muitos links apontando para ela a torna mais importante; 1

Figura 1: Exemplo 1 2 apesar do que foi dito acima, os links que apontam para uma certa página fixada P, em geral têm importâncias diferentes: um link vindo do Yahoo apontando diretamente para P tem muito mais importância que muitos links vindos de páginas de amigos de P ; em outras palavras, quando uma página que possui muitos links apontando pra ela aponta para P, isto deve pesar mais na importância de P que links vindos de páginas pouco apontadas; 3 por fim, um link vindo para P de uma página que aponta pra muitas outras páginas deve ter menor importância que um link vindo de páginas que apontam para poucas; A motivação para os fatores acima vem do seguinte: uma página P será importante, se um usuário clicando aleatoriamente nos links das páginas que ele encontra, tiver alta probabilidade de acessar P Vamos agora, através do exemplo 1, descrever como atribuir os pesos de acordo com os fatores qualitativos acima descritos x 1 = x 3 /1 + x 4 /2 x 2 = x 1 /3 x 3 = x 1 /3 + x 2 /2 + x 4 /2 x 4 = x 1 /3 + x 2 /2 Observe que definimos o peso de uma página como a soma dos pesos das páginas que apontam para ela, divididos pelo número de links que saem de cada página Obtemos um sistema linear que, em forma matricial, é dado por: x 1 x 2 x 3 x 4 = 0 0 1 1/2 1/3 0 0 0 1/3 1/2 0 1/2 1/3 1/2 0 0 x 1 x 2 x 3 x 4, (1) ou seja transformamos o problema de ranqueamento da importância das páginas na rede num problema de encontrar uma solução para (1) 2

A equação que queremos resolver tem a forma: Mx = x, (2) onde M é uma matriz n n e x R n É claro que tal problema só tem solução se 1 for um auto-valor da matriz M Assim, no nosso exemplo, o sistema (1) terá solução se a matriz (chamada matriz de ligação) A = 0 0 1 1/2 1/3 0 0 0 1/3 1/2 0 1/2 1/3 1/2 0 0 tiver 1 entre seus auto-valores Além disso, para que não haja ambiguidade na atribuição dos pesos relativos às diversas páginas, o auto-espaço associado ao auto-valor 1 deve ser unidimensional (todos auto-vetores associados ao auto-valor 1 devem ser múltiplos uns dos outros) Para a rede acima, observamos que o auto-espço associado a 1 é unidimensional, dado pelos múltiplos de (12 4 9 6) Iremos normalizar o auto-vetor de forma que a soma das suas entradas seja 1 Isto é sempre possível, é só tomarmos um múltiplo correto do vetor encontrado No exemplo, obtemos os pesos normalizados: x 1 x 2 x 3 x 4 = 0387 0129 0290 0194 Note que a página 3 apesar de muito apontada, não é a mais importante Isto porque ela aponta somente para a 1, que ainda é apontada pela 4, o que a torna a mais vista por um clicador de links aleatório Uma outra propriedade desejada é que os pesos sejam todos positivos Veremos adiante que a matriz de ligação pode ser construída de maneira a garantir que isto ocorra 3 Um pouco de matemática Inicialmente mostraremos que 1 sempre é auto-valor de uma matriz de ligação Para isso vamos supor que a rede não possui páginas que não apontam para lugar nenhum (essa hipótese simplificadora fará parte de todo o exercício programa), chamadas páginas mortas Uma tal página geraria uma coluna de zeros na matriz de ligação e por diversas razões, isto não é interessante Lema: Se A é uma matriz n n, tal que a soma dos elementos de cada coluna é igual a 1, então 1 é auto-valor de A 3

Prova: Esse resultado segue do seguinte A matriz transposta de A satisfaz: 1 1 1 1 A t =, 1 1 1 1 logo o vetor com todas as componentes iguais a 1 é auto-vetor de A t, correspondente ao auto-valor 1 Por outro lado, sendo I a matriz identidade, det (A λi) = det (A λi) t = det ( A t λi ), o que implica que A e A t têm os mesmos auto-valores Como já dissemos, dois fatos importantes nessa análise são os seguintes: o auto-espaço associado ao autovalor 1 deve ser unidimensional e deve ser possível escolher o auto-vetor com a soma das suas entradas igual a 1, sendo todas positivas Para uma rede qualquer isso nem sempre é verdade (ao menos a parte do auto-espaço unidimensional) Por exemplo, se a rede não for conexa, como no exemplo 2, onde a página 1 aponta para a 2, a 2 aponta para 1, a 3 aponta para a 4, a 4 aponta para 3 e a 5 aponta para 3 e 4 Neste caso o auto-espaço associado ao auto-valor 1 da matriz de ligação tem dimensão 2 (verifique!) Isto tem sentido prático, pois não é tão simples comparar as importâncias de páginas em redes separadas Figura 2: Exemplo 2 Vamos agora enunciar um teorema que será fundamental para que obtenhamos a distribuição de pesos para as páginas conforme desejado Teorema (Perron-Frobenius, ver [2]) Seja A uma matriz n n com todos os elementos positivos (a ij > 0, i, j, [1,, n]) e colunas com soma 1 ( n i=1 a ij = 1, j) Então 1 é o auto-valor de maior módulo de A, seu 4

auto-espaço é unidimensional e o auto-vetor normalizado só tem entradas estritamente positivas Uma matriz de ligação A, em geral, não satisfaz as hipóteses do teorema de Perron-Frobenius, pois pode ter elementos nulos Substituímos então A por M = (1 m)a + ms, onde S é matriz n n com todas as entradas iguais a 1/n e 0 < m < 1 Esta é a estratégia usada pelo Google, que adota m = 015 e esse será o valor usado no exercício programa Essa correção feita na matriz A torna todas as entradas de M estritamente positivas e a soma dos elementos em cada coluna continua sendo igual a 1 Uma observação importante é que isso ocorre para todo 0 < m < 1 Assim, uma perturbação pequena de A, tem todas as entradas maiores que zero, com a mesma propriedade de soma 1 ao longo das colunas, satisfazendo as hipóteses do teorema de Perron-Frobenius Assim, dada uma rede sem páginas mortas, o processo de ranquear as páginas consiste em obter a matriz A, depois calcular M e a partir de M, achar x O que veremos a seguir é uma forma muito rápida (computacionalmente) de achar a distribuição de pesos x 4 Cálculo do vetor x Aqui apresentaremos um resultado que naturalmente induz uma forma computacionalmente boa para obtermos o auto-vetor x Antes, necessitamos de algumas definições: 1) dado um vetor v com n componentes, definimos a seguinte norma: v 1 = n v i 2) Para uma matriz M n n com todas suas entradas positivas, com soma dos elementos em cada coluna igual a 1, definimos c = max 1 j n 1 2 min i=1 1 i n M ij É fácil ver que 0 < c < 1 Então temos o seguinte algoritmo para o cálculo do vetor de pesos x Tome um vetor normalizado x 0 ( x 0 1 = 1) e todo positivo (por exemplo, x 0 = (1/n, 1/n,, 1/n)), e calcule a sequência x k = Mx k 1 = M k x 0 Pode-se mostrar que esta sequência de vetores obedece propriedades similares àquelas vistas para o método das aproximações sucessivas (ver [1] que é a referência na qual este EP foi baseado) Em particular, temos que a sequência de vetores converge para x, obedecendo a relação x M k x 0 1 c k x x 0 1 0 5

e que x x k 1 c 1 c x k x k 1 1 A príncipio pode parecer que calcular M n x 0 será computacionalmente muito trabalhoso (pela dimensão de M ser muito grande), mas mostremos que não é assim Note que se y é um vetor com todas entradas positivas e y 1 = 1, então onde z = My = (1 m)ay + ms, s = 1/n 1/n 1/n Mais ainda, z tem todas as entradas positivas e z 1 = 1 Assim, de fato o que é preciso fazer repetidas vezes, é o produto de A com um vetor e isto é muito mais simples, pois em geral A será esparsa, terá poucas entradas não-nulas A maneira como isto deve ser feito para economizar tempo e memória da máquina, será explicada na próxima sessão 5 Implementação Tarefa 1 Você deve escrever um programa para calcular o ranking de importância das páginas da rede mostrada na figura 3, com 8 páginas: Figura 3: Tarefa 1 Para tanto, você deve escolher o vetor x 0 = ( 1 8, 1 8,, 1 8 ), e calcular os vetores x l+1 = (1 m)ax l + mx 0, onde A é a matriz de ligação da rede Você deve parar a sua iteração quando x l x l+1 1 < 10 5 6

A sua saída deve ser um ranking das páginas desta rede e a importância de cada uma (dada pelos pesos calculados) Tarefa 2 Uma rede tem uma arquitetura do tipo Cacique-tribo se podemos dividir as páginas em k grupos (ou tribos), onde o grupo i possuiu a i páginas As páginas de um grupo apontam para todas as outras páginas do mesmo grupo (e logo são apontadas por todas as páginas da tribo) mas apenas uma delas, o cacique do grupo, aponta para páginas fora deste grupo ou é apontada por páginas de fora da tribo Os caciques de cada um dos grupos apontam também para todos os outros caciques Um exemplo de rede com esta arquitetura é dado na figura 4, onde temos 3 grupos com 2, 2 e 3 páginas respectivamente As páginas 1, 3, e 5 são os caciques dos grupos Figura 4: Tarefa 2 Podemos ver que, numa rede com esta arquitetura, cada página do grupo i que não é o cacique aponta para a i 1 páginas, enquanto que o cacique do grupo i aponta para a i 1 + k 1 páginas O total T de links (ou de entradas não nulas da matriz de transição A) é de T = k (a i 1) 2 + i=1 k (a i 1 + k 1), onde a primeira somatória descreve o total de páginas apontadas pelos índios, e a segunda descreve o total apontado pelos caciques Você deve escrever um programa para calcular o ranking de importância das páginas de uma rede com 20 grupos com esta arquitetura, onde o primeiro grupo tem 2 páginas (a página 1, cacique do grupo, e a página 2, índia), o segundo grupo tem 3 páginas (a página 3, cacique, e os índios 4 e 5), o terceiro grupo tem 4 páginas e assim por diante, até o vigésimo grupo que possui 21 páginas ( a página 210 é o cacique, e os índios são as páginas 211 a 230) O total de páginas nesta rede é n = 230 O cacique do i-ésimo grupo é a página de número i(i+1) 2 7 i=1

Na sua implementação, você deverá levar em conta que a matriz de ligação é esparsa, isto é, a maior parte das entradas são nulas Por exemplo, é fácil ver que as entradas A 2,j são nulas, se j > 2 Por isso, vocês não devem guardar todas as (230) 2 = 52900 entradas da matriz, e apenas guardar as entradas não nulas, T = ( 20(21)(41) 6 ) + (210 + 380) = 3460 Numa rede de dimensões maiores, o ganho na memória a ser utilizada seria ainda mais expressivo Uma maneira simples de fazer isto é armazenar 3 vetores, V, C e L, com T elementos cada, contendo os valores das entradas não nulas, bem como as colunas e as linhas das mesmas Assim, teríamos que V [s] = a L[s],C[s] Desta forma, o cálculo de y = Ax pode ser feito inicializando o vetor y como vetor nulo e calculando, para 1 s T, y L[s] = y L[s] + V [s]x C[s] Você deve iniciar a sua iteração com o vetor x 0 = ( 1 n, 1 n,, 1 n ) e parar o cálculo quando x l x l+1 1 < 10 5 Finalmente, você deverá exibir uma lista com as páginas ordenadas pelo seu ranking, bem como a importância de cada uma Como todas as páginas do tipo índio de um mesmo grupo devem ter a mesma importância (veja a simetria do problema), basta apresentar a lista com um índio por grupo Uma parte importante do trabalho será desenvolver uma rotina para calcular os vetores V,C e L para a matriz A Referências [1] ver o artigo The 25,000,000,000 eigenvector: the linear algebra behind Google, que pode ser encontrado na página da disciplina [2] ver http://wwwmatufmgbr/comed/2005/e2005/perron-frobeniuspdf, página 3 em diante 8