【发布时间】:2011-09-07 00:38:41
【问题描述】:
我正在研究调查数据集成领域的一个问题,但用人工类比来描述更容易。由于设置有点冗长,我会在一开始就提出我的问题:
这种情况是否等同于任何我可以简单地借用和调整其解决方案的计算机科学问题?
如果没有,您会建议什么方法?我不是要求任何人解决问题。相反,只是希望被指出一个或多个有希望的方向。
想象生态系统有生物,它们由一个或多个分子组成,这些分子由一个或多个原子组成强>。为了成为可行的生物,它的分子必须共同使用每种原子中的一种。在下面的示例中,请注意每个生物只使用所有四个原子一次。另外值得注意的是,生物中分子的顺序和分子中原子的顺序是无关紧要的。
Atoms in the universe: a b c d.
Ecosystem X
creature x1
molecule 1: a b
molecule 2: c
molecule 3: d
creature x2
molecule 4: a b c
molecule 5: d
creature x3
molecule 6: a b c d
Ecosystem Y
creature y4
molecule 7: a b
molecule 8: c
molecule 9: d
creature y5
molecule 10: a b
molecule 11: c d
给定两个生态系统,我的任务是产生“配对”。配对由来自一个生态系统的一组分子(或分子组合)组成,它们映射到来自另一个生态系统的等效分子(或分子组合)。等价性由底层原子决定。像生物一样,配对是不可行的,除非两组分子(每个生态系统中的一组分子)中的每一个都只使用一次所有原子。以下是上述示例中的一些(不是全部)配对:
# A direct mapping from the molecules of creature x1 to those of y4.
m1 = m7
m2 = m8
m3 = m9
# As above, but substitute m10 for m7.
m1 = m10
m2 = m8
m3 = m9
# We can combine molecules.
m4 = m7 + m8
m5 = m9
# Another combination.
m1 = m10
m2 + m3 = m11
在真正的问题领域中,每个生态系统可能有 2 到 100 个原子(分子大小相应变化)和几十个生物。此外,两个生态系统可能不会产生可行的配对。在这种情况下,我的 Python 应用程序最终需要建议近似配对(配对的分子组合列表,然后是每个生态系统中落后者的列表)。
【问题讨论】:
-
您想找到所有给定两个生态系统的可能配对吗?
-
嗯,我强烈希望看到数学方面。你的生物是你的一组分子的分区。因此,每个分子都是一个子集 你可以做的是以任何你想要的方式对你的分区进行编码,然后使用 hastables。您可能还想“添加”几个子集,以形成更大的子集,并将它们也插入哈希表中(对于
m2 + m3 = m11案例)。然后,检查碰撞。我不知道如何带来近似配对 -
这些生物如何影响配对?在我阅读问题陈述时,似乎由于配对发生在分子水平,分子的生物级分组似乎与配对无关。
-
@mhum 正确:生物不会影响配对。
标签: algorithm search data-structures combinations