Como é que se podem representar e descrever as ligações e relações entre os vértices numa estrutura de grafo?
sobes.tech IA
Resposta da IA
As ligações e relações entre vértices numa estrutura de grafo são geralmente descritas usando arestas. As principais formas de representar um grafo:
-
Lista de adjacência: para cada vértice, é mantida uma lista de vértices vizinhos com os quais está ligado. É uma forma eficiente para grafos dispersos.
-
Matriz de adjacência: uma matriz bidimensional onde o elemento [i][j] indica a existência (e possivelmente o peso) de uma aresta entre os vértices i e j. Útil para grafos densos.
-
Lista de arestas: simplesmente uma lista de todas as arestas, onde cada aresta contém informações sobre os vértices inicial e final (e peso, se houver).
Por exemplo, em Java, um grafo pode ser representado assim:
class Graph {
private Map<Integer, List<Integer>> adjacencyList = new HashMap<>();
void addEdge(int from, int to) {
adjacencyList.computeIfAbsent(from, k -> new ArrayList<>()).add(to);
// Para um grafo não dirigido, adicionar a aresta inversa
// adjacencyList.computeIfAbsent(to, k -> new ArrayList<>()).add(from);
}
}
Dessa forma, as ligações entre vértices são modeladas por arestas, e a estrutura de dados é escolhida dependendo da tarefa e das características do grafo.