📄 main.cpp
字号:
#pragma warning (disable:4786)
#include <iostream>
#include <ctime>
#include "PrefixSpanTemplateAlgm.h"
#include "Sequence.h"
using namespace std;
const string filename("seqtbl1000item500");// the name of SDB
const string outfile("FrePattern");
//------------------------------------------------------------------------
//------------------------------------------------------------------------
typedef FrequentItem<Item> myFreItemTp;
//////////////////////////////////////////////////////////////////////////
template <>
bool PSAlgorithm<Sequence, myFreItemTp>::
CountValidSuffixItem(const Sequence& prefixSeq,
unsigned index,
const unsigned suffixPos)
{
//定义I扩展的timestamp。
int IExternItemTimestamp = 0;
Sequence& sequence = sequenceDB_[index];
//如果suffixPos>0,I扩展的timestamp被定义为suffixPos-1位置上的
//item的timestamp。
if (suffixPos > 0)
IExternItemTimestamp = sequence[suffixPos-1].timestamp_;
for (int i=suffixPos;i<sequence.Length();++i)
{
if (sequence[i].timestamp_ == IExternItemTimestamp)
{
IExternFreItemCounter_.CountItem(sequence[i], sequence.SequenceId());
}
else
{
SExternFreItemCounter_.CountItem(sequence[i], sequence.SequenceId());
//少考虑了一种情况,即虽然sequence[i].timestamp_ > IExternItemTimestamp,但是
//sequence[i]所在的element中含有prefix的最后一个elememt, 那么仍应该计数
//补充:
if(LastElementExit(prefixSeq, index, i))//
IExternFreItemCounter_.CountItem(sequence[i], sequence.SequenceId());
}
}
return true;
}
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
int main(int argc, char* argv[])
{
unsigned minSupport = 0, ItemSetSize = 0;
PSAlgorithm<Sequence, myFreItemTp> myPrefixSpan;
if (argc == 3)
{
minSupport = atoi(argv[1]);
ItemSetSize = atoi(argv[2]);
cout<<"minSupport is: "<<minSupport<<" and ItemSetSize is: "<<ItemSetSize<<endl;
}
else
{
cout<<"Error parameters for the minSupport and defaultItemSetSize."<<endl;
return -1;
}
myPrefixSpan.Init(minSupport,ItemSetSize, filename);
//
clock_t begin = 0, end = 0;
begin = clock();
myPrefixSpan.prefixSpan();
end = clock();
cout<<"Total time of the program is: "<<end - begin<<" (ms)\n";
cout<<"Total Pattern Number is: "<<myPrefixSpan.GetTotalPatternNum()<<endl;
//
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -