2012-03-19 11 views
1

、iはDFS法で頻出パターンを作成し、例えば、私は、(これらの3つのパターンが頻出部分グラフパターンである。ために...、A-AA-A-BA-A-B-Cを生成ABCはノードであり、そして-は、2つのノードの間にエッジが存在することを意味します) A-Aのサブグラフが頻繁に存在しない場合は、A-B,A-B-B ... を生成します。これらの頻繁なパターンを格納するには、DFSツリーを使用します。しかし、私は何が最良の方法であるか分かりません。DFSメソッドで頻繁なパターンを生成する場合、DFSツリーを構築する方法は?私のアルゴリズムで

私が直面している問題は、以前のレベルでパターンを記録するために* prevポインタを使うべきですか?

// When i generate one frequent pattern, i will call `report` 
void report (Projected &projected, unsigned int sup) 
{ 
    // i want to store this pattern in a DFS tree which implement with GPattern 
} 

struct GPattern { 
    CODE code; 
    Project project; 
    vector<GPattern> children; // record all children of this pattern 

    // should i use a `prev` pointer to record ancestor? 
}; 

答えて

0

プレフィックスツリーを使用する必要があります。見てくださいhere

+0

私が頻繁に生成するパターンは、DFS順序です。私はそれが生成するときに各パターンを格納する必要がありますが、私はそれを実装する方法を知らない... – LoveTW

0

GPatternのグラフを手動で作成しています。多くの便利なアルゴリズムが付属しているので、Boost::Graphを使用する方が良いでしょう。

+0

あなたの助言をいただきありがとうございますが、私のコードを変更し、ブーストに慣れるのに十分な時間がありません... – LoveTW

+0

あなたはこの質問を解決することによって私を助けることができますか?ありがとうございました:) http://stackoverflow.com/questions/9780955/unexpected-result-of-my-dfs-tree-c – LoveTW

関連する問題