繁体   English   中英

在图中搜索节点 Graphs

[英]Searching nodes in graphs Graphs

假设您有一个有向无环图。 该图中有两种节点NormalError节点。 节点有这样的依赖:

在检查一个节点是否有错误之前,您有一些关于该节点的概率信息。 每个节点都告诉你:我不知道我是否是错误节点,但如果下一个是错误节点,我可能是错误节点。 对于每条边,您都有与 2 个节点相关的条件概率。

对于每个 (A)--->(B),您都有概率 P(A|B),它表示如果 B 是错误的,则 A 是错误节点的概率。

您只能检查图中的节点数N 图中的节点总数大于N

在这个图中寻找节点的好算法是什么,如果图中有一个error节点,你很可能会找到它?

非正式的问题是这样的:你有一些产品,你想检查它们是否坏了。 但是为了检查你花钱。 你的钱是有限的。 关键是,根据您的预算,如果您发现包装中有破损的产品,您就不会购买任何产品,然后去其他地方做生意。 如果有损坏的产品,您可以花钱增加找到损坏产品的概率的最佳方式是什么? 我假设您也可以将问题表示为线性规划。 有什么其他方式可以表示问题,您将如何解决?

根据说明错误节点将有(只有)错误子节点的评论,一种简化将集中在叶节点上:如果任何内部节点是错误节点,那么必须至少有一个叶节点也是错误的.

如果叶子的数量也超过N ,那么您必须选择要测试的叶子。 您希望最大化这些叶子覆盖的节点总数。 即找到一组N 个叶子,使它们拥有的祖先数量最大化。

贪婪策略会计算每片叶子的祖先数量,然后选择具有最大祖先数量的一个,并重新计算所有其他叶子的祖先数量。 蛮力策略会尝试选择N 个叶子的所有组合。

类似于线性规划的模型每个叶子可能有一个二元(即 {0,1})变量。 0 意味着选择它,而 1 意味着不选择它,所以你有一个方程,说明所有这些叶子的总和等于叶子的数量减去N 目标函数将是每个内部节点一个被加数的总和。 它们中的每一个的术语将是其后代的叶子变量的乘积。 因此,如果所有叶子都为 1,则每个内部节点的值将为 1,但如果至少有一个叶子为 0,则为 0。最小化这些总和,您就最大化了覆盖的内部节点的数量。 目标显然是高度非线性的,所以它不是线性规划,甚至不是二进制整数规划。

如果数字N与叶子的数量相比非常大或非常小,您可以通过假设一些独立性来近似最优解。 如果你可以选择几乎所有的叶子,你可以寻找那些没有导致其他叶子的内部节点最少的那些叶子。 也许在每一个这样的步骤之后从树中移除掉下的部分。 如果你几乎不能选择叶子,上面的贪婪策略会让你选择那些最大数量的祖先。 在这两种情况下,您可能会假设您的个人选择不会相互影响太多,从而证明贪婪方法是合理的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM