Vértices são objetos, e arestas modelam relacionamento. Por exemplo, um grafo pode modelar redes de pessoas, e os vértices são as relações de amizade (grafo de amizade).
Nota: Algumas definições não permitem ligações com o mesmo vértice (self-loops). Nesse caso, os grafo são chamados de grafos simples
Grafos podem ser de dois tipos: direcionados e não direcionados
Passeio: um passeio é uma sequência não vazia de vértices P=(v0,v1,v2,⋯,vk) tal que (vi,vi+1)∈E (ou {vi,vi+1}∈E)
Se existe um passeio entre dois vértices v0 e vk, dizemos que os vértices e arestas do passeio são alcançáveis a partir de v0.
O comprimento de P é a quantidade de arestas de P
Trilha: um passeio que não tem arestas repetidas é chamado de trilha
Caminho: um passeio que não tem vértices repetidos (exceto possivelmente o primeiro e o último) é chamado de caminho
Ciclo: um caminho cujo início e fim é o mesmo vértice é chamado de ciclo
Um grafo é conectado se todo par de vértices é ligado por um caminho
Os subgrafos conexos de um grafo desconexo que são maximais com respeito a conectividade são chamadas de componentes conexas
Um grafo direcionado é fortemente conectado se todo o par de vértices é ligado por um caminho
Os componentes fortemente conectados de um grafo direcionado são conjuntos de vértices sob a relação “são mutuamente alcançáveis”.
Existem diversas representações que podem ser utilizadas. As duas mais comuns são:
Um grafo pode ser representado por:
lista de adjacênia
matriz de adjacência
A representação por lista de adjacência é boa se o grafo é esparso (∣E∣<<∣V∣2)
Já a representação por matriz de adjacência é boa se o grafo é denso (∣E∣≈∣V∣2)
No curso, vamos assumir a representação baseada em lista de adjacência (a não ser que indicado), uma vez que os grafos grandes tendem a ser esparsos.