首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用图论来编写算法

用图论来编写算法
EN

Stack Overflow用户
提问于 2016-05-22 13:04:14
回答 1查看 164关注 0票数 1

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

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

房间里有n个箱子。除了一个,他们都有一个橘子在里面。X先生想要在没有打开它的的情况下找到空的盒子(也就是说,如果他打开空的盒子,他会输掉游戏!)每个盒子里可能有一些关于其他盒子的信息,如果X先生读到,这些信息可以找出另一个盒子是否是空的。我们(作为一个知情的第三方人士)写了一张关于盒子和信息的表格,交给X先生。这个表格是一个矩阵,如果M( i,j) = 'Y‘,这意味着在第一框中有一些关于j框的信息,你可以通过打开框i,如果M(i,j) = 'N’来判断它是否是空的,如果M(I,j)=‘N’,这意味着盒子I中没有关于j框的信息。想象X先生最好地使用表打开这些盒子(也就是说,他尽可能少地打开盒子)。现在,计算在不打开空框的情况下找到它的可能性。注意:所有的框都有相同的概率为空或不空。

示例1:

代码语言:javascript
复制
YYYYY
NYNNN
NNYNN
NNNYN
NNNNY

概率: 0.8

示例2:

代码语言:javascript
复制
YYNNY
NYNNY
NNYYY
NNNYY
NNNNY

概率: 0.6

希望有人能帮我。非常感谢。

更新:优化意味着尽可能少地打开他不知道的关于的框(也就是说,如果您知道它,就可以简单地打开它)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-22 15:50:17

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

现在您正在寻找所有其他顶点都可从其中访问的最小顶点数,可以找到这个问题的解决方案here

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

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

谢谢你的帮助,Paul

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37374723

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档