鉴于过程网上都有 ,这里就不再赘述详细过程,只说一下思路。
既然要用到集合,那么就可以考虑用容器存储(可以排序的那种)。
用以这里想到用 map<set<int> ,int> 来存k项集 具体实现请看代码 其实很容易理解的
我们老师给了88000+的数据记录,然后只能用文件去读,按照支持度。
大概跑以下的支持度的运行时间是这么多 但是要说下我的破电脑的运算速度。。。2.2Ghz。可能去游戏本跑可以更快
百分比 出现记录次数 时间
4.5% 4000 3s
2% 1760 15s
1.7% 1500 22s
1.1% 1000 97s
1% 800
#include<bits/stdc++.h>
using namespace std;
char d[90000][110];//读取数据记录 数据库
map <set<int>,int> m_f[30],m_op;//存储 频繁集
set <set<int> > m_d,m_dcopy;//存储 候选集
set <set<int> > ::iterator m_d_iter;
map <set<int>,int> ::iterator m_iter1,m_iter2;
set<int> one_set;//一项频繁集的容器
set<int> ::iterator one_set_iter;
int n=88