Мінімальна вага лісу даної кардинальності


11

Це питання було мотивоване запитанням про stackoverflow .

Припустимо, вам задано вкорінене дерево (тобто є корінь і у вузлів є діти тощо) на вузлах (позначено ).n 1 , 2 , , nTn1,2,,n

Кожна вершина має невід'ємну цілу вагу: .ш iiwi

Крім того, вам дається ціле число , таке, що .1 k nk1kn

Вага набору вузлів - сума ваг вузлів: .S { 1 , 2 , , n } s S w sW(S)S{1,2,,n}sSws

Дано вхід , і ,ш я кTwik

Завдання - знайти підлісок мінімальної ваги * , , такий, що має рівно вузлів (тобто ).T S k | S | = > kSTSk|S|=>k

Іншими словами, для будь-якого підлісового з , такого, що , ми повинні мати . T | S | = k W ( S ) W ( S )ST|S|=kW(S)W(S)

Якщо кількість дітей кожного вузла було обмежено (наприклад, двійкові дерева), то існує алгоритм поліноміального часу, що використовує динамічне програмування.

У мене є відчуття, що це NP-Hard для загальних дерев, але я не зміг знайти жодних посилань / доказів. Я навіть зазирнув сюди , але не зміг знайти щось, що могло б допомогти. У мене є відчуття, що це залишиться NP-Hard, навіть якщо ви (а це може бути простіше довести).wi{0,1}

Здається, це має бути добре вивченою проблемою.

Хтось знає, чи це проблема NP-Hard / чи відомий алгоритм часу P?


* Суб-ліс являє собою підмножину вузли дерева , такі , що якщо , то всі діти знаходяться в теж. (тобто це розрізнений союз укорінених під дерев ).S T x S x S TTSTxSxST

PS: Вибачте, будь ласка, якщо виявиться, що я пропустив щось очевидне і питання справді поза темою.


Я дуже підозрюю, що на це є проста відповідь, але це все-таки розумне питання.
Суреш Венкат

Відповіді:


7

Подібно до рішення для двійкового дерева, ви можете вирішити його в поліноміальний час на дереві без обмеження ступеня: По-перше, узагальнити задачу таким чином, щоб кожен вузол також мав "count" , і проблема полягає у пошуку підлісових лічильника . Узагальнити підхід до динамічного програмування до цієї версії (він як і раніше працює з таблицею, з урахуванням фіксованого рахунку , який мінімальний ваговий ліс у піддереві, що має точно підрахунок ) S k = i S c i C Cci{0,1}Sk=iSciCC

Зберігайте оригінальне дерево з вузлами підрахунку 1. Кожен вузол зі ступенем більше 2 розбивається на двійкове дерево з градусами (форма не має значення). Нові вузли мають кількість і вагу 0. Розв’яжіть проблему на новому дереві. Під час читання рішення ігноруйте будь-який новий вузол; це все одно буде ліс такої ж ваги. Оскільки будь-який оригінальний підлісок перетворюється на новий підлісок такої ж ваги, знайдений підлісок є оптимальним.( v )v(v)


Ви повинні адаптувати параметр щоб отримати еквівалентність оптимальних рішень. k
Марк Бері

Гарна думка. Я відповідно зміню свою відповідь.
Riko Jacob
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.