Esta atividade é inspirada por um problema introduzido pela primeira vez em
1975 por Harry Dweighter no American Mathematical Monthly. A pergunta não é
apenas ordenar panquecas, mas determinar f(n)
a quantidade
minima de viradas necessárias para ordenar qualquer pilha de tamanho
n
.
Este problema é agora famoso por que Bill Gates escreveu (com
C. Papadimitriou) sua única publicação científica em 1979 neste tópico,
fornecendo um algoritmo mais rápido e provando que 17n/16 ≤ f(n) ≤
(5n+5)/3
. Este foi a única publicação de Bill Gates antes dele
inventar o Windows e ficar rico.
Então, David X. Cohen, o inventor dos quadrinhos Futurama com muitas referências matemáticas, introduziu a variante com panquecas queimadas e estudou sua complexidade com Manuel Blum em 1993.
Um artigo de 2012 (de L. Bulteau, G. Fertin e I. Rusu) provou que determinar a quantidade mínima de viradas para ordenar a pilha é um problema NP-completo. Naturalmente, o problema de ordenar a pilha não é NP-complete pois pode ser resolvido em 2n-3 passos com o algoritmo simplório e (5n+5)/3 passos com o algoritmo de Gates. É a determinação da quantidade mínima de passos que é NP.
Mais informações podem ser encontradas na página da wikipédia, como sempre.
Esta atividade também é integrada ao CSIRL (meu repositório de atividades offline livres para introdução de ciência da computação, disponível em http://www.loria.fr/~quinson/Mediation/SMN/), e pode ser interessante executar as atividades offline antes de implementar estes algoritmos no PLM.
Como sempre, existem várias coisas que podem ser feitas no código deste universo para melhorá-lo: