集合 S of n numbers - 有一个子集,其中 S 的每个元素出现的概率相等
Set S of n numbers - have a subset with the probability of each element of S occuring in it equal
我有这个问题
You are given a set S of n numbers. You must pick a subset S′ of k numbers from S such that the probability of each element of S occurring in S′ is equal (i.e., each is selected with probability k/n). You may make only one pass over the numbers. What if n is unknown?
我什至有一个解决方案:http://www.algorithm.cs.sunysb.edu/algowiki/index.php/TADM2E_2.43
仍然:我完全不理解问题文本。
我得到了一组 S,其中有 n 个数字。美好的。我需要选择一个 k 数字的子集(可能有 2^n 个子集),使得 S 的每个元素出现在 S' 中的概率是相等的......对我来说显而易见的答案是只获取空的 S' 集: S 中的每个元素在 S' 中的概率为 0。
如果这是不可接受的(并且应该说明),我想我应该计算 S 中出现次数最多的元素(出现 T 次),并使所有其他元素在 S' 中恰好有 T 个实例(如果元素包含在 S 中,它仍然应该是一个子集。
我不是很懂优先队列的解法,也不是k/n概率。有人可以帮我解决这个问题吗?
这是一个非常著名的问题,由此产生的技术称为 Reservoir Sampling - 一种非常有用的大数据流处理算法。前面的link可以给你解决方案的精确设置、动机和解释。
我有这个问题
You are given a set S of n numbers. You must pick a subset S′ of k numbers from S such that the probability of each element of S occurring in S′ is equal (i.e., each is selected with probability k/n). You may make only one pass over the numbers. What if n is unknown?
我什至有一个解决方案:http://www.algorithm.cs.sunysb.edu/algowiki/index.php/TADM2E_2.43
仍然:我完全不理解问题文本。
我得到了一组 S,其中有 n 个数字。美好的。我需要选择一个 k 数字的子集(可能有 2^n 个子集),使得 S 的每个元素出现在 S' 中的概率是相等的......对我来说显而易见的答案是只获取空的 S' 集: S 中的每个元素在 S' 中的概率为 0。
如果这是不可接受的(并且应该说明),我想我应该计算 S 中出现次数最多的元素(出现 T 次),并使所有其他元素在 S' 中恰好有 T 个实例(如果元素包含在 S 中,它仍然应该是一个子集。
我不是很懂优先队列的解法,也不是k/n概率。有人可以帮我解决这个问题吗?
这是一个非常著名的问题,由此产生的技术称为 Reservoir Sampling - 一种非常有用的大数据流处理算法。前面的link可以给你解决方案的精确设置、动机和解释。