Aceleração da Execução de Algoritmos em Grafos - LCAD

Propaganda
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
Download