2013-12-11 3 views
2

Мне нужен алгоритм для нахождения максимальной независимой подгруппы хешмапов, где она представлена ​​в массиве хэш-карт.Алгоритм для нахождения максимальной независимой подгруппы хэшмапов

Я попытался пройти через массив из HashMaps и отправлять и индекс каждый раз, и посмотреть, что HashMaps в массиве не независимой с HashMaps в этом индексе, он работал, но в случае

A and B independent 
B and C independent 
but A and C can be not independent 

Определение максимальной независимой подгруппы хэшмапов:

У меня есть массив, содержащий хэш-карты, каждый хэш-файл содержит ключ, каждые два хеш-карты называются независимыми, если каждый ключ в первом хэш-карте не содержится во второй карте, поэтому мне нужно найти подгруппу тех хэшмапов, которые все являются inde pendent

+2

Можете ли вы определить, что вы подразумеваете под «максимальной независимой подгруппой» хэш-карт? Возможно, сейчас я просто плотный. –

+0

@ Dennis Meng У меня есть массив, содержащий хэшмапы, каждый хэш-файл содержит ключ, каждые два хэш-карты называются независимыми, если каждый ключ в первом хэш-карте не содержится во второй карте , поэтому мне нужно найти подгруппу тех хэш-карт, которые все являются независимыми – user3092193

+2

@ user3092193 Помните, если вы добавите это в вопрос? Поиск того, что относится к вопросу в комментариях, не всегда легко для людей, которые спотыкаются на этот вопрос. –

ответ

0

Прежде всего, эта проблема NP-полная. Чтобы доказать это, предположим граф с индексированными ребрами. Создайте HashMap для каждой вершины и заполните ее индексами для каждого края инцидентности этой вершины. Тогда, если два HashMaps независимы, они не содержат одного и того же ребра, поэтому соответствующие вершины также независимы. Поиск максимального независимого подмножества этих HashMaps, следовательно, дает вам максимальный независимый набор в графе, который, как мы знаем, является NP-полным.

Вы можете решить эту проблему, построив граф с вершиной для каждого HashMap и добавив ребро для каждых двух зависимых HashMaps, а затем используя некоторый алгоритм для независимых множеств. Другой способ - взять граф дополнений и finde max clique.

Поскольку это неэффективно, вы можете использовать алгоритм с некоторым приближением.

Смежные вопросы