/cluster-grafos

Projeto prático em C++ para agrupamento de Grafos desenvolvido durante o Mestrado em Modelagem Computacional

Primary LanguageC++

Cluster Grafos

  • Projeto prático em C++ para agrupamento de Grafos desenvolvido durante o Mestrado em Modelagem Computacional

Compilador

  • No projeto eu uso o g++ presente no Mingw-w64.
  • Qualquer duvida recorrer a documentação para rodar o projeto no VS Code em Windows.
  • No Linux ou WSL utilizando uma distribuição Ubuntu é possível obter o compilador através dos comandos: sudo apt install g++ sudo apt install build-essential

Compilar/Build

g++ main.cpp -o main

Executar

./main caminho_arquivo_entrada caminho_arquivo_saida n_classes max_it chance_buscar chance_perturbar

Linux Script

Permissão para executar

chmod +x auto.sh

Executar scripts com o casos 1 a 4
./auto.sh

Exemplo de Comando de Execução

Usando os dados em dataset1.txt na pasta input, com 2 classes, 1000 interações do programa, chance de buscar e perturbar 1.0 e 0.5, respectivamente:

./main input/dataset1.txt output/output-1-2.txt 2 1000 1.0 0.5

Arquivo de entrada (folder input)

O arquivo segue o seguinte padrão:

número_de_nós
número_de_arestas
número_nó_saida número_nó_entrada peso_da_aresta
...

Exemplo de Arquivo de Entrada

Usando 6 nós, 7 arestas, o nó 0 se liga ao nó 1 com uma aresta de peso 0.9:

6
7
0 1 0.9
1 2 0.3
0 2 0.5
2 3 0.6
3 4 0.9
4 5 0.2
5 3 0.3

Arquivo de saida (folder output)

O arquivo de saída é construido no seguinte padrão:

avaliação_solução
número_nó classe_do_nó
...
tempo_execução

Exemplo:

0.416667
0 1
1 1
2 1
3 0
4 0
5 1
6 0
7 0
8 0
9 2
0.297260

No exemplo, como temos 3 classes os nós só podem ser da classe 0, 1 ou 2.

Avaliação da Solução/ Funcional

  • A avaliação da solução é melhor quanto mais próximo de zero estiver.
  • Seu cálculo é feito usando o funcional MQ (Modularization Quality).
  • o MQ é feito através da diferença da média de arestas externas menos a média das arestas internas de cada classe.
  • Uma aresta interna é aquela que liga a dois nós da mesma classe.
  • Uma aresta externa é aquela que liga dois nós de classes diferentes.