Impulsionar Graph Library: Existe um algoritmo puro incorporado BGL para detecção de comunidades?

StackOverflow https://stackoverflow.com/questions/272414

  •  07-07-2019
  •  | 
  •  

Pergunta

Qualquer pessoa lá fora, usando BGL para grandes servidores de produção?

  • Quantas nó que sua rede consiste?
  • Como você lida com comunidade detecção
  • O BGL tem nenhum formas legais para detectar comunidades?
  • Às vezes duas comunidades podem ser ligados entre si por uma ou duas bordas, mas estas margens não são confiáveis ??e podem desaparecer. Às vezes, não existem arestas a todos.

Alguém poderia falar brevemente sobre como resolver este problema. Por favor, abra a minha mente e me inspirar.

Até agora eu consegui descobrir se dois nós estão em uma ilha (em uma comunidade) de uma forma para que caro, mas agora eu preciso trabalhar para fora que dois nós em ilhas separadas estão mais próximos uns dos outros. Nós só pode fazer uso mínimo de dados geográficos não confiável.

Se nós figurativamente compará-lo a um continente e uma ilha e levá-la fora do contexto distância social. Eu quero trabalhar para fora que dois pedaços de terra são os mais próximos em conjunto em um corpo de água.

Foi útil?

Solução

Eu usei o BGL para gráficos com milhões de nós, mas o tamanho do gráfico que você pode usar depende do que algoritmo que você está tentando executar. Você pode rapidamente calcular distâncias entre os nós. Existem 4 algoritmos de menor caminho que são mais aplicáveis ??dependendo de seus dados: (pares simples de pontos, para todos os pares de pontos, escasso e gráficos densas, ...)

.

Como para detecção de comunidades, não existem quaisquer algoritmos embutidos na BGL especificamente para isso (mas talvez você pode contribuir um quando você terminar com o seu projeto). Existem alguns algoritmos que podem ser úteis na construção de um algoritmo de detecção de comunidades. algoritmos O de fluxo máximo / mínimo de corte são tipicamente usados ??na detecção comunidade (se houver uma grande quantidade de fluxo possível entre dois nós, em seguida, eles são susceptíveis de ser na mesma comunidade, se não houver muita fluxo, em seguida, o min-corte é provável que representam estradas entre comunidades ). Há também heurísticas para ordenar os nós do grafo para reduzir largura de banda . Nodos que compõem "comunidades" são susceptíveis de ser perto uns dos outros em tal ordenação.

Outras dicas

Tanto quanto eu sei que BGL não tem nenhum algoritmos especificamente para detecção de comunidades.

Por "ilha" você quer dizer um subgrafo desconectado?

Além disso, os gráficos não têm qualquer noção de 'distância'.

Esta 'distância social' é algo que você vai ter de definir. Depois de ter feito que uma grande parte do trabalho é feito.

Existem vários métodos listados na página ligado a você, a maioria das pessoas só exigem que você definir algo como uma 'distância' métrica, e em seguida, conecte suas definições no algoritmo.

@ David Nehme

Gráficos sem ponta-pesos são apenas cerca de conexão, eles não têm noção de distância. Se você quiser falar sobre uma rede, em seguida, você pode falar sobre a distância. Mas um gráfico sem ponta-pesos não tem qualquer distância, a menos que queira assumir uma vantagem de peso implícita de 1 para todas as bordas. Mas isso é realmente apenas transformando o gráfico em uma rede.

Além disso, ele está falando sobre a distância entre dois gráficos desconectados. Para modelar isso, você tem que introduzir um conceito externo para a distância entre nós, separar a partir da borda distância.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top