https://docs.google.com/presentation/d/e/2PACX-1vQ9bPnukkrFaZfhZhyPCzKnNoTc3v7WQMAAChmbgLzTzql6SZU_1pHfUCRRpqYucA/pubembed?start=false&loop=false&delayms=3000

1. Busca em Largura (Breadth-First Search)

Funcionamento

A Busca em Largura explora o grafo nível por nível, partindo de um vértice inicial e visitando todos os seus vizinhos antes de avançar para o próximo nível de vizinhos1. Utiliza uma fila para controlar a ordem de exploração.

Pseudocódigo

BFS(Grafo G, vértice s):
  criar fila Q
  marcar s como visitado
  enfileirar(Q, s)
  enquanto Q não estiver vazia:
    v ← desenfileirar(Q)
    para cada w em vizinhos(v):
      se w não visitado:
        marcar w como visitado
        enfileirar(Q, w)

Ilustração do processo de exploração em níveis.

Ilustração da Busca em Largura (BFS) explorando níveis do grafo

Ilustração da Busca em Largura (BFS) explorando níveis do grafo


2. Busca em Profundidade (Depth-First Search)

Funcionamento

A Busca em Profundidade mergulha o mais profundamente possível em cada ramo antes de retroceder (backtracking) para explorar ramificações não visitadas2. Emprega uma pilha (ou recursão) para registrar o caminho atual.

Pseudocódigo

DFS(Grafo G, vértice v):
  marcar v como visitado
  para cada w em vizinhos(v):
    se w não visitado:
      DFS(G, w)

Exemplo de retrocessos no momento em que não há mais vizinhos não visitados.

Ilustração da Busca em Profundidade (DFS) mostrando retrocessos

Ilustração da Busca em Profundidade (DFS) mostrando retrocessos


3. Algoritmo A*