O que é um Grafo?
Lição 2 de 14 do curso Grafos - Série de Estruturas de Dados #9 da Coddy.
Um grafo é uma estrutura de dados que modela um conjunto de coisas e as conexões entre elas. As coisas são chamadas de vértices (ou nós) e as conexões são chamadas de arestas.
Grafos estão em toda parte. Redes sociais são grafos (pessoas são vértices, amizades são arestas). Mapas rodoviários são grafos (interseções são vértices, ruas são arestas). A internet, árvores de dependência e mapas de jogos são todos grafos.
Neste curso, focamos em um grafo não direcionado: se uma aresta conecta u e v, então v também está conectado a u. Não há direção. Usaremos inteiros como as chaves dos vértices para manter as coisas simples.
Internamente, armazenaremos o grafo como uma lista de adjacência: um mapa de cada vértice para a lista de seus vizinhos. Isso torna a busca pelos vizinhos de um vértice um único acesso ao mapa, que é o que a maioria dos algoritmos de grafos precisa.
As operações que construiremos em nossa classe Graph são:
- addVertex: Adiciona um novo vértice ainda sem arestas.
- addEdge: Conecta dois vértices.
- hasEdge: Verifica se dois vértices estão conectados.
- getNeighbors: Obtém a lista de vizinhos de um vértice.
- removeEdge: Desconecta dois vértices.
- size: Conta quantos vértices o grafo possui.
Vamos construir uma classe Graph!
Experimente você mesmo
Esta lição não inclui um desafio de código.