жадный алгоритм для набора обложек Stack Overflow

Минимальная обложка это вопрос, где вы должны найти минимальное количество наборов, необходимых для покрытия каждого элемента.
Например, представьте, что у нас есть набор X=array(1,2,3,4,5,6) и 5 другой набор S, где

S[1] = array(1, 4)
S[2] = array(2, 5)
S[3] = array(3, 6)
S[4] = array(1, 2, 3)
S[5] = array(4, 5, 6)

Проблема состоит в том, чтобы найти минимальное количество множеств S, которые покрывают каждый элемент X. Поэтому очевидно, что минимальное покрытие множеств в нашем случае будет S[4] а также S[5] потому что они охватывают все элементы.
Кто-нибудь есть идеи, как реализовать этот код в C ++. Обратите внимание, что это NP-полный, поэтому нет быстрого алгоритма для его решения. Любое решение в C ++ будет приветствоваться.
И, кстати, это не домашнее задание, мне нужно использовать этот алгоритм в Куайн-Маккласка проект для генерации последней части решения.
Заранее спасибо.

1

Решение

Задача ещё не решена.

Другие решения


По вопросам рекламы [email protected]