これは、よく言われなかった私の最近の別の質問[1]の書き直しです(これは、半ば明らかな単純化であり、計器でした)が、その中心にはまだ重要な問題があると思います。文献では同様の問題がありましたが、特にこの問題はありません。
それが私にとって最も簡単なので、ビットベクトルの観点からそれを書きます。
サイズ、のビットベクトルのセットがあるとします。ビット単位のXOR演算を検討してください。ターゲットベクトル与えられます。セットのビットごとのXORがターゲットベクトルと等しくなるようなベクトルのサブセットを見つけます。サブセットを見つけるための効率的な(または理想的には最適な)アルゴリズムとは何ですか?
総当たりアルゴリズムは、サイズパワーセットを列挙し、最初に見つかったサブセットをリストします。(わずかに?)より効率的には、ターゲットの1の位置を調べ、ターゲットの1の位置に1のベクトルが少なくとも1つないサブセットを除外します。
サブセットは存在する場合と存在しない場合があります。一意である場合とそうでない場合があります。
密接に関連する質問:(1)最小のサブセットを見つける、(2)そのようなサブセットが存在するかどうかに応じて出力T / F。
これらの問題の1つはNP完全であるという疑いがあります。
参照、洞察などを探す。「ハード」な入力と「イージー」な入力があるかどうかを知ることは興味深いでしょう。
私が他の質問で書いたように、これはNP完全であることが知られているサブセット合計問題(たとえば、garey&johnson refを参照)と密接に関連しているようですが、ベクトルビット単位のXORを計算する方が簡単であるため、複雑さが「少し」少ないようです2進和よりも大きい(和は2進数字を持つことができる)。
この問題は、bin fuの最近の質問[2]とも密接に関連しているようです。
[1] /cstheory/10341/building-0-1-vectors-out-of-xors
[2] アルゴリズムベクトル問題