【问题标题】:Does this scenario equate to any well known computer science problems?这种情况是否等同于任何众所周知的计算机科学问题?
【发布时间】:2011-09-07 00:38:41
【问题描述】:

我正在研究调查数据集成领域的一个问题,但用人工类比来描述更容易。由于设置有点冗长,我会在一开始就提出我的问题:

  1. 这种情况是否等同于任何我可以简单地借用和调整其解决方案的计算机科学问题?

  2. 如果没有,您会建议什么方法?我不是要求任何人解决问题。相反,只是希望被指出一个或多个有希望的方向。

想象生态系统生物,它们由一个或多个分子组成,这些分子由一个或多个原子组成强>。为了成为可行的生物,它的分子必须共同使用每种原子中的一种。在下面的示例中,请注意每个生物只使用所有四个原子一次。另外值得注意的是,生物中分子的顺序和分子中原子的顺序是无关紧要的。

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


【解决方案1】:

这闻起来有点像covering problem 的味道。

  1. 按原子子集索引(散列)分子,生成类似{a, b} -> {m1, m7, m10} 的映射
  2. 选择一个生态系统,并通过枚举分区,发现和索引原子子集及其其他生态系统扩展(例如 {a, b, c} -> {{{a, b}, {c}}} 用于 m4 = m7 + m8。)
  3. 丢弃任何没有展开式的原子子集(理解m1 = m7 算作展开式。)
  4. 从剩余部分中,枚举字母表的分区(所有原子的集合)。从第 3 步开始,我们知道通过已经计算的映射,任何发现的分区都可以转化为其他生态系统中潜在的许多分区。
  5. 选择其他生态系统并重复步骤 2-4。
  6. 重复数据删除结果(可能通过在哈希集中累积它们。)
  7. 使用步骤 1 中构建的映射将由原子子集组成的分区扩展回分子集合。

一个看似棘手的部分是子例程,它接受一组子集并枚举某些目标集的可构造分区。根据确切的语义,这实际上可能是 NP 难的。

【讨论】:

  • 非常感谢您的建议。我想我正在处理确切的封面问题——实际上是其中两个。使用这个 Wikipedia 示例的术语 (en.wikipedia.org/wiki/Exact_cover#Detailed_example),X 对应于我的“宇宙中的原子”,S 对应于“一个生态系统中的分子”,A-F 对应于“分子”。对于每个生态系统,我需要找到所有确切的封面。然后我需要确定任何一对精确覆盖(从每个生态系统中获取精确覆盖)是否完美对齐。你觉得对吗?
  • 加上“对齐”考虑到检测到的基于规则的扩展的概念,是的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-02-06
  • 2011-02-25
  • 1970-01-01
  • 1970-01-01
  • 2018-09-22
  • 1970-01-01
  • 2011-05-23
相关资源
最近更新 更多