无限/(动态)Universe集合的字母数字元素中的子集计算

时间:2011-04-07 17:51:46

标签: algorithm performance math encoding functional-programming

给定一个字母数字元素的无限集/ Universe(U)和(U)子集的族(F)。

计算/分组(F)中所有相关子集,其中所有元素都被覆盖或更少,参见示例。

宇宙不是无限的,而是非常大,大约59Mil元素并且在不断增长。族(F)子集也不是常数,大约13Mil元素并且也在增长。

示例:

U = {9b3745e9ab70de171c41013944038bbf9c610bb,...,N}

F1 = {9b3745e9,07ee0220}

F2 = {9b3745e9ab70de17,99b5d738}

F3 = {99b5d738,07ee0220}

F4 = {9b3745e9ab70de171c410139}

F4 <子>计算() = {F2(2),F1(1)}

原因你可以在残酷的迭代中做到,但随着时间的推移,它不是最佳解决方案(NP完全问题)。

任何想法如何更有效地解决这个问题?编码子集,同时使用大于Universe的元素/向量码本,例如70Mil或1​​00Mil。但我不确定计算。

1 个答案:

答案 0 :(得分:0)

似乎基于示例“相关”子集是包含至少一个公共元素的子集。在该示例中,F4具有两个共享元素,0x9b3746e9(与F1共享)以及与F2共享的0xab70de17和0x9b3746e9。括号中的数字表示共享元素的数量(F2(2)= 2个共享元素与F2)。假设这个解释:

  

这显然不是NP-complete   问题,但索引的简单情况。   在哈希表中,链接每个元素   U(59 * 10 6 )列表   包含它们的子集(例如   0x9b3746e9 - &gt; {F1,F2,F4})。什么时候   找到给定的相关子集   子集,遍历元素   在子集中的U,并查找   每个元素的哈希表。重复   通过列表,你找到了   相关子集。这是一个快速   操作,什么也没有   NP-complete in。

然而,问题的另一种解释是这是SET COVER组合优化问题的一个实例。这确实是NP完全的。