Algoritmo de PageRank no MatLab
O algoritmo PageRank classifica páginas web a partir do princípio de ligações entre elas. Se diversas páginas apontam para uma página X, por exemplo, a partir do algoritmo um número PR é atribuído a ela tomando em conta essa relevância. Este número PR é maior que zero e menor que 1, o que influencia e facilita a classificação que é feita em ordem decrescente do maior para o menor, sendo que a soma do número PR de todas as páginas encontradas equivale a 1.
O algoritmo PageRank adota o seguinte método:
Onde:
- PR(p0) = PageRank da página p0
- PR(pi) = PageRank da página pi que aponta para a página p0
- c(pi) = é o número de ligações de saída (páginas que p0 aponta)
- n = número de páginas
- p = fator de amortecimento (0 < p < 1) - o Google usa 0.85
A seguir encontrasse o código de MATLAB junto com seus comentários do ranqueamento de 5 páginas. Como retorno a sua execução, um grafo ilustrando as conexões é criado, assim como uma tabela mostrando os valores obtidos.
%%%%% Algoritmo de PageRank no MATLAB %%%%%
%%% marco / 2019 %%%
% Calculo Numerico e Computacional %
% @iojoaomarcos %
%Etapa 0: limpando o prompt do MATLAB
clc;
%1a etapa: definir s ---> t
% Definindo vertices (paginas) de saida
s = {'joro.com' 'joro.com' 'joro.com' 'chameleon.net' 'chameleon.net' ...
'fridge.org' 'iojoaomarcos.blogspot.com' 'iojoaomarcos.blogspot.com' ...
'iojoaomarcos.blogspot.com' 'math.io'};
% Definindo vertices (paginas) de entrada
t = {'chameleon.net' 'fridge.org' 'iojoaomarcos.blogspot.com'...
'iojoaomarcos.blogspot.com' 'joro.com' ...
'chameleon.net' 'fridge.org' 'joro.com' 'math.io' 'joro.com'};
% 2a etapa: Criar o grafo e formata-lo
% O grafo eh definido pela variavel 'G'
G = digraph(s,t);
% Nomeando rotulos
labels = {'joro.com/3' 'joro.com/3' 'joro.com/3' 'chameleon.net/2' ...
'chameleon.net/2' 'fridge.org' 'iojoaomarcos.blogspot.com/3' ...
'iojoaomarcos.blogspot.com/3' 'iojoaomarcos.blogspot.com/3' ...
'math.io'};
% Plotando o grafo e associando a 'p'
p = plot(G,'Layout','layered','EdgeLabel',labels);
% Formatacao do grafo
highlight(p,[1 1 1],[2 3 4],'EdgeColor','g')
highlight(p,[2 2],[1 4],'EdgeColor','r')
highlight(p,3,2,'EdgeColor','m')
title('Grafo do PageRank')
% Define importancia dos nos pelo metodo 'pagerank' com
% probabilidade de escolha de no sucessor de 0.85
pr = centrality(G,'pagerank','FollowProbability',0.85);
% Salvando em variaveis os predecessores e sucessores
ia = join(predecessors(G, 'joro.com'));
ib = join(predecessors(G, 'chameleon.net'));
ic = join(predecessors(G, 'fridge.org'));
id = join(predecessors(G, 'iojoaomarcos.blogspot.com'));
ie = join(predecessors(G, 'math.io'));
predecessores = [ia;ib;ic;id;ie];
oa = join(successors(G, 'joro.com'));
ob = join(successors(G, 'chameleon.net'));
oc = join(successors(G, 'fridge.org'));
od = join(successors(G, 'iojoaomarcos.blogspot.com'));
oe = join(successors(G, 'math.io'));
sucessores = [oa;ob;oc;od;oe];
% Define Colunas e imprime na tela a tabela do PageRank
G.Nodes.PageRank = pr;
G.Nodes.Entradas = predecessores;
G.Nodes.Saidas = sucessores;
G.Nodes
%%% END %%%

Comentários
Postar um comentário