0-1 Лінійне програмування: обчислення оптимальної рецептури


14

Розглянемо н розмірний простір {0,1}н , і нехай c є лінійним обмеженням виду a1x1+a2x2+a3x3+ ... +an1xn1+anxnk , де , іx i{ 0 , 1 } k RaiRxi{0,1}kR.

Зрозуміло, що має ефект розщеплення на два підмножини і . містить усі та тільки ті точки, що задовольняють , тоді як містить усі та лише ті точки, які фальсифікують .{ 0 , 1 } n S c S ¬ c S c c S ¬ c cc{0,1}nScS¬cSccS¬cc

Припустимо, що . Тепер нехай є підмножиною таким, що всі три наступні твердження містять:O S c|Sc|nOSc

  1. O містить рівно балів.n
  2. Такі точок лінійно незалежні.n
  3. Такими точками є ті, що знаходяться на мінімальній відстані від гіперплощини, представленої . Точніше, нехай - відстань точки від гіперплощини . Тоді, таким чином, що задовольняє 1 і 2, це випадок, що . Іншими словами, серед усіх підмножин задовольняють умовам 1 і 2, є тим, що мінімізує суму відстаней його точок від гіперплощини .c d ( x , c ) x { 0 , 1 } n c B S c B x B d ( x , c ) x O d ( x , c ) O S c cncd(x,c)x{0,1}ncBScBxBd(x,c)xOd(x,c)OScc

Запитання

  1. З огляду на , чи можна обчислити ефективно? ОcO
  2. Який найвідоміший алгоритм для його обчислення?

 

Приклад з n=3

Приклад з n = 3

, O = { ( 0 , 0 , 1 ) , ( 1 , 1 , 1 ) , ( 1 , 0 , 0 ) } .S¬c={(1,0,1)}O={(0,0,1),(1,1,1),(1,0,0)}

 

Оновити 05.12.2012

Мотивація

Мотивація , що використання має бути можливим , щоб визначити оптимальне обмеження гр * , як це повинно бути гіперплоскость визначається п точок O . OcnO

Оптимальне обмеження - це те, що призводить до оптимального багатогранника P .cП

Оптимальним політопом є той, вершини якого всі, і лише цілі вершини початкового багатогранника Р (ціла вершина - це вершина, координати якої цілі).ПП

Оптимальне складання

Процес може бути повторений для кожного обмеження екземпляра I 0-1 L P , кожен раз замінюючи c відповідним оптимальним обмеженням c . Зрештою, це призведе до оптимальних багатогранника P * від I . Тоді, оскільки вершини Р * все і тільки цілі вершини вихідного багатогранника P з I , будь-який алгоритм для L P може бути використані для обчислення оптимальних цілочисельного рішення. Я знаю , що , будучи в стані обчислити P * ефективно буде означати РcLПЯccПЯППЯLПП , однак наступне додаткове питання все ще залишається:П=NП

Додаткове запитання

Чи є якась попередня робота за цими напрямками? Хтось уже досліджував завдання обчислення, задавши політопу , його відповідний оптимальний політоп Р ? Який найвідоміший алгоритм для цього?ПП


Здається, це складно зробити NP, зменшивши суму підмножини. Давши двійкові цілі числа , щоб перевірити, чи є підмножина, підсумовуючи s , ми можемо перевірити, чи є точка на гіперплощині v 1 x 1 + + v 1 x n = s . Вас цікавлять наближення? v1,,vnsv1x1++v1xn=s
Колін МакКійлан

@ColinMcQuillan: Питання було призначене для точного вирішення, однак мене, безумовно, цікавлять також наближення. Чому ви не перетворите свій коментар у відповідь?
Джорджіо Камерані

@ColinMcQuillan: Крім того, ваша гіперплан визначається за допомогою рівності, а моя визначається за допомогою нерівності. Ви впевнені, що це не має жодних змін у твердості? Я цього ще не перевіряв, тому просто запитую.
Джорджіо Камерані

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

Відповіді:


6

Здається, це складно зробити NP, зменшивши суму підмножини. Припустимо , що ми мали ефективну процедуру для обчислення . З огляду на додатні цілі числа v 1 , , v n, закодовані у двійковій формі, ми хочемо перевірити, чи є підмножина підсумовування до s . Попередньо обробити, викинувши цілі числа, більші ніж s .Ov1,,vnss

Викличте процедуру, щоб отримати невеликий набір точок, що задовольняє v 1 x 1 + + v 1 x ns , що відповідає вашим умовам мінімальності (попередня обробка забезпечує | S c |n ). Цей набір, безумовно, буде містити крапку на гіперплані v 1 x 1 + + v 1 x n = s, якщо така є.Ov1x1++v1xns|Sc|nv1x1++v1xn=s


Можливо, я тут не маю на увазі щось макроскопічне, але у мене є 2 питання: 1) Коли ви говорите "Дані двійкові цілі числа", що ви маєте на увазі під двійковим ? належать R . Можливо, ви маєте на увазі закодовані у двійковій формі? А може, ти хотів сказати позитив? 2) Навіщо викидати всі цілі числа, більші за s ? Вони можуть сприяти вирішенню. Наприклад: v 1 = - 3 , v 2 = 7 , v 3 = - 5 ,v1,...,vnRs якщо ви викинете v 2, ви втратите єдине рішення { v 2 , v 3 } . v1=3,v2=7,v3=5,s=2v2{v2,v3}
Джорджіо Камерані

2
Я думаю, що означає Колін, що якщо коефіцієнти обмеження є раціональними числами, у їх звичайному бінарному поданні, то ваша проблема видається NP-важкою. (Змішування реальних чисел і твердості NP завжди складне.)ai
Jeffε

1
@GiorgioCamerani: Мені потрібно було сказати позитивно - я оновив свою відповідь.
Колін МакКійлан

1

Мені здається, ви намагаєтеся потрапити на опуклий корпус IP - по суті, саме цього намагаються досягти алгоритми вирізання. Незважаючи на те, що привабливі ці методи практично погані.

Існує вся теорія щодо генерування дійсних нерівностей. Гарною відправною точкою буде теорія книг Шрівера про ціле програмування.

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