サブグラフの長さが制限された無向グラフからすべての接続されたサブグラフを取得するための簡単なアルゴリズムを見つけようとしています。すべての頂点からの BFS や DFS などの単純な方法では、膨大な量の等しいサブグラフが生成されるため、アルゴリズムの反復ごとに、サブグラフ セットを削除する必要があります。私はロシアの数学フォーラムでアルゴリズムを見つけました:
Procedure F(X,Y)
//X set of included vertices
//Y set of forbidden vertices to construct new subgraph
1.if |X|=k, then return;
2.construct a set T[X] of vertices that adjacent to vertices from X (If X is a empty set, than T[X]=V), but not belong to the sets X,Y;
3.Y1=Y;
4.Foreach v from T[X] do:
__4.1.X1=X+v;
__4.2.show subgraph X1;
__4.3.F(X1,Y1);
__4.4.Y1=Y1+v;
Initial call F(X,Y):
X, Y = empty set;
F(X,Y);
このアルゴリズムの主なアイデアは、「禁止されたセット」を使用することです。これにより、このアルゴリズムは枝刈りを必要としません。このアルゴリズムの作成者は、枝刈りに基づくソリューションよりも 300 倍高速であると述べています。しかし、このアルゴリズムが正しいという証拠はまったく見つかりませんでした。
更新:より効率的な解決策が見つかりました here