Так, ця проблема, безумовно, непроста. Я надсилаю цю відповідь, оскільки вам потрібні докази.
Якщо ви переходите за цим посиланням http://en.wikipedia.org/wiki/Set_cover_problem , це говорить про те, що версія оптимізації мінімальної заданої кришки задає NP-Hard.
Проблема у посиланні:
Враховуючи набір елементів {1,2, ..., m} (що називається Всесвітом) та безліч S з n множин, об'єднання яких дорівнює Всесвіту, задача покриття множини полягає у визначенні найменшого підмножини S, об'єднання якого дорівнює Всесвіт. Наприклад, розглянемо Всесвіт U = {1, 2, 3, 4, 5} і безліч множин S = {{1, 2, 3}, {2, 4}, {3, 4}, {4, 5}}. Очевидно, що об'єднання S дорівнює U. Однак ми можемо охопити всі елементи наступною меншою кількістю наборів: {{1, 2, 3}, {4, 5}}
Ви можете пов’язати це зі своєю проблемою так:
S - це набір вузлів, що охоплюють щонайменше один вузол у вашому наборі входів. Це можна дізнатися, провівши DFS на вузлах вхідного набору з напрямком ребер, обернених назад.
Тепер проблема, описана у посиланні, - це особливий випадок вашої проблеми, коли вартість кожного вузла дорівнює, і ви просто хочете мінімізувати кількість вузлів (наборів).
Отже, вашу проблему ще важче вирішити в загальному випадку, а значить, це і є NP Hard.