Fundamentos de Projeto e Análise de Algoritmos

Problema: Encontrar todas as maiores subsequências comuns entre duas sequências de eventos de Helena e Marcus.

Como funciona a solução:

Programação dinâmica: é utilizada para construir uma matriz (tabela) que armazena os comprimentos das maiores subsequências comuns entre prefixos das duas sequências. Essa etapa evita cálculos repetidos, melhorando o desempenho da solução.

Backtracking: após a construção da matriz, usamos um algoritmo de exploração recursiva para reconstruir todas as subsequências que correspondem ao comprimento máximo encontrado. Ele navega pela matriz, retornando todas as combinações possíveis sem repetições.

Essa combinação garante eficiência (graças à programação dinâmica) e exaustividade (graças ao backtracking).