sexta-feira, 26 de março de 2010

Conectividade de redes mesh

Ricardo Andrade Dalla Bernardina



Redes mesh podem ser estudadas pela teoria dos grafos [1]. Para seu correto funcionamento é necessário que qualquer AP (Acess Point) tenha comunicação com qualquer outro. Por isso, é natural a relação entre a conectividade entre um AP e todos outros de uma rede mesh, e o fato do grafo associado a eles ser conexo ou não [2]. Com esta finalidade criou-se o programa connect.g [3] para avaliar se o grafo de uma rede mesh é conexo, utilizando a linguagem gvpr [4]. o programa é mostrado a seguir:
BEGIN {
graph_t comp;
}
N {
comp = compOf ($G, $);
printf ("%s\n", $G.name);
if (comp.n_nodes < $G.n_nodes) {
printf("'%s' is not a connected graph.\n", $G.name);
}
else{
printf("'%s' is a connected graph.\n", $G.name);
}
exit(0);
}

No passo BEGIN é declarado o grafo comp. Este grafo é usado no passo N para receber o valor da chamada de compOf() do grafo de que se deseja verificar a conectividade. A função compOf() verifica, dado um grafo g e um nó n deste grafo, quais nós de g estão conectados com o nó n. A resposta de uma chamada a compOf() é um subgrafo com os nós que estão em ligados a n, sem as arestas em g.

No programa é feita a chamada compOf ($G, $), onde $G significa o grafo sendo atualmente processado, e $ o nó atual no passo N. Como em um grafo conexo, qualquer nó deve estar ligado com todos os outros nós, o número de nós do resultado do compOf() deve ser igual ao número de nós do grafo original. Por isso, comparação
if (comp.n_nodes < $G.n_nodes)


Nela é avaliado se o número de nós do resultado de compOf() é menor que o número de nós do grafo original. Se a resposta for positiva, o grafo não é conexo. Então, é exibida na tela a mensagem de não conexão do grafo. Caso a resposta seja negativa, o número de nós do resultado do compOf() é igual ao número de nós do grafo original, pois não há possibilidade de haver maior número de nós no grafo do compOf() em comparação com o grafo original. Desse modo, a tela exibirá mensagem informando que o grafo é conexo.

É feita logo a seguir, uma chamada exit(0), para que o programa não exiba a mesma resposta até serem analisados todos os nós -- pois se o grafo não for conexo, a chamada a compOf() para qualquer um dos nós gerará um componente conexo com menos vértices do que o grafo original.

Assim, basta testar um único nó -- portanto, este é um método bastante eficiente.

Referências



[1] Redes mesh e grafos
http://tecnologiassemfio.wordpress.com/2010/01/22/redes-mesh-e-grafos/
Acessado em 25/03/2010

[2] Teoria dos grafos
https://secure.wikimedia.org/wikipedia/pt/wiki/Teoria_dos_grafos
Acessado em 25/03/2010

[3] connect.g
http://sites.google.com/site/hgfernan/arquivos/connect.g?attredirects=0
Acessado em 25/03/2010

[4] Apresentação do gvpr
http://tecnologiassemfio.wordpress.com/2010/02/05/apresentacao-do-gvpr/
Acessado em 25/03/2010

Um comentário:

  1. Bom dia amigos,

    Venho através deste comentário pedir a autorização de vocês para publicar alguns artigos da tecnologiassemfio.blogspot.com no blog VIVASEMFIO.com. O artigo será copiado fielmente, respeitando e publicando o nome do autor bem como as referências utilizadas e a fonte (tecnologiassemfio.blogspot.com). Muito obrigado pela atenção e aguardo uma resposta através do link:

    http://www.vivasemfio.com/blog/fale-comigo/

    Abraços

    ResponderExcluir