我需要一种算法来查找最大的独立子组的哈希映射,其中它表示在一个哈希映射数组中。
我试图遍历哈希映射数组并每次发送和索引,看看数组中哪些哈希映射与该索引中的哈希映射不是独立的,它可以工作但是在
的情况下A and B independent
B and C independent
but A and C can be not independent
最大独立的哈希图子组的定义:
我有一个包含散列图的数组,每个散列映射包含一个键,如果第一个散列映射中的每个键都没有包含在第二个映射中,则每两个散列映射称为独立的,所以我必须找到这些散列映射的一个子集,它们都是独立的
答案 0 :(得分:0)
首先,这个问题是NP完全的。 为了证明这一点,假设一个带有索引边的图。 为每个顶点创建一个HashMap,并用该顶点的每个入射边缘的索引填充它。 然后,如果两个HashMaps是独立的,则它们不包含相同的边,因此相应的顶点也是独立的。 因此,查找这些HashMaps的最大独立子集会在图中为您提供最大的独立集合,我们知道这是NP完全的。
你可以通过构造一个图来解决这个问题,每个HashMap都有一个顶点,并为每两个依赖的HashMaps添加一个边,然后使用一些算法用于独立集。 另一种方法是采用补图和finde max clique。
由于效率低,您可以考虑使用一些近似算法。