我想了解怎样才是找到最小树覆盖度的最佳方法。让我解释一下。
我有一个表示树的自引用结构,它的深度有限。

树中的节点可以在逻辑上“选择”。从应用程序的角度来看,这意味着用户希望获得一些有关所选内容的聚合信息。
假设用户选择节点A、D、I、J、L和M。

我想要做的是能够重组用户选择,以便选择覆盖整个选择的最小节点集。
对于这个例子:
在此之后,没有什么可以进一步重构-算法停止,我应该得到以下选择。

首先,我不知道“最低保险”是否是个好名字。第二,我找不到更好的短语,所以谷歌不是我最好的朋友。
另外要注意的是,树本身可以存储:
我被卡住了
我一直在想这个问题,也许有一个解决办法,我必须加以分析。
可介绍以下内容:
之后,在选择树中添加一个节点(选择-节点)将像这样工作。让我们将选择树中新节点的新父节点称为选择父节点,并将模板树中新节点的父节点称为模板父节点。让我们调用选择树节点选择的子节点-子节点,以及模板树节点模板的子节点-子节点。
我很好奇这个算法是否已经作为一个实现存在于某个地方。它的行为显然不会比O(log(n))更糟糕,对吗?当然,如果它在逻辑上不缺少什么的话。
发布于 2015-11-20 11:57:04
您想要的效果可以通过对树的一次传递,使用深度第一次迭代来实现。
访问节点时,执行两个条件操作。
在您的示例中,这些测试使节点I、J和M的选择分别达到F和H,而第二个测试导致取消选择节点D。
该算法不对树的存储方式做任何假设,而只是假设您可以到达每个节点,并且可以在节点X本身之前处理节点X的子节点。
如果该过程是交互式的,则该过程可以更简单:
这通常是更有效的,因为在每一个选择,你通常只需要走一小部分树。
https://softwareengineering.stackexchange.com/questions/303090
复制相似问题