Algoritmo de Brandes

Fonte: testwiki
Saltar para a navegação Saltar para a pesquisa

Em computação, o algoritmo de Brandes é um algoritmo utilizado para cálcular a intermediação de todos os vértices de um grafo sem pesos. Sua complexidade é O(|V||E|) em tempo e O(|V|+|E|) em espaço, aonde V é o conjunto de vértices e E o conjunto de arestas de um grafo G.[1] Comparado a algoritmos anteriores que rodavam em tempo O(|V|3) ele permite o processamento de redes muito mais complexas do que antes possível.

Algoritmo

Cb0,vV;
𝐟𝐨𝐫 sV 𝐝𝐨
    Spilha vazia;
    P[w]lista vazia,wV;
    σ[t]0,tV;σ[s]1;
    d[t]1,tV;d[s]0;
    Qfila vazia;
    enfilerar sQ;
    𝐰𝐡𝐢𝐥𝐞 Q nao for vazio 𝐝𝐨
        desenfilerar vQ;
        push vS;
        𝐟𝐨𝐫𝐞𝐚𝐜𝐡 vizinho w de v 𝐝𝐨
            // w encontrado pela primeira vez?
            𝐢𝐟 d[w]<0 𝐭𝐡𝐞𝐧
                enfilerar wQ;
                d[w]d[v]+1;
            𝐞𝐧𝐝
            // menor caminho ate w por v?
            𝐢𝐟 d[w]=d[v]+1 𝐭𝐡𝐞𝐧
                σ[w]σ[w]+σ[v];
                adicionarvP[w];
            𝐞𝐧𝐝
        𝐞𝐧𝐝
    𝐞𝐧𝐝
    δ[v]0,vV;
    // S retorna os vertices em ordem naocrescente da distancia a partir de s
    𝐰𝐡𝐢𝐥𝐞 S nao for vazio 𝐝𝐨
        pop wS;
        𝐟𝐨𝐫 vP[w] 𝐝𝐨 δ[v]δ[v]+σ[v]σ[w](1+δ[w]);
        𝐢𝐟 ws 𝐭𝐡𝐞𝐧 Cb[w]Cb[w]+δ[w];
    𝐞𝐧𝐝
𝐞𝐧𝐝

Predefinição:Referências

Ver também

Centralidade Intermediação