Вирішіть, чи містить ядро ​​матриці який-небудь ненульовий вектор, усі записи якого становлять -1, 0 або 1


27

Враховуючи двійкову матрицю m від m (записи дорівнюють 0 або 1 ), задача полягає у визначенні, чи існує два двійкові вектори v 1v 2, такі, що M v 1 = M v 2 (усі операції, що виконуються над Z ). Ця проблема NP-важка?nM01v1v2Mv1=Mv2Z

Це чітко в НП, оскільки ви можете дати двох векторів як свідків.


Еквівалентно: Дано M , чи існує ненульовий вектор v{1,0,1}n такий, що Mv=0 ?

Еквівалентно: Дано n векторів X={x1,,xn} над {0,1}m , чи існують дві різні підмножини A,BX такі, що xAx=xBx ?


Якщо я неправильно зрозумів питання, чи це не рівнозначно визначенню, чи існує ненульовий v такий, що Mv=0 ? І чи це не вирішується шляхом визначення рангу M ?
mhum

8
@mhum ні, це рівнозначно визначенню, чи є ненульовий v{1,0,1}n такий, що Mv=0 .
Сашо Ніколов

Ага. Я пропустив, що vi також повинен був бути двійковим. Моя помилка.
mhum

2
Схоже, проблема техніко-економічного обґрунтування для програмування 0/1-Integer. Чи є операції над Z або над Z2 ?
Каве

3
Переформулювання задачі: Дано векторів X = { x 1 , , x n } понад { 0 , 1 } m . Чи є дві різні підмножини A , B X такі, що x A x = x B x ? Я б подумав, що більше шансів бути NP-важким, якщо суми не беруться за модулем два, тобто операції закінчуються ZnX={x1,,xn}{0,1}mA,BXxAx=xBxZ
Джон Д.

Відповіді:


7

Я використовую еквівалентну формулювання user17410:

Вхід: векторів X = { x 1 , , x m } над { 0 , 1 } n , n є частиною вхідного питання: Чи є два різні підмножини A , B X такі, що x A x = x B xnX={x1,,xm}{0,1}nn
A,BX

xAx=xBx

Доказ твердості передбачає безліч проміжних скорочень, що слідують за тією ж "ланцюжком", що використовується для доведення твердості стандартної проблеми РІВНІ ПІДСТАВЛЕННЯ СУМ:

X3C SUBSET SUM PARTITION EVEN-ODD PARTITION EQUAL SUBSET SUM

(Я все ще перевіряю це, щоб це було неправильно :)

КРОК 1

Наступна проблема ( 0-1 ПІДСУМКА ВЕКТОРА ) NP-повна: задано вектори , x i над { 0 , 1 } n та цільовий вектор t , вирішіть, чи є A X такий, що x A x = t Доказ : Пряме зменшення від ТОЧНОГО ПОКРИТТЯ НА 3-НАСТРОЙКИ (X3C): задано набір n елементів Y = { yX={x1,,xm}xi{0,1}ntAX

xAx=t
n і набір С з М трьох елементів підмножин C = { C 1 , . . . , C m } ми будуємо відповідне встановлення екземпляра 0-1 VECTOR SUM x i [ j ] = 1, якщо і тільки якщо елемент j включений у C i ; т = [ 1 , 1 , . . .1Y={y1,...,yn}CmC={C1,...,Cm}xi[j]=1jCi .t=[1,1,...1]

КРОК 2 Знаходження двох рівних підмножин серед m 0-1 векторів понад { 0 , 1 } n , еквівалентне знаходженню двох рівних підмножин A , B векторів з елементом обмеженого розміру x 1 . . . x m де m a x { x i } = O ( ( m n ) k ) для нерухомого k .A,Bm{0,1}nA,Bx1...xmmax{xi}=O((mn)k)k

Наприклад, набір векторів:

x1 2 1 0 1
x2 1 2 3 1

Еквівалентний векторам 0-1:

x1  1 1 0 1   1 0   0 0 0
    1 0 0 0   0 1   0 0 0 
    0 0 0 0   1 1   0 0 0 
              ^ ^
                +-- 0 elsewhere

x2  1 1 1 1   0 0   1 0 0
    0 1 1 0   0 0   0 1 0
    0 0 1 0   0 0   0 0 1
    0 0 0 0   0 0   1 1 1
                    ^ ^ ^
                      +-- 0 elsewhere

Неформально вектори 0-1 групуються (якщо ви вибрали один вектор групи x2 і додали його до підмножини , то ви змушені включити в A інші два і помістити останній у підмножину B ), і суми виконані в одинарний (це причина, чому відповідні не бінарні вектори повинні містити елементи, поліноміально обмежені відносно m n ).AABmn

Отже, наступна проблема не є повною.

КРОК 3

B={x1,,xm}xi{0,1}nXB1,B2

xB1x=xB2x

X={x1,,xm}tS=xiXb=t+2Sb=t+SB=X{b,b}

( ) Припустимо, що існує такий, що ; встановлюємо і ; маємо AXxAx=tB1=A{b}B2=BB1=X{A}{b}

xB1=b+xAx=tt+S=2S
xB2=b+xXAx=b+SxAx=2S

( ) Припустимо, що і мають рівну суму. не можуть обидва належати одній множині (інакше їх сума дорівнює і не може бути "врівноважена" елементами іншого набору). Припустимо, що ; ми маємо:B1B2b,b3Sb=t+2SB1

t+2S+xB1{b}x=t+S+xB2{b}x

Отже, ми повинні мати а є правильним рішенням для 0-1 ВЕКТОРНОЇ СУМИ.xB1{b}x=tB1{b}

У множині ми допускаємо лише 0-1 векторів , тому вектори повинні бути "представлені одинарними", як показано на КРОКІ 2.Bb,b

КРОК 3

Проблема все ще є NP-повною, якщо вектори пронумеровані з і два підмножини повинні мати однаковий розмір, і нам потрібно, щоб містив точно один з для (значить, через обмеження рівних розмірів, інший елемент пари повинен бути включений у ) ( 0-1 ВЕКТОР НАДІЙЧИЙ ПАРТІЯ ).x1,...,x2nX1,X2X1x2i1,x2i1inX2

Доведення: зменшення становить від 0-1 ВЕКТОРНА ПАРТІЯ та аналогічне зменшенню від ЧАСТИНИ до ВІДЧУТНОЇ ЧАСТИНИ. Якщо є вектори над замінити кожен вектор з двома векторами над :X={x1,...,xm}m{0,1}n{0,1}2n+2m

       1   2       n
 --------------------
 x_i  b_1 b_2 ... b_n

 becomes:

           1 2 ... 2i ... 2m
  --------------------------
  x'_2i-1  0 0 ...  1 ...  0  b_1 b_2 ... b_n   0   0  ...  0  
  x'_2i    0 0 ...  1 ...  0   0   0  ...  0   b_1 b_2 ... b_n 

Через елемент вектори і не можуть міститися в одному підмножині; і чинне рішення 0-1 ВЕКТОРНОГО ВАРІТТЯ ВЕКТОР відповідає дійсному рішенню оригінального 0-1 ВЕКТОРНОГО РОЗДІЛУ (просто виберіть елементи 2m + 1..2m + n кожного вектора розчину, відкидаючи вектори, які містять усі нулі в тих позиціях).2ix2i1x2i

КРОК 4

0-1 ВЕКТОРНА РІВНОВА ПІДПРИЄМСТВО (проблема у питанні) не завершена NP: зменшення від 0-1 ВЕКТОРНОГО ЧАСНОГО ПАРТІЮ, аналогічного зменшенню з ЧАСУ ДЕТАЛЬНОГО ЧАСУ до РІВНОГО ПІДЛОСУ, як це було доведено Герхардом Дж. , Zhongliang Ю., про проблему рівного підмножини суми : дан впорядкована множина з векторів над , ми будуємо задаємо з векторів над .A={x1,...,x2m}2m{0,1}nY3m{0,1}2m+n

Для кожного вектора будуємо вектор над таким чином:x2i1,1imy2i1{0,1}2m+n

  1 2 ... i i+1 ... m  m+1 m+2 ... m+i ... 2m  2m+1 ... 2m+n
  ------------------------------------------------------
  0 0 ... 2  0  ... 0   0   0       1       0  x_{2i-1}

Для кожного вектора будуємо вектор над таким чином:x2i,1im1y2i{0,1}2m+n

  1 2 ... i i+1 ... m  m+1 m+2 ... m+i ... 2m  2m+1 ... 2m+n
  ------------------------------------------------------
  0 0 ... 0  2  ... 0   0   0       1       0  x_{2i}

Відображаємо елемент наx2m

  1 2 ...       ... m  m+1 m+2 ...  . 2m  2m+1 ... 2m+n
  ------------------------------------------------------
  2 0 ...       ... 0   0   0          1  x_{2m}

Нарешті додаємо манекенних елементів:m

  1 2 ...       ... m  m+1 m+2 ...  ... 2m  2m+1 ... 2m+n
  ------------------------------------------------------
  4 0 ...       ... 0   0   0            0  0    ... 0
  0 4 ...       ... 0   0   0            0  0    ... 0
  ...
  0 0 ...       ... 4   0   0            0  0    ... 0

Зауважимо ще раз, що вектори, що містять значення можуть бути представлені в "одинарних", використовуючи групу 0-1 векторів, як показано на етапі 2.>1

Y має два непересічні підмножини мають рівну суму, якщо і лише тоді, коли має непарний розділ. Y1,Y2X


те, що ви називаєте 0-1 векторним розділом, еквівалентно проблемі визначення, чи є у множинної системи невідповідність 0. це NP важко, оскільки він фіксує, наприклад, проблему розщеплення 2-2 набору, див. thm 9 у цьому документі від guruswami cs.cmu.edu/~venkatg/pubs/papers/ss-jl.ps ; у моєму документі трохи більше про твердість розбіжності paul.rutgers.edu/~anikolov/Files/charikarM.pdf
Ніколов

також я вважаю, що ви неправильно вказали рівну проблему з розділами. якщо жодних двох послідовних векторів не може бути в одному наборі, проблема тривіальна. я вважаю, ви маєте на увазі, що потрібно для всіх і|Xi{x2j1,x2j}|=1i{1,2}1jm
Сашо Ніколов

@SashoNikolov: так, я маю на увазі, що для кожної пари (а в доказі ) рівно один включено до ; Я відредагую відповідь(x2i1,x2i)(x2i1,x2i)X1
Marzio De Biasi

8

EDIT: У моєму оригінальному доказі була помилка. Зараз я вважаю, що це виправлено.

Ми зводимо проблему РІВНІ ПІДСУМКИ до цієї проблеми. РІВНОВІ ПІДПРИЄМСТВА - це проблема: задавши набір цілих чисел, знайдіть два суміжні підмножини, які мають однакову суму. Рівносумісні підсистеми, як відомо, є NP-завершеними.m

Припустимо, ці бітові рядки були не векторами, а поданням бітних чисел у двійкових. Тоді ця проблема була б повна NP шляхом зменшення рівня РІВНІ ПІДСУМКИ. Я покажу, як змусити вектори вести себе так, як вони є двійковими числами. Що нам потрібно - це вміти робити несе; тобто для кожної пари сусідніх координат нам потрібно мати можливість замінити вектор ..02 .. на ..10 ...n

Як ми можемо це зробити? Нам потрібен гаджет, який дозволяє нам це робити. Зокрема, нам потрібні дві підмножини, суми яких складають ..02 .. x та ..10 .. x, де x - це бітний рядок із використанням нових координат (тобто координат, які не є жодною з координат, що складають двійкові представлення), і де існує лише один спосіб створити дві підмножини з однаковою сумою в нових бітових позиціях, що відповідають х.n

Це зробити досить просто. Для кожної пари сусідніх бітових позицій додайте три вектори наступної форми. Тут два останніх біта є координатами, які є ненульовими лише в цих трьох векторах, і кожен біт, який явно не вказаний нижче, дорівнює 0.

..10 .. 11
..01 .. 10
..01 .. 01

Дозвольте зробити приклад. Ми хочемо показати, як працює 5 + 3 = 8.

Ось 8 = 5 + 3 у двійковій формі:

1000

=

0101
0011

Ці бітові рядки дають однакову суму у двійкових, але не у векторному додаванні.

Тепер у нас є носії в 1, 2, 4 місцях, тому нам потрібно додати три рівняння з трьох векторів до рівняння, щоб виконати ці носії.

1000 00 00 00
0001 00 00 01
0001 00 00 10
0010 00 01 00
0010 00 10 00
0100 01 00 00
0100 10 00 00

=

0101 00 00 00 00
0011 00 00 00
0010 00 00 11
0100 00 11 00
1000 11 00 00

Ці множини тепер мають однакову суму у векторному додаванні. Суми:

1222 11 11 11

в обох випадках.

Ця конструкція чудово працює, якщо є лише одна перенос на одну позицію, але потенційно може бути до переносів на одну позицію, і вам потрібно переконатися, що ваша конструкція може обробляти до носіїв, і що різні вагони не заважають один з одним. Наприклад, якщо ви додали два різних набори з трьох векторів для однієї пари сусідніх позицій (що я запропонував у своєму оригінальному доказі):nn

..01 .. 01 00
..01 .. 10 00
..10 .. 11 00
..01 .. 00 01
..01 .. 00 10
..10 .. 00 11

у вас є проблема, що ви отримуєте два різних набори векторів, що дають однакову суму:

..01 .. 01 00
..01 .. 10 00
..10 .. 00 11

=

..01 .. 00 01
..01 .. 00 10
..10 .. 11 00

Як це виправити? Додайте один набір векторів, який дозволяє перенести 1, один набір, який дозволяє переносити 2, і один набір для 4, 8, , 2 . Я зараз не збираюся опрацьовувати деталі цієї конструкції, але це має бути досить просто. Оскільки кожне число має унікальне двійкове представлення, це дозволить вам перенести будь-яке число до . Наприклад, для перенесення 4, вам потрібно знайти чотири вектори, які мають однакову суму, як два вектори, і для яких це єдине лінійне відношення між двома множинами. Наприклад, набірlognn

..01 .. 11000
..01 .. 00100
..01 .. 00010
..01 .. 00001
..10 .. 10001
..10 .. 01110

працює. Ви можете легко перевірити, що це відношення

11000
00100
00010
00001

=

10001
01110

є єдиним можливим відношенням між цими шістьма векторами, оскільки матриця, утворена цими шістьма рядами, має 5 ранг.


Пояснення, ви говорите: "Зараз у нас є 1, 2, 4 місця"; але в проблемі ми не знаємо, які вектори обрані, тому ми повинні додати гаджет для перенесення у кожне сусіднє бітове положення? І в першому списку прикладу є 7 векторів, це правильно?
Marzio De Biasi

Припустимо, є розв’язання задачі про суму підмножини. Тобто: у нас 3 + 5 = 8. Тепер ми можемо подивитися на додаток у цьому свідку та дізнатись, де стоїть. Це дає нам рішення для задачі векторного додавання. Одна проблема має рішення, якщо і лише тоді, коли інша.
Петро Шор

Але як працює зменшення, наприклад, якщо екземпляр суми підмножини становить а цільова сума (що таке відповідний векторний екземпляр)? 2,3,5,78
Марціо Де Біасі

PS Я також знайшов доказ того, що проблема неповна, але вона набагато довша, ніж у вас, тому я намагаюся зрозуміти це ... простіше, краще :-)
Marzio De Biasi

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

3

Це не відповідає на запитання, але може містити корисні спостереження. Я не хотів ставити це як коментар, тому що мені здається, що довгі, фрагментовані коментарі нудно читати

Переформулювання проблеми, як зазначено в моєму коментарі до питання:

Вхід: векторів понад , - частина вводуnX={x1,,xn}{0,1}mm

Питання: Чи є два різні підмножини такі, що A,BX

xAx=xBx

Можливо, слід зазначити, що слід розглядати як багатозначні (вектори не повинні бути унікальними), а суми перевищують .X,A,BN

Я пропоную назвати цю проблему 2SUBSET-BINARY-VECTOR-SUM через те, що ми шукаємо 2 підмножини двійкових векторів.

Деякі спостереження:

  • Якщо містить один вектор кілька разів, відповідь стає тривіальною. Нехай і . Тоді працює як свідок.Xxi,xjXxi=xjA={xi},B={xj}

  • Якщо один з векторів у містить лише 0, це тривіально. Нехай є тим вектором. Тоді для кожного випливає, що є свідком.X0XAX{0}B=A{0}

  • Припустимо , що існує свідок таке , що . Це означає, що кожен вектор, який знаходиться в але не в повинен складатися лише з нулів.ABBA

  • Для підрахунку вищевказаних двох пунктів: свідок з існує, якщо принаймні один з векторів містить лише нуліA,BABX

  • Припустимо, існує свідок такий, що . Ви можете видалити загальні елементи в обох наборах і все одно мати правильне свідчення.A,BAB

Ці точки суттєво означають, що ви шукаєте розподіл на два набори ( ) або три множини. Третій набір являє вектори , які не були відібрані для будь-якого або . Нехай - номери Стірлінга другого роду - кількість способів розділити набір об’єктів на непусті розділи. Тоді є можливі рішення , тому груба сила тут неможлива.A B = X A B S ( n , k ) n k S ( n , 3 ) + S ( n , 2 )XAB=XABS(n,k)nkS(n,3)+S(n,2)

Якщо ви дозволяєте векторам перевищувати (2SUBSET-VECTOR-SUM), то ми можемо спробувати зменшити УНІКАЛЬНУ ДІЛЬНІСТЬ до цієї проблеми. Нехай і просто передає екземпляр UNIQUE-PARTITION (якщо він містить 0, видаліть його спочатку, щоб уникнути тривіальних рішень). Однак це не працює, оскільки можливі рішення не обов'язково містять усі вхідні елементи: m=1A,BNmm=1A,B

Розглянемо . Це не в UNIQUE-PARTITION, але у 2SUBSET-VECTOR-SUM. Можливо, використовуючи ми можемо використовувати додаткові векторні записи, щоб примусити розділити вхід.A = { 1 , 2 } , B = { 3 } m > 1 A , B{1,2,3,5}A={1,2},B={3}m>1A,B

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