找到找到更高组合键所需的最佳低键组合

时间:2017-11-17 06:15:55

标签: algorithm collections combinations

更新:对于以下问题,请参阅最长公共子序列方法的指示。

我遇到了一个案例,其中给出了一个集合地图,条目如下;

<A1, List1>
<A2, List2>
<B1, List3>
<B2, List4>
<C1, List5>
<C2, List6>
<D1, List7>
<D2, List8>

A)以固定的时间间隔,地图中的所有集合都会更新。

B)每次更新发生时,我都需要根据map键的组合在集合中找到元素的交集。使用上面的示例地图;

每次更新时,

必须找到2个组合键的元素交集

    (2 key combinations)
    ————————————————————
    (A1-B1)
    (A1-B2)

    (A1-C1)
    (A1-C2)

    (A1-D1)
    (A1-D2)

    (B1-C1)
    (B1-C2)

    (B2-C1)
    (B2-C2)

    (B2-D1)
    (B2-D2)

    (C1-D1)
    (C1-D2)

    (C2-D1)
    (C2-D2)

其次是;

C)找到3个组合键的交集

    (3 key combinations)
    ————————————————————
    (A1-B1-C1)
    (A1-B1-C2)

现在找到3键组合A1-B1-C1,可以通过组合

的2个键组合来完成
    (A1-B1) && (B1-C1)     OR       (A1-C1) && (B1-C1)

所以,如果我使用(A1-B1)&amp;&amp; (B1-C1),根本不需要找到(A1-C1)的组合,因为它是多余的。

D)如C中所述,如何找到找到更高组合键所需的最佳低键组合?             在实际场景中,我正在使用200多个键来获得可能的组合。请注意,较高的组合键只有几百种,而不是所有可能的组合。

(为约瑟夫的评论添加额外的澄清)

E)我需要找到(n-1)关键元组合的原因是因为它可以用于计算其他(n)关键元组。

继续上面的例子:

考虑一下我想要计算

的3键组合
    (A1-C1-D1) AND (A1-C1-D2). 

现在,不计算(A1-B1)的2键组合而是计算(A1-C1)。由于这样的事实,(A1-C1)的结果可以依次用于计算(A1-B1-C1),(A1-C1-D1)&amp;的三键,三键组合。 (A1-C1-D2)。在(A1-B1)的情况下,它只能用于计算(A1-B1-C1)的1个3键组合

F)因此,我想找到一种方法来找出可用于计算n-key元组组合的最优(n-1)个关键元组。

更新:了解如何使用最长公共子序列。

0 个答案:

没有答案