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


11

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

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

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

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

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

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

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

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

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

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

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

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


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

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


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

Відповіді:


7

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

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


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

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