我有几千个节点树的树,由布尔属性的装饰,像这样(括号属性):减少属性
Root (x=true, y=true, z=false)
Interior 1
Leaf 1 (x=false, z=false)
Leaf 2 (x=false, y=false, z=false)
Interior 2
Leaf 3
etc.
我想什么做的是找到装饰品的最小数量需要保存的属性值,获得以下几方面的限制/信息:
- 属性由子节点继承
- 只有叶节点所产生的属性都重要(包括继承的属性)。因此,如果在内部节点上设置“默认”属性,可以让我在其子节点上放置一些属性,没关系。
- 我们的模型中有一个简写,用于将所有属性设置为true或false。例如,
(x=false,y=false,z=false)
可以由一个装饰器来代表,而(x=false,y=false,z=true)
则可以由三个装饰器来代表。 - 子节点的数量将大大超过内部节点(至少25比1)
- 树的初始状态将有许多冗余。
- 我使用Java并添加一个外部库来处理这个问题并不是什么大不了的事情。
这些约束条件并不灵活,因为我正在使用大型企业系统的集成层,所以我只能尽量减少我们必须存储和传输的属性值的数量。我认为约束#3正在引发我一个循环,因为如果没有它,我可以单独处理每个属性,这很简单(在我意识到更多属性出现之前,我已经实现了一个解决方案)。
我希望这足以描述一般问题的描述。如果需要,我可以提供更多的例子或信息。谢谢!
什么问题? – 2013-04-30 00:19:19
你不需要绝对*最小的数字,是吗? – 2013-04-30 00:19:52
@MelNicholson:问题是什么算法会导致最少数量的装饰。我的希望是,它可以归结为一个我从未见过的着名问题,或者这实际上很简单,我只是密集:) – 2013-04-30 00:27:41