Se você for trabalhar com algoritmos em grafos não é possível sem lista de adjacências ou matriz de adjacências para representar os grafos. Vou tratar aqui da lista de adjacências pois foi a forma que mais usei até o meu estado atual na faculdade.
No meu caso foi implementado uma lista de adjacências para um grafo não-dirigido, ou seja, a aresta (a b) é a mesma que (b a). Uma lista de adjacência nada mais é que um vetor de listas encadeadas, ou listas encadeadas de listas encadeadas. No meu caso utilizei vetor de listas encadeadas pois eu já sei qual é o maior vértice do meu grafo, dessa forma posso declarar o tamanho do meu vetor como sendo o maior vértice do meu grafo. Caso não se conheça o maior vértice do grafo, pode ser feito a implementação com listas encadeadas de listas encadeadas, onde as arestas vão sendo inseridas até que o arquivo chegue no final, sem uma limitação.
Os índices do meu vetor correspondem aos vértices do grafo, o que guardo nesses vetores são os graus dos vértices e a lista encadeada a cada índice do vetor são os vértices adjacentes à ele.
Por exemplo, um grafo e sua lista de adjacências:
Implementei um algoritmo em C que monta a lista de adjacências de um dado grafo, vale lembrar que a entrada é um arquivo onde o mesmo deve conter pares de arestas do grafo que se deseja montar, por exemplo para o grafo da figura acima o arquivo de entrada do algoritmo seria:
1 3
2 4
2 5
3 4
4 5
4 6
6 7
6 8
7 8
O Algoritmo: (bastar compilar utilizando o gcc (gcc algoritmo.c -o nome qlq) e mandar o arquivo como entrada ./nome qlq Input).
Mudamos no algoritmo o define para 8, pois conhecemos o valor do maior vértice do grafo.
1: (2) ==>2 3
2: (3) ==>1 4 5
3: (2) ==>1 4
4: (4) ==>2 3 5 6
5: (2) ==>2 4
6: (3) ==>4 7 8
7: (2) ==>6 8
8: (2) ==>6 7
11 comentários:
cara, muito legal oh isso que você fez! Tou estudando grafos agora na faculdade e é bastante interessante...
você pode me mandar seu email pra eu poder tirar algumas dúvidas?
gabrieltavaresmelo@gmail.com
como mandar o arquivo como entrada??
obrigado desde já
Muito obrigado =)
Ajudou-me imenso para o meu projecto da faculdade. Está simples de entender!
Boa explicaçao, mas poderia ter feito um exemplo com lista de listas...
bom de mais
ajudou muito vlw
show
link quebrado
sou seu fã
valew mesmo
se botar busca em largura e profundidade eu caso com vc
MEU PROFESSOR DISSE:QUEM CONSEGUIR FAZER ESSE GRAFO EU DOU NOTA DEZ E ESTAR LIVRE DA 1° UNIDADE,SÓ QUE NINGUEM CONSEGUIO.O GRAFO É UM QUADRADO COM UM "X" NO MEIO, OBS: TEM QUE FAZER SEM TIRAR O LÁPIS DO PAPEL. SE VC ENTENDEU E PODER ME EXPLICAR COMO SE FAZ, AGRADEÇO PELA ATENÇAO...
OBG:
Postar um comentário
Gostou da esbórnia de hoje ? Comentem.