# Ordenação da panqueca

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.

### O que eu posso fazer para melhorar este universo do PLM?

Como sempre, existem várias coisas que podem ser feitas no código deste universo para melhorá-lo:

- Uma visão temporal similar ao universo da ordenação pode ser útil
- Outros exercícios, por exemplo sobre Roti sorting, com uma pilha de Roti que tem que tocar a grelha em ambos os lados (see http://en.wikipedia.org/wiki/Pancake_sorting#The_identical_pancake_stack).