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

Postagens mais visitadas deste blog

Construindo um elevador com o Arduino

Computing heater: uso de computadores para aquecimento sustentável de salas e escritórios