Universidade Federal do Espírito Santo - UFES Departamento de Informática Programa de Pós-Graduação em Informática Projeto e Análise de algoritmos - 2010/1 Professora: Claudine Badue Alunos: Rômulo Ferreira Douro e Walace Rocha Relatório de Seminário Aceleração da Execução de Algoritmos em Grafos Web Compactados Considerações iniciais Este relatório se refere ao seminário apresentado como requisito para aprovação na disciplina de Projeto e Análise de Algoritmos. O mesmo aborda o tema tratado por Karande, Chellapilla e Andersen (2009) onde é apresentado um estudo sobre as expectativas e efeitos práticos ocasionados pela execução de algoritmos clássicos de aplicações para classificação de sites da internet em Grafos Web Compactados. Introdução Segundo Donato et al. (2007) um termo comumente utilizado atualmente é o chamado Webgraph o qual indica o grafo formado pela estrutura da web a qual atribui as páginas estáticas da Internet como sendo os vértices de um grafo e os links como sendo arestas direcionadas para outros vértices. Essa representação demanda muito espaço de armazenamento devido à grande quantidade de páginas existentes na web. Muitos algoritmos são usados por mecanismos de busca para classificarem as páginas Web a fim de que, ao passo em que um usuário requisita uma informação essa possa ser dada em tempo aceitável mas, também, de forma a se garantir a boa qualidade da informação. Segundo dados do Laboratory for Web Algorithmics1 da Universita Degli Studi Di Milano, a Web no ano de 2007 foi modelada como um grafo contendo 133633040 vértices e 5507679822 arestas! Não obstante, o WorldWideWebSize.com2 em 08/06/2010 mostra o resultado de 24,32 bilhões de páginas indexadas pelos sistemas de busca como Google e Yahoo. Daí a importancia de se buscar métodos eficientes que possam acelerar os procedimentos atuais de classificação de sites na Web. Muitos esforços têm sido feitos para compactar esses grafos, exigindo menos espaço de armazenamento, mas contendo as mesmas informações do grafo original. Uma abordagem utilizada é a compressão por nós virtuais (virtual node compression). Neste artigo vamos apresentar alguns algoritmos para pesquisa na web e mostrar que a execução deles fica mais rápida em um grafo compactado. Em geral o desempenho melhora quase na mesma proporção da compactação obtida no grafo. Dessa forma há um ganho tanto de armazenamento quanto de desempenho. Algoritmos para Web Foram tratados alguns dos algoritmos mais usados para classificação de páginas Web. Tal classificação se faz necessária, principalmente, devido ao elevado número de informações contidas na World Wide Web, o que gera um grande esforço para alcançar de forma eficiente a recuperação de informações nesse meio. 1 http://law.dsi.unimi.it/ 2 http://www.worldwidewebsize.com/ 1 PageRank O algoritmo PageRank de Page et al. (1999), foi desenvolvido visando a classificação das páginas Web em um nível de importância, classificando-as de modo que pudessem ser usadas pelos sistemas de pesquisa da Internet e auxiliassem os usuários desses sistemas dada a tamanha heterogeneidade encontrada na rede mundial de computadores. Tal algoritmo está fundamentado na exploração da estrutura de links para se obter o nível de ”qualidade” de uma página. Ese nível de qualidade está baseado na propagação do ranking de uma página, assim, uma página possui uma rank alto se a soma dos ranks das páginas que a apontam é alta. No PageRank a classificação de uma página é transmitida uniformemente entre seus links. Sendo u uma página web, temos F u o conjunto de páginas apontadas por u e B u o conjunto de páginas que apontam para u. Define-se Nu = |F u | o número de links existentes na página u e c um fator usado para normalização - a fim de fazer com que a classificação total de todas as páginas web seja constante. Assim, uma versão simplificada do PageRank é dada por R (u) = c X R (v) v∈B u N v Contudo, ocorre um problema quando páginas web possuem links que apontam para outras que, de fato, não existem. Dessa forma tais páginas acumulam rank e não o distribuem. Para corrigir esse problema de sumidouros, foi introduzida no esquema uma fonte. Daí tem-se a definição de que: Sendo E (u) um vetor que incide sobre as páginas (fonte de classificação) e corresponde a um valor proveniente da fonte geradora de rank, então o P ag eRank de uma página é um valor R 0 tal que satisfaça a R 0 (u) = c X R 0 (v) + cE (u) v∈B u N v Em geral, a norma ||E ||1 = 0.15 é utilizada e é uma probabilidade empregada no fator de simulação de interatividade do usuário para a determinação do rank fazendo com que, durante sua execução uma página seja selecionada ao acaso e em seguida um procedimento é repetido até a convergência do algoritmo fazendo com que com a probabilidade ||E ||1 uma página seja visitada e com probabilidade 1−||E ||1 seja visitada uma outra página, distribuindo assim o PageRank. A Figura 1 traz um esboço de como o PageRank se propaga através da análise da estrutura de links. 30 Página 1 (Rank = 90) Link 1 <página 2> Link 2 <página 3> Link 3 <página 4> Página 2 (Rank = 30) Link 1 <página 3> 30 30 15 30 75 Página 3 (Rank = 75) Link 1 <página 1> Página 4 (Rank = 30) Link 1 <página 1> Link 2 <página 3> 15 Figura 1: Esquema de cálculo do PageRank SALSA SALSA, segundo Lempel e Moran (2001), é um procedimento estocástico (aleatório) para análise da estrutura de links na Web - classificação de páginas. Kleinberg (1999) introduz o conceito entre dois tipos distintos de páginas Web: hubs e autoridades. Tal conceito é empregado no algoritmo HITS. Para um hub sua qualidade é determinada pela qualidade das autoridades que o apontam. Mais especificamente, o seu peso é dado proporcionalmente à soma dos pesos das autoridades que o apontam. De forma análoga, para 2 o caso de uma página de autoridade, seu peso é proporcional à soma dos pesos dos hubs que a apontam. A Figura 2 mostra um esquema sintetizando o conjunto de páginas que formam hubs e outras que são autoridades. Aut. 1 Aut. 2 Aut. 3 Hub 1 Hub 2 Hub 3 Hub 4 Figura 2: Conjuntos de hubs e autoridades Em sua definição, SALSA utiliza um grafo bipartido não direcionado G̃ = (Vh ,Va , E ), conforme a Figura 3, para representar a coleção de páginas e sua estrutura de links. Pg1 Pg2 Pg3 1h 2a 2h 3a 3h 4a Pg4 Pg5 5a 4h (a) C (b) G̃ Figura 3: Transformando o conjunto C no grafo bipartido G̃ Compressão de grafos A compactação de grafos Web é um tema bastante discutido atualmente, dado o fato de estar relacionado a aplicabilidade na manipulação de dados, de grande ordem, em memória principal. Trabalhos relacionados Alguns trabalhos da área são os de Brisaboa, Ladra e Navarro (2009), onde é apresentada uma técnica de compactação de grafos web baseada no uso de uma estrutura de árvore que tira proveito da existência de grandes áreas vazias presentes na matriz de adjacência do webgraph. Claude e Navarro (2007) citam uma grande gama de trabalhos correlacionados a técnicas de compactação de grafos. Naquele trabalho o método implementado é comparado ao proposto por Boldi e Vigna citados por Claude e Navarro (2007), o qual é apresentado como sendo um método muito eficiente, contudo, perde em eficiencia quanto a navegação pelo grafo compactado. A técnica aplicada é aplicada visando aproveitar as regularidades 3 dos grafos apresentados e é chamada de Re-Pair, de Larsson e Moffat citados por Claude e Navarro (2007), onde é originalmente aplicada a compactação de de listas de adjacência. Método do nó virtual A compressão dos webgraphs utilizada no trabalho de Karande, Chellapilla e Andersen (2009) é a definida em Buehrer e Chellapilla (2008) que trata da identificação de cliques bipartidos em grafos direcionados e, através da inserção de um nó virtual, o transforma em uma ”estrela” diminuindo, assim, a quantidade de arcos do grafo original. A Figura 4 mostra um exemplo intuitivo de compressão de grafo baseado nessa técnica. Este esquema de compressão faz uma transformação no grafo substituindo um clique bipartido direcionado por um nó virtual. Def. Biclique: Um clique bipartido direcionado (ou biclique) < S, T > é um par de conjuntos disjuntos de vértices S e T tal que para todo u ∈ S e v ∈ T existe um arco direcionado de u para v. ¡ ¢ Dessa forma, dado um biclique < S, T >, é formado um novo grafo G 0 = V 0 , E 0 modificando G da seguinte forma: • Um nó virtual w é adicionado ao conjunto de vértices; • Todas as arestas do biclique< S, T > são removidas do grafo; • Para cada vértice u ∈ S é adicionada uma aresta uw em E ’ e para cada vértice v ∈ T é adicionada uma aresta w v. Um exemplo desta transformação pode ser vista na Figura 4. Com esta transformação é adicionado ao grafo um vértice (virtual node) enquanto o número de arestas diminui. São retiradas |S|×|T | arestas e acrescentadas |S|+|T | arestas. Esse procedimento, segundo Motwani ¡e Feder, apud. Karande, Chellapilla e Andersen (2009), comprime um grafo ¡ ¢ ¢ com Ω n 2 arestas em um grafo com O n 2 / log n arestas e mais, o trabalho de Buehrer e Chellapilla (2008) demonstra que, com a utilização de um mecanismo baseado em mineração de dados para identificar cliques bipartidos direcionados, seu algoritmo consegue atingir taxas de compressão variando entre 4x a 8x, sendo comparável ao estado da arte dos métodos de compressão baseados em gap coding. A técnica de identificação de cliques bipartidos ¡ ¢ executa em tempo O |E |l og |V | . 1 2 1 2 3 4 3 4 v 5 6 5 6 7 8 7 8 (a) Grafo bipartido (b) Inclusão do nó virtual Figura 4: Compressão de grafo - transformação bipartite clique-star O método implementado, chamado de Virtual Node Miner segue a premissa de reduzir a quantidade de links presentes no grafo com a adição de nós virtuais, como na Figura 4, onde é introduzido um nó virtual e são reduzidas de 16 para 8 arestas. 4 O algoritmo A construção do algoritmo parte do princípio de um estudo anterior (pré-processamento) que visa identificar ligações comuns entre vários vértices. Essa identificação é apoiada por um método de clusterização que visa reconhecer padrões em grupos de vértices dentro¡de cada¢ cluster e substituir esses padrões por nós virtuais. O descobrimento desses padrões é processado em O E log E . No processo de clusterização é usada uma amostragem probabilística do grafo onde se verifica a similaridade de vértices em função da entrada e saída de links dos mesmos. Essa similaridade é obtida num processo de obtenção de funções k min-wise hash, de acordo com Broder et al. citados por Buehrer e Chellapilla (2008), onde é gerada uma matriz, ordenada lexicograficamente, para que, em cada vértice no cluster, seja criada uma lista de adjacência com similaridade entre os vértices adjacentes (Tabela 1). ID do vértice Lista de adjacência 234 12 155 13 1,2,3,15,23 1,2,3,5,45 1,2,10 1,2,5,17 Tabela 1: Exemplo de lista de vértices passada para o processo de mineração de padrões Após a fase de clusterização o algoritmo inicia o processo de mineração em busca de padrões. Nessa fase se identifica subconjuntos comuns de links para os vértices dados como entrada. Para tanto faz-se uso de uma fórmula que calcula a performance de compressão para um padrão P , onde ¡ ¢ C ompr ess ão (P ) = P. f r equ ênci a − 1 (P.t amanho − 1) − 1 (1) O número de listas de adjacência é denotado como a frequência do padrão e o tamanho do padrão é o número de links contidos nele. O algoritmo procede, tomando como exemplo a Tabela 1, onde temos um total de 4 nós. Após removermos os vértices adjacentes que aparecem uma única vez, a árvore de prefixos é construída como na Figura 5. 1 <12,13,155,234> 2 <12,13,155,234> 3 <12,234> 5 <12,13> Figura 5: Árvore de prefixos baseada nos dados da Tabela 1 É realizado um caminhamento na árvore, e em cada folha com uma lista de vértices de comprimento maior que um, um objeto PotentialNode é gerado. Este objeto representa o potencial para um possível nó virtual. Ele contém um ponteiro para o nó associado na árvore de prefixos e o tamanho do padrão. Tal nó é então marcado como processado. Sempre que um nó pai possui uma grande lista de adjacência e este não foi marcado, ele é adicionado à lista de pontenciais nós virtuais. Depois de terminar o caminhamento a lista de ponteciais nós é ordenada de acordo com a equação 1 então a lista é processada para a determinação dos nós virtuais. Depois que cada PotentialNode é processado, os vértices associados no seu caminho de subida na árvore são excluidos. Os nós em potencial para o exemplo dado são mostrados na Tabela 2, onde temos o tamanho do padrão como a profundidade na árvore e a frequência como a quantidade de nós na lista de vértices. Tamanho Frequência Lista de vértices Fator 2 4 3 4 2 2 12,13,155,234 12,13 12,234 (2-1)(4-1)-1 = 2 (4-1)(2-1)-1 = 2 (3-1)(2-1)-1 = 1 Tabela 2: Lista de potenciais nós virtuais 5 ¡ ¢ A complexidade do algoritmo é tal que, o processo de clusterização é O kE log E ¡, onde k¢ é o número escolhido para a quantidade de hashes, e o processo de mineração de padrões é da ordem O E log E . Aplicação em algoritmos para Web Karande, Chellapilla e Andersen (2009) basearam seus testes usando inicialemente a multiplicação de uma matriz por um vetor, dado que a respresentação dos grafos pode ser expressa na forma de uma matriz de adjacência e muitos algoritmos para grafos Web são trabalhados em forma de multiplicaçao da martiz de adjacência. Nesse quesito foi mostrado que o tempo gasto para efetuar a multiplicação de uma matriz é proporcional à taxa de compressão no grafo original. Dessa forma a multiplicação entre¡ um vetor e a matriz, E T x, é conseguida ¡ conseguida ¢ ¢ 0 0 0 0 0 em O |E | + |V | onde se tem a representação do grafo compactado G = E ,V . Foi mostrado no trabalho de Karande, Chellapilla e Andersen (2009) um método alternativo para o cálculo de vetores estacionários aplicados ao PageRank e ao SALSA em um grafo comprimido. Foi mostrado que o vetor estacionário para o grafo original pode ser calculado sobre um vetor estacionário de uma cadeia de Markov3 executado no grafo comprimido sendo, em seguida, esse vetor redimensionado permitindo o cálculo tanto do PageRank quanto do SALSA para o grafo original diretamente no grafo comprimido. Tanto o PageRank quanto para o SALSA foram computados usando cadeias de Markov e também através do uso do método de multiplicação black-box4 . O uso do método black-box resulta, em geral, em uma melhor aceleração devido ao fato de não variarem no número de iterações quando comparados a cadeia de Markov apenas ganhando em desempenho em cada iteração, entretanto, para o caso de uma implementação em paralelo, o uso de cadeias de Markov pode ser preferível dada as características do método. Resultados obtidos Para os testes computacionais no trabalho de Karande, Chellapilla e Andersen (2009) foram escolhidas versões implementadas para PageRank e SALSA aplicadas a grafos compactados e não-compactados. Foi utilizada uma máquina com 16 GB de memória RAM e um processador quad-core Intel Xeon de 3.0 GHz onde somente um dos núcleos disponíveis do processador foi utilizado. Os programas usaram acesso seqüencial de arquivo, onde os grafos são armazenados no disco apenas no formato de lista de adjacência. Foram usadas duas massas de dados, públicas, denominadas de eu-2005 e uk-2005 disponibilizadas pelo Laboratory for Web Algorithmics. Tanto o método black-box quanto o da cadeia de Markov mostram uma melhoria no tempo por iteração sobre as versões dos algoritmos nos grafos descompactados. No entanto, o método de cadeia de Markov requer mais iterações para convergir com a mesma precisão, o que diminui o desempenho da execução, devido a intrudução de mais arestas no gráfo durante a compressão. A descrição das massas de dados (grafos) utilizadas naquele trabalho segue como descrito na Tabela 3 bem como a taxa de compressão obtida a qual se refere à redução do número de arestas no grafo original para o grafo comprimido. Descomprimido Descrição eu-2005 uk-2005 Vértices 862664 39459925 Comprimido Arestas 19235140 936364282 Vértices 1196536 47482140 Arestas 4429375 151456024 Taxa 4,34 6,18 Tabela 3: Massas de dados para testes As figuras 6 e 7 mostram as taxas de aceleração dos algoritmos quando executados sobre os grafos compactados em detrimento do tempo de execução em grafos não comprimidos. 3 http://www.dartmouth.edu/∼chance/teaching_aids/books_articles/probability_book/Chapter11.pdf 4 http://www4.ncsu.edu/∼kaltofen/bibliography/90/KaTr90.pdf 6 Figura 6: Taxa de aceleração - PageRank Devido a nuances características do algoritmo black-box, para o procedimento de SALSA o método de cadeias de Markov obtém uma pequena vantagem se comparado com a execução frente ao PageRank. Figura 7: Taxa de aceleração - SALSA Pode-se observar que a aceleração não corresponde em exatidão com a taxa de redução de arestas. Isso se dá pelo fato de que os algoritmos executam operações de manutenção em suas execuções, como os procedimentos de reinicialização de variáveis, por exemplo. Tais procedimentos exigem tempo proporcional ao número de nós daí, como no grafo comprimido aumenta-se o número de nós, tais operações exigem um acréscimo de tempo de execução. Conclusões do grupo O método de compactação de grafos apresentado, apesar de fácil visualização, ao se proceder a leitura do material referente, depara-se com uma certa dificuldade de se compreender as técnicas empregadas em sua implementação dada a complexidade de interpretação dos detalhes referentes a mesma. A motivação pela qual se dá a compactação de Webgraphs é notória tendo em vista a grande importância da Internet e seus mecanismos de busca presentes nos dias atuais. Novos meios de aceleração de algoritmos aplicados a Webgraphs ou métodos de compactação destes que atenuem o tempo gasto para se proceder a execução de algoritmos comumente conhecidos são, de fato, um bom ramo de pesquisa para estudantes, profissionais e entusiastas da grande área de pesquisa para Web. 7 Referências BRISABOA, N. R.; LADRA, S.; NAVARRO, G. k2 -trees for compact web graph representation. SPIRE 2009,LNCS 5721, p. 18 – 30, 2009. BUEHRER, G.; CHELLAPILLA, K. A scalable pattern mining approach to web graph compression with communities. WSDM, 2008. CLAUDE, F.; NAVARRO, G. A fast and compact web graph representation. SPIRE 2007,LNCS 4726, p. 118 – 129, 2007. DONATO, D. et al. The web as a graph: How far we are. ACM Transactions on Internet Technology (TOIT), 2007. KARANDE, C.; CHELLAPILLA, K.; ANDERSEN, R. Speeding up algorithms on compressed web graphs. WSDM, 2009. KLEINBERG, J. M. Authoritative sources in a hyperlinked environment. Journal of the ACM, v. 46, n. 5, p. 604 – 632, set. 1999. LEMPEL, R.; MORAN, S. Salsa: The stocastic approach for link-structure analysis. ACM Transactions on Information Systems, v. 19, n. 2, p. 131 – 160, abr. 2001. PAGE, L. et al. The PageRank Citation Ranking: Bringing Order to the Web. [S.l.], 1999. Disponível em: <http://ilpubs.stanford.edu:8090/422/1/1999-66.pdf>. Acesso em: 8 jun. 2010. 8