在我的算法中,我将通过DFS方法创建频繁模式,例如,我按顺序生成A-A
,A-A-B
,A-A-B-C
,...(这三种模式是频繁的子图模式,A
,B
,C
是节点,-
表示两个节点之间存在边缘。)
如果没有任何频繁的子图由A-A
组成,我们就会开始生成A-B
,A-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?
};
答案 0 :(得分:0)
我认为你应该使用前缀树。看看here
答案 1 :(得分:0)
您正在手动构建GPattern
个对象的图表。你可能最好使用Boost::Graph
,因为它附带了许多有用的算法。