Sobes.tech
Junior — Middle

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.