为此使用图论编写算法

时间:2016-05-22 13:04:14

标签: algorithm probability graph-algorithm

我不知道这是否是一个好问的地方。如果我在一个错误的论坛,我很抱歉。

如何以算法方式解决以下问题?

一个房间里有n个盒子。除了一个外,它们都有橙色。 Mr.X想要找到空盒子而不打开它(即如果他打开空盒子,他将输掉游戏!)。关于每个盒子中的其他盒子可能会有一些信息,如果Mr.X读取信息可以找出其他盒子是否为空。我们(作为一个知情的第三方人士)写一张关于箱子和信息的表格,并将其交给Mr.X.该表是矩阵,如果M(i,j)=' Y'这意味着在方框i中有关于方框j的一些信息,如果M(i,j)=' N'你可以通过打开方框i找出它是否为空。这意味着框i中没有关于框j的信息。 想象一下,Mr.X使用桌子最佳地打开盒子(即尽可能少地打开盒子)。现在计算在不打开空盒子的情况下找到空盒子的概率。 注意:所有框都有相同的空或不空的概率。

示例1:

YYYYY
NYNNN
NNYNN
NNNYN
NNNNY

概率:0.8

示例2:

YYNNY
NYNNY
NNYYY
NNNYY
NNNNY

概率:0.6

希望有人可以帮助我。 非常感谢。

更新: 做到最佳意味着尽可能少地打开他不知道的方框(例如,如果你知道它,你可以简单地打开它。)。

1 个答案:

答案 0 :(得分:3)

构建一个有向图,使每个框都是一个顶点,如果框i包含关于框j和i!= j的信息,则从i到j有一条边。

您现在正在寻找可以到达所有其他顶点的最小顶点数,可以找到此问题的解决方案here

为了找到空盒子,你必须打开与上面找到的最小顶点数一样多的盒子,因此概率是1-(最小顶点数)/(#box)

请注意,如果有一个盒子只指向它自己,我们不必打开它,因为我们可以先打开所有其他盒子,如果找不到空盒子,我们知道它是最后一个盒子,万一有这样一个盒子然后概率实际上在1 /#盒子中更高。

感谢您的帮助Paul