Gates,W. and Papadimitriou,C. "Bounds for Sorting by Prefix Reversal." Discrete Mathematics.27,47-57,1979.
据说这是Bill Gates发表的唯一学术论文。
这个排序问题非常有意思,不同于Hanoi塔问题。首先我们要弄清楚骚操作在于:单手每次抓n块饼,全部颠倒。
例如
-----------1------------
------2------
----3----
翻转后:
----3----
------2------
-----------1------------
基本的排序方法都不太好用。先说一个最简单的解法,如果最底层的饼已经排序,那我们只需要处理n-1个烙饼。这样,我们再简化为n-2,n-3,递归直到最上面的两个饼排好序。这种排序的算法思路大概是这样:
首先,对于每一堆饼,我们找到它里面最大的一张饼,把这张最大的饼与上面的n个饼全部翻转,这样最大的饼就在最上面了,之后我们把整堆再做一次翻转,这样最大的饼也就到了最底部。如图所示(笔者字不好,多多包涵哈哈)
之后,我们就可以轻松的通过递归将整堆饼排序。
这么简单就可以把问题解决吗?用脚丫子想都不可能。
我们注意到一个问题,上面的方法中,首先经过两次翻转可以把最大的烙饼翻转到最下面。因此,最多需要把上面n-1张烙饼翻转2(n-1)次就可以全部排序。这未免太麻烦了点,我的意思是,假设这堆烙饼里存在已经排好序的序列,那岂不是多费工夫?
凭直觉来猜想,

本文探讨了Bill Gates和Christos Papadimitriou在1979年发表的关于烙饼排序的问题,该问题涉及如何通过前缀反转进行排序。文章指出,通过递归和动态规划的方法寻找最优解,但简单的解决方案并不总是有效。作者提示读者注意避免不必要的翻转,并提供了一个C++程序来搜索最优方案,鼓励从后往前阅读以更好地理解内容。
最低0.47元/天 解锁文章
231

被折叠的 条评论
为什么被折叠?



