Мінімізуйте максимальну складову суми векторів


11

Я хотів би дізнатися щось про цю проблему оптимізації: Для заданих невід’ємних цілих чисел ai,j,k знайдіть функцію f мінімізуючи вираз

maxkiai,f(i),k

Приклад, що використовує іншу формулювання, може зробити це зрозумілішим: вам надають набір векторів на кшталт

{
    {(3, 0, 0, 0, 0), (1, 0, 2, 0, 0)},
    {(0, 1, 0, 0, 0), (0, 0, 0, 1, 0)},
    {(0, 0, 0, 2, 0), (0, 1, 0, 1, 0)}
}

Виберіть по одному вектору з кожного набору, щоб максимальна складова їх суми була мінімальною. Наприклад, ви можете вибрати

(1, 0, 2, 0, 0) + (0, 1, 0, 0, 0) + (0, 1, 0, 1, 0) = (1, 1, 2, 1, 0)

з максимальним компонентом, рівним 2, що тут явно оптимально.

Мені цікаво, чи це загальновідома проблема і які методи конкретного рішення для конкретних проблем доступні. Він повинен бути швидким і легким для програмування (без вирішення ILP тощо). Точне рішення не потрібно, оскільки це лише наближення реальної проблеми.


Я бачу, що я повинен був додати деякі деталі щодо проблемних примірників, які мене цікавлять:

  • i{0,1,,63} , тобто завжди є 64 рядки (коли написано, як у наведеному вище прикладі).
  • j{0,1} , тобто є лише 2 вектори на рядок.
  • k{0,1,,N1} де (довжина вектора) становить від 10 до 1000.N

Причому в кожному рядку сума елементів усіх векторів однакова, тобто

i,j,j:kai,j,k=kai,j,k

а сума елементів вектора суми менша за його довжину, тобто

kiai,f(i),k<N

4
Не важко звести 3-роздільну проблему до вашої проблеми. Це означає, що ваша проблема є NP-повною, навіть якщо цифри задані одинарними, і це виключає один із поширених підходів алгоритму наближення.
Цуйосі Іто

Дякуємо за виправлення та дякую @Tsuyoshi Ito за ознайомлення. Якщо я правильно це розумію, обмеження на два вектори на рядок (який я забув зазначити) приводить до недійсності зменшення і може значно полегшити проблему.
maaartinus

Ви маєте рацію, зменшення проблеми з 3-х розділів, про яку я думав, не спрацьовує, якщо в ряд є лише два вектори.
Tsuyoshi Ito

Отже, є комбінації для порівняння? ji
Джейсон Клебан

@ uosɐſ: Якщо бути точним, є можливі комбінації, де - кількість можливостей для а - кількість можливостей для . JI=264J=2jI=64i
maaartinus

Відповіді:


7

Зменшення від 3SAT до двовекторної версії: задана формула, нехай індексує змінні, та індексні пропозиції. Нехай - кількість разів змінної відображається позитивно (якщо ) або негативно (якщо ) у пункті . OPT менше якщо формула є задоволеною (біекція очевидна).ij{0,1}kai,j,kij=0j=1k3

Як я б атакував цю проблему: великий пошук в околицях. Почніть з будь-якого рішення. Вибирайте рядки навмання Використовуйте грубу силу, щоб знайти найкраще рішення, де може змінюватись лише на цих рядках - це дуже можливо навіть для помірного враховуючи, що розмір проблеми становить рядки. Повторіть.rfk64


1
Це прекрасне зменшення. Я не впевнений, чому він не має жодних голосів. У всякому разі, ось мій +1.
Цуйосі Іто,

1
Я думаю, вам слід детальніше розглянути питання щодо зменшення. Зокрема, у вас є захований добре, може бути , занадто добре, як це робить біекція трохи важко побачити. f
Рафаель

7

Ми не можемо обговорювати складність проблеми, коли розмір проблеми фіксується на константу, оскільки (більша частина) теорія складності стосується асимптотичної поведінки складності проблеми, оскільки розмір проблеми має тенденцію до нескінченності. Тут я вважаю як кількість рядків, так і розмірність векторів змінними.

Тоді проблема не заповнена NP, навіть якщо цифри на вводі задані неоднаково. Це не відповідь на ваше запитання, оскільки ви питаєте про наближення, але це щось.

Визначте проблему жорстко:

Екземпляр : n пар векторів a i , b i ∈ ℕ m ( i ∈ {1,…, n }) і K ∈ ℕ, всі в одинаковому.
Питання : Чи можна вибрати або я або б я для кожного я так , що сума цих п векторів має не більше K в кожній координаті?

Далі відома проблема NP-завершення під назвою 3-роздільний :


Екземпляр 3-розділів : B ∈ ℕ і 3 k цілих чисел c 1 ,…, c 3 k між B / 4 і B / 2, виняткові, такі, що ∑ i = 1 3 k c i = kB , всі в одиниці.
Запитання : Чи може бути множинне { c 1 ,…, c 3 k } поділене на k багатозначних S 1 ,…, S k таким чином, що сума кожного S j дорівнюєБ ?

З огляду на екземпляр ( B ; c 1 ,…, c 3 k ) задачі з 3-х розділів, побудуйте екземпляр зазначеної проблеми наступним чином. Для кожного я = 1, ..., 3 K і J = 1, ..., до , ми побудуємо пару 4 до - мірних векторів, що представляє вибір на чи з я належу S J чи ні:

  • Вектор, що представляє вибір " c iS j ", має лише один ненульовий запис, який є ( k −1) c i на j- й координаті.
  • Вектор, що представляє вибір " c iS j ", також має лише один ненульовий запис, який є B у ( k + i ) -й координаті.

Не важко бачити , що примірник ( B , C 1 , ..., з 3 до ) завдання 3-розбиття має рішення тоді і тільки тоді , коли є спосіб вибрати вектор з кожних з 3 до 2 , побудованим пари , так що всі координати суми цих векторів НЕ перевершує ( до -1) B . (Насправді, коли це трапляється, всі координати суми дорівнюють ( k −1) B ). Отже, це зменшення від задачі на 3 розділи до вищезазначеної проблеми.

Поки я проігнорував два додаткові обмеження, викладені в кінці питання, але обидва їх легко виконати, змінивши це зменшення трохи. Умова, що сума елементів кожного вектора дорівнює, може бути виконана шляхом додавання фіктивних координат, які містять лише 0 або 1. Умова, що ця сума менша за розмір, може бути виконана шляхом додавання макетних координат, які містять лише 0.


Приємна відповідь, лише кілька зауважень: 1. Мене не хвилює теоретична складність тут. 2. Кількість рядків є фіксованою і може залишатися такою, як достатньо різногоЦе сказав, спасибі велике. N
maaartinus
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.