https://docs.google.com/presentation/d/e/2PACX-1vSdSC2sCa8TH4By7nkPvin8lGQkT3mqeOx59Z1GRRk9-FG2VZEijUN5Jo3tP9fzJA/pubembed?start=false&loop=false&delayms=3000
A modelagem de problemas em Ciência da Computação frequentemente recorre a grafos e árvores como estruturas abstratas para representar relações entre entidades e hierarquias de dados1. Estas estruturas facilitam a formulação e a aplicação de algoritmos eficientes para buscas, caminhos mínimos, ordenações e outras operações essenciais em diversas áreas.
Um grafo $G(V,E)$ é composto por um conjunto de vértices $V$ e um conjunto de arestas $E$ que conectam pares de vértices1. A orientação e o peso das arestas determinam se o grafo é dirigido ou não dirigido e ponderado ou não ponderado.
Para implementar grafos em programas, as representações mais comuns são:
Diagrama de um grafo não direcionado com cinco nós e sua correspondência em lista de adjacência.

Diagrama de grafo e lista de adjacência
Exemplo de matriz de adjacência para um grafo com cinco vértices, destacando células preenchidas que representam arestas.

Exemplo de matriz de adjacência