查找区分数据点的算法?

时间:2011-08-04 21:08:47

标签: algorithm

给定n个样本并且p>>对于n个样本中的每一个的n个(离散的)数据点,什么是用于找到最小可能的k个数据点集合的良好算法,使得那些k个数据点区分所有n个样本?

就我的目的而言,找到近似最小集的好算法也足够了。

2 个答案:

答案 0 :(得分:1)

听起来好像你的问题与测试封面问题密切相关。测试覆盖问题是,给定地面集合X = {1,...,n}和集合T = {T 1 ,...,T m }的子集X,为了找到T的最小子集合U,使得对于X中的所有y≠z,在T中存在集合S,使得(S中的x不在S中的y)或者在S中的x不在S和y中)。

测试封面问题是NP难的,因此在实践中,使用分支和绑定技术找到最佳解决方案。见De Bontridder et al.

答案 1 :(得分:0)

这是一个简单的贪心算法,不应该产生太糟糕的结果:

检查两个不同元素的数据点是否相同,如果是,则没有解决方案。

  • 在每个步骤中,我们向集合k添加一个新数据点。
  • 我们会测试p中所有n中的所有不同点。
    • 尝试将该点添加到k
    • 新的kn划分为几个不同的集合(其中一些集合 只包含一个元素,还有一些元素..最后所有元素只包含一个元素。)
    • 选择生成的点 最多的一套。
  • 这样做直到所有组合都不同。