問題を数えるための驚くべきアルゴリズム


54

(入力のサイズに関連して)指数関数的に多くのものをカウントすることを伴ういくつかのカウント問題がありますが、驚くべき多項式時間の正確な決定論的アルゴリズムを持っています。例は次のとおりです。

これらの例の両方で重要なステップは、特定のマトリックスの行列式を計算するためにカウントの問題を減らすことです。行列式自体はもちろん、指数関数的に多くのものの合計ですが、驚くべきことに多項式時間で計算できます。

私の質問は、行列式の計算に減らない問題を数えるために知られている「驚くほど効率的な」正確で決定論的なアルゴリズムはありますか?


8
ところで、さらに多くのカウントの問題は、行列式の計算に帰着します。#Lを含むクラスGapLの整数行列式は完全です。
5501

回答:


11

次の問題が行列式の計算を減らすかどうかはわかりませんが、とにかくリストします。

1)ノードからノードv fまでのDAG内のパスの数をカウントします。しかし、これは驚くことではありません。単にv fv 0から到達可能かどうかを判断することはNLにあり、したがってDETにあります。カウントバージョンについてはわかりません。v0vfvfv0

2)境界のあるツリー幅の構造でMSOロジックで定義可能な問題の解決策の数を数える。たとえば、Courcelle、Arnborgなどの作品についての論文を参照してください。

f:{0,1}n{0,1}xf(x)=1Uf|x|0|x|f(x)|1UfHn|0|0


ありがとう-項目(2)と(3)は興味深いですが、どういうわけか私が探していたものとはまったく異なります。制限されたツリー幅の問題を数えることは、作業している構造が実際に多項式で制限されている特別な場合のようです。カウントするオブジェクトが「本当に」指数関数的に多い場合にもっと興味がありましたが、多項式時間で魔法のように数えることができます。
アシュリーモンタナロ

それは、単項符号化を使用する場合、アルゴリズムが数値を書き込むためだけに指数関数的な時間を必要とすることを意味しませんか?この問題はバイナリエンコーディングを使用することで克服できる可能性がありますが、これは私にとってわかりにくいようです。
アントニオヴァレリオミチェリバローネ

2
@ Miceli-Barone、あなたが言うことは、数値を出力するほとんどすべてのポリタイムアルゴリズムに適用されます。最悪の場合、単項式では行列式自体がかなり大きくなります。
ラファエル

(n+1)n+122n


11

Holantフレームワークには、平面グラフのマッチゲートを経由する以外にも、扱いやすい(重要ではない)理由がいくつかあります。

1)フィボナッチゲート

2)アフィン署名のセット。

3)非負の加重#CSP

...いくつか例を挙げます。

また、アルゴリズムの一部は行列式計算を使用しますが、BEST定理は有向グラフのオイラー回路の数をカウントするための多項式時間アルゴリズムを提供します。

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