Showing posts with label Research. Show all posts
Showing posts with label Research. Show all posts

Monday, July 28, 2008

A Coin Problem(硬币问题)

A journalist, named Zoe, unfortunately (for her) interviews one of the presidential candidates. The candidate refuses to let Zoe to end the interview, and goes on and on about the candidate’s plans how to solve all the problems in the world. In the end, the candidate offers Zoe a game. If she wins the game she can leave.

The game board is made out of 2×2 coins:

board

At each round, Zoe can decide to flip one or two coins, by specifying which coins she is flipping (for example, flip the left bottom coin and the right top coin), next the candidate goes and rotates the board by either 90,180,270, or 0 degrees. (Of course, rotation by 0 degrees is just keeping the coins in their current configuration.)

The game is over when all the four coins are either all heads or all tails. To make things interesting, Zoe does not see the board, and does not know the starting configuration.

Describe an algorithm that Zoe can deploy, so that she always win. How many rounds are required by your algorithm?

From: Sariel's blog

中文翻译:

Alice和Bob两人玩一种硬币游戏。游戏在一个2×2的棋盘上进行,棋盘上每个格子上都有一枚硬币。在每一回合,Alice可以决定选择翻转某两枚或者一枚硬币,接着Bob可以选择将棋盘旋转90,180或者270度,也可以什么都不做。

游戏轮流进行直到棋盘上所有硬币都正面朝上或者反面朝上,Alice获得胜利。

如果Alice在游戏过程中无法看到棋盘上的银币,也不知道游戏刚开始的状态,甚至不知道Bob每回合是否旋转了棋盘,那么Alice有策略能够获得胜利么?他的最优策略是什么?

解法:

这个题目其实挺简单的,关键是考虑问题的思路,思路正确的话,最多七步可以解决问题。注意不考虑初始状态所有四枚硬币都朝上或朝下的情形。

初始状态不外乎下面四种:

1 2 3 4
(1) (2) (3) (4)

然而,(1)和(4)是上下对称状态,实际属于一种状态。这样就只有(1)、(2)、(3)三种初始状态了。

我们的目标是,经过数次翻转硬币的操作,使得所有的状态都能达到全上或者全下的情形,对于中途达到目的的情况就可以弃之不考虑了,说明我们运气好,提前完成了任务。

第一步:任一对角线翻转(这里的翻转指的是上面的每个硬币都翻个个,下同)

这一步做完后,便出现如下情形:

状态(1)不变,因为它要么变成对称,要么旋转角度。

状态(2)也不变,只是旋转了一下角度而已。

状态(3)直接变成全上或全下了,OK,属于提前完成任务,丢弃。

第二步:任一条边翻转

长话短说,状态(1)依然不变,因为除了变角度就是变成对称。

状态(2)分两种情况。一种是直接胜利,丢弃。另一种是变成状态(3)。

第三步:任一对角线翻转

状态(1)仍然不变,状态(3)直接走向胜利。

第四步:任一个硬币翻转

这一步的目的是让状态(1)变成状态(2)或者状态(3)。这样,后续的步骤就和前面一样了。

第五步:任一对角线翻转

第六步:任一条边翻转

第七步:任一对角线翻转

如果还不明白,可以看这个流程图。

solution

到 此,这个2×2的问题是解决了。可是,题目的作者又提出了新的难度:推广这个游戏。共有n枚硬币,分别放在一个正n边形棋盘的顶点上。每回合Alice可 以翻转任何一些硬币,Bob则可任意以n种不同的方式(旋转360/n的倍数角度)之一旋转棋盘。游戏一直到所有硬币正面朝上或者反面朝上,Alice获 得胜利。

这个推广我暂时还不会做,大家一起思考一下吧。感觉上好像要用到自动机理论。

Tuesday, July 15, 2008

魔方的变化数

前天买了一个魔方,玩玩了一会才发现这个东西真是复杂,拼了半天才拼好一个面。于是想算算魔方的变化数目究竟有多大,上网查了一下,好家伙,原来这么多的变化啊!

魔方总的变化数为

魔方总变化数公式

或者约等于4.3·1019

三阶魔方总变化数的道理

六个中心块定好朝向后,我们就不可以翻转魔方了,而他们也正好构成了一个坐标系,在这个坐标系里,8个角色块全排列8!,而每个角色块又有3种朝向,所以是8!*38,12个棱色块全排列每个有2种朝向是12!*212,这样相乘就是分子,而分母上3*2*2的意义是,保持其他色块不动,不可以单独改变一个角色块朝向,改变一个棱色块朝向,和单独交换一对棱色块或一对角色块的位置。

小小魔方,真是变化无穷。值得好好研究一下。

Tuesday, May 27, 2008

概率

YYGN
今天课上看到一个题目:有52张纸牌,26张红,26张黑。问抽两张,一红一黑的概率是多少?

这道题看到后的感觉是不难,但是如果我在面试时遇到还真不知道怎么做,主要是紧张。其实静下心,谁都可以做出来的。另外有人说,这两张牌分别抽出来(抽一张,看一张;在抽一张)和同时一起抽两张是不一样的情况,下面我对此给出解答。

方法一(同时也是上面说的第一种情况,两张牌分别抽):
先假设第一次抽到红色,概率是26/52=1/2;第二次抽到黑色,概率是26/51。总的概率是(1/2)*(26/51)=13/51。但是由于还有一种先黑后红的情况与之相同。故答案为(13/51)*2=26/51。

方法二(第二种情况,两张牌一起抽):
52张牌中抽两张,总的情况是C(2,52)=52*51/2=26*51。红一张,黑一张的组合一共有C(1,26)*C(1,26)=26*26种情况(这有点像笛卡尔积)。于是答案为(26*26)/(26*51)=26/51。

由此,我们可以看出这道题两种情况答案是一样的。事实上,如果我们设共有m张牌,红的n张,黑的m-n张,从这两种情况进行计算,答案也是一样的,这就说明,这两种情况根本就是一样的,即一张一张抽和一起抽是一样的。

另外提供方法三
两张全红的概率为(26/52)*(25/51)=25/102。同样,两张全黑的概率也是25/102。那么减去这两种情况就是答案,1-25/102-25/102=26/51。

看来遇事不能想当然哦。