Fórmulas Booleanas Mínimas: Elegância e Desafios no Design de Algoritmos
Este artigo relata a jornada de calcular o número mínimo de operadores AND ou OR necessários para expressar qualquer função booleana de cinco variáveis. Inicialmente, foi usada uma variante do algoritmo de Floyd-Warshall, mas se mostrou ineficiente. O autor e Alex Healy posteriormente colaboraram, aproveitando simetrias de funções e outras propriedades para otimizar significativamente o algoritmo, calculando finalmente o resultado como 28. O artigo detalha o processo de otimização do algoritmo, incluindo a redução de computação por meio de simetrias de funções e classes de equivalência, e a transição de uma construção de baixo para cima para uma busca de cima para baixo. O algoritmo final reduziu o tempo de computação de meses estimados para menos de meio dia.
Leia mais