0-1プログラミングのための正確な指数時間アルゴリズム


10

単純なアルゴリズムに勝る次の問題の既知のアルゴリズムはありますか?

入力:AシステムM不等式線形。Axbm

出力:実行可能解が存在する場合。x{0,1}n

bに整数のエントリがあると仮定します。私は最悪の範囲に興味があります。Ab

回答:


14

場合は超線形である連言標準形で式が0-1プログラミングの特殊なケースであり、Sparsification補題は私たちが軽減することを可能にするので、このようなアルゴリズムは、強い指数時間仮説を反証となるk個の線形多くの条項にCNF-SATに-SATを。mk

ただし、ワイヤの数、つまりAの非ゼロ係数の数が線形である場合、Impagliazzo、Paturi、および私自身によるこのような不等式のシステムを解決できるアルゴリズムがあります。特に、ワ​​イヤーの数がc nの場合、アルゴリズムは時間2 1 s nで実行されます。ここで、s = 1Acn2(1s)ns=1cO(c2)


1

が十分に小さい場合、ナイーブアルゴリズムよりも優れています。つまり、2 n時間よりも優れています。ここで「十分に小さい」とは、mn / lg nのようなものよりも小さいことを意味します。実行時間は依然として指数関数的です(たとえば、2 n / 2時間など)。ただし、単純なアルゴリズムよりは高速です。m2nmn/lgn2n/2

ちなみに、これは、行列Aのエントリ数が超線形である場合に、時間よりも早く問題を解決できるように見えます。私はそれをここで提供される他の答えで二乗する方法を知りません。したがって、私の答えを注意深く確認する必要があります。それは、私がどこかで重大なミスを犯したことを示している可能性があります。2nA


基本的なアプローチ:書き込みX 0は、最初の保持N / 2の構成要素をX及びX 1は、最後の保持N / 2の成分と、同様にA = A 0A 10が左有するN / 2の列A及びA 1Nをx=(x0,x1)x0n/2xx1n/2A=(A0,A1)A0n/2AA1列。今 A X Bは形式で書き換えることができますn/2Axb

A0x0+A1x1b,

または同等に、

A0x0bA1x1.

すべての列挙の可能性をA 0 、X 0、およびlet Sはすなわち、可能な値の集合を表し、2n/2A0x0S

S={A0x0:x0{0,1}n/2}.

T2n/2bA1x1

T={bA1x1:x1{0,1}n/2}.

今問題は

S,TZm2n/2sStTst

sitii

O(2n/2(n/2)m1)mn/lgn2n


m=1m=1xi=1A1,i0xi=0x


1
私の回答のアルゴリズムは、同じ方法を使用して回答で説明されているベクトルの問題にも還元されます。つまり、変数を分割して、すべての割り当てをリストします。
Stefan Schneider

2
2O(m)
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.