如果我在DFS方法中生成频繁模式,如何构建DFS树?

时间:2012-03-19 07:50:17

标签: c++ algorithm design-patterns depth-first-search

在我的算法中,我将通过DFS方法创建频繁模式,例如,我按顺序生成A-AA-A-BA-A-B-C,...(这三种模式是频繁的子图模式,ABC是节点,-表示两个节点之间存在边缘。) 如果没有任何频繁的子图由A-A组成,我们就会开始生成A-BA-B-B,.... 我想使用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?
};

2 个答案:

答案 0 :(得分:0)

我认为你应该使用前缀树。看看here

答案 1 :(得分:0)

您正在手动构建GPattern个对象的图表。你可能最好使用Boost::Graph,因为它附带了许多有用的算法。