以前提到过,理论计算机这门课会邀请一些正在这边访问的教授来讲课,由于是本科生,所以这些教授一般都是讲些有趣的东西,比如之前的overhang 堆积木 - 能伸出桌面多远?。今天这次课,来自Aarhus的Peter Bro Miltersen讲了一个很有趣的游戏问题。
现在有100个箱子,有一个学生,一张写着他的名字的名片被放在某个随机选择的箱子里面。现在这个学生可以检查不超过一...
摸箱子问题以及在Static data structure problems上的应用
征集3个人分蛋糕的方法
Yao在课程《理论计算机II》的第一节课上提到的一个问题:
三个人如何平分一块蛋糕?
要求每个人拿到不少于1/3的蛋糕——这里指的是每个人认为自己拿到的蛋糕价值不少于整块蛋糕的1/3,而每个人对于蛋糕的不同区域的价值认识可能不同(即并不完全等价于面积)。
方法最好可以推广到n个人的情形。
课上讲了一种方法:
任选一个人,在蛋糕上缓...
TCS课堂笔记:数据库存储问题
理论计算机(I)课上讲的一个问题,很有意思。
已经一个n,m和里n个数,设计一种保存这n个元素的表的数据结构形式,使得对中任何一个数,可以最少的查询次数(每次查询,可以选择一个位置,然后你能知道表中这个位置的数据),获知这个数是否在表中。
如果设计这个表为有序表,用二分法需要次查询。
有序表是最优的么?
举一个例子,一个保存1,2...
最佳约会策略
题外话:最近阅微堂发的都是网友转发的政治方面的文章,不爱看的人会比较痛苦。现在讨论一个轻松一点的话题。其问题,已经被研究了很多年,有许多不同形式的阐述方式和变种,应用范围也很广。下面应该是比较吸引人和简单的那种,来自姚期智教授的理论计算机(I)的授课内容——我是其助教之一。
现假设你在PIE上征友,或者以其它方式,选定了某些约会对...
"完美"的洗牌次数 - 7次
在大家玩牌的时候,每一局之前都需要重新洗牌——一次洗牌指将牌分为左右两垛然后穿插放牌,但多少次洗牌才是正当的呢?就我多次打牌的观察,多数人都不超过4次。
但就D. Aldous和P. Diaconis在1992的一个结果,要想达到“比较完美”的洗牌效果——洗完牌后牌局基本上随机分布,至少需要5次,要达到“完美”洗牌,则需要7次。但更多次数不会有太多改进。这还是对...
标签: Diaconis, 概率, 洗牌, 理论计算机笔记, 随机算法, 魔术
TCS: 拜占庭将军问题 (The Byzantine Generals Problem)
这个问题在Yao的理论计算机课上整整讨论了2节课。它是一个算法设计问题,也极具趣味性。下面是它的一些介绍和解决方案([1])。
拜占庭帝国就是5~15世纪的东罗马帝国,拜占庭即现在土耳其的伊斯坦布尔。我们可以想象,拜占庭军队有许多分支,驻扎在敌人城外,每一分支由各自的将军指挥。将军们只能靠通讯员进行通讯。在观察了敌人以后,忠诚的将军们必须制订...
标签: The Byzantine Generals Problem, 拜占庭将军问题, 理论计算机笔记