⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.cpp

📁 C++编写的代码
💻 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 + -