コード例 #1
0
ファイル: GLCM.cpp プロジェクト: thacdtd/PGLCM
void GLCM::calG(ItemSet is, const vector<BinaryMatrix *> & vBM, BinaryMatrix& res)
{
	int isSize = is.size();
	if (isSize == 0)
        return;

    res = *vBM[is.getItemAt(0)];

	for (int i = 1; i < isSize; i++)
        res &= *vBM[is.getItemAt(i)];
}
コード例 #2
0
ファイル: GLCM.cpp プロジェクト: thacdtd/PGLCM
void GLCM::dumpItemset(std::ostream &os, ItemSet itemset, int freq){

	//os << "[ ";
	for (int i = 0 ; i < itemset.size() ; i++)
	{
		if ((itemset.getItemAt(i) % 2) == 0) os << itemset.getItemAt(i)/2 +1 << "+ ";
		else os << itemset.getItemAt(i)/2 +1 << "- ";
	}
	//os << "] ";
	os<<" ("<<freq<<")\n";
}
コード例 #3
0
ファイル: GLCM.cpp プロジェクト: thacdtd/PGLCM
void GLCM::Print_An_Itemset(ItemSet IS)
{
	list<ItemSet>::iterator it;
	cout << " [";
	for (int i = 0; i < IS.size(); i++)
	{
		if ((IS.getItemAt(i) % 2) == 0) cout << IS.getItemAt(i)/2 +1 << "+";
					else cout << IS.getItemAt(i)/2 +1 << "-";
	}
	cout << "]" << endl;
}
コード例 #4
0
ファイル: GLCM.cpp プロジェクト: thacdtd/PGLCM
void GLCM::Print_All_Closed_Pattern()
{
	list<ItemSet>::iterator it;
	cout << "Print all Closed Item set" << endl;
	for (it = ClosedItemSetList.begin (); it != ClosedItemSetList.end (); it++)
	{
		ItemSet itSet = *it;
		for (int i = 0 ; i < itSet.size() ; i++)
		{
			if ((itSet.getItemAt(i) % 2) == 0) cout << itSet.getItemAt(i)/2 +1 << "+ ";
			else cout << itSet.getItemAt(i)/2 +1 << "- ";
		}
		cout << endl;
	}
}
コード例 #5
0
ファイル: ItemSetBuilder.cpp プロジェクト: Albeforia/Pitaya
	void ItemSetBuilder::build_successors(const ItemSet& set) {
		// reset
		for (auto& item : set.m_closure) item.complete = false;

		for (auto& item : set.m_closure) {
			if (item.complete) continue;
			auto& production = m_grammar.get_production(item.production_id());
			auto dot = item.dot();
			// skip item whose dot is at right end
			if (dot >= production.rhs_count()) {
				item.complete = true;
				continue;
			}
			auto& symbol = production[dot + 1];		// symbol after dot
			// for each item which has 'symbol' after its dot
			for (auto& item2 : set.m_closure) {
				if (item2.complete) continue;
				auto& production2 = m_grammar.get_production(item2.production_id());
				auto dot2 = item2.dot();
				if (dot2 >= production2.rhs_count()) {
					// 'item2' has no successor
					item2.complete = true;
					continue;
				}
				auto& symbol2 = production2[dot2 + 1];			// symbol after dot
				if (symbol == symbol2) {
					// each item becomes complete after contibuting a successor
					item2.complete = true;
					auto& add = m_curr_item_set.add_kernel(production2, dot2 + 1);
					add.lookaheads().resize(m_grammar.symbol_count());
					// add backward propagation link
					auto& new_node = new_link();
					new_node->next = add.backward_plink();
					add.backward_plink() = new_node;
					new_node->item = &item2;
				}
			}
			// build set from new kernels
			auto& new_set = build_item_set();
			if (symbol.type() == SymbolType::NONTERMINAL) {
				auto& act = set.add_action(symbol, ActionType::GOTO, new_set.id());
			}
			else {
				auto& act = set.add_action(symbol, ActionType::SHIFT, new_set.id());
				assert(act.type != ActionType::SSCONFLICT);
			}
		}
	}
コード例 #6
0
ファイル: Library.cpp プロジェクト: Gabers-/csfiles
const Item* Library::addBook(const string& title, const string& author, const int nPages)
{
	Item * book = new Book(author, nPages, title);
	BookList.insert(book);
	MasterList.insert(book);
	if (byAuthor.find(author) != byAuthor.end())
		{
			byAuthor[author].insert(book);
		}
		else{
			ItemSet* temp = new ItemSet;
			temp->insert(book);
			byAuthor.insert(pair<string, ItemSet>(author, temp));
		}
	return book;
}
コード例 #7
0
ファイル: Library.cpp プロジェクト: Gabers-/csfiles
const Item* Library::addMusicAlbum(const string& title, const string& band, const int nSongs)
{
	Item * album = new MusicAlbum(band, nSongs, title);
	AlbumList.insert(album);
	MasterList.insert(album);
	if (byBand.find(band) != byBand.end())
		{
			byBand[band].insert(album);
		}
		else{
			ItemSet* temp = new ItemSet;
			temp->insert(album);
			byBand.insert(pair<string, ItemSet*>(album, temp));
		}
	return album;
}
コード例 #8
0
ItemSet
ReferenceSpatialCache::FindIntersectingItems(const BRect &rect) const
{
	printf("ReferenceSpatialCache::FindIntersectingItems()");
	bigtime_t startTime = system_time();	
	ItemSet res;
	ItemSet::const_iterator it = fItems.begin();
	for(; it != fItems.end(); it++) {
		if ((*it)->Frame().Intersects(rect))
			res.insert(*it);
	}
		
	bigtime_t time = system_time() - startTime;
	printf(" %lluµs\n", time);
	return res;
}
コード例 #9
0
ファイル: GLCM.cpp プロジェクト: thacdtd/PGLCM
void GLCM::write_to_file(string freType)//const char * filename
{
	TimeTracker tt2;
	tt2.Start();
	//print to file
	string st = "OUT/out";
	time_t tim=time(NULL);
	tm *now=localtime(&tim);
	stringstream ssm,ssd,ssh,ssmi,sss;//create a stringstream
	ssm << now->tm_mon + 1;//add number to the stream
	ssd << now->tm_mday;
	ssh << now->tm_hour;
	ssmi << now->tm_min;
	sss << now->tm_sec;
	st = st + ssm.str() + ssd.str() + ssh.str() + ssmi.str() + sss.str();

	char * filename = (char*) st.c_str();

	ofstream outf(filename);
	outf << ClosedItemSetList.size() <<" closed gradual frequent Item sets" << endl;

	list<ItemSet>::iterator it;
	for (it = ClosedItemSetList.begin (); it != ClosedItemSetList.end (); it++)
	{
		outf << "[ ";
		ItemSet itSet = *it;
		for (int i = 0 ; i < itSet.size() ; i++)
		{
			if ((itSet.getItemAt(i) % 2) == 0) outf << itSet.getItemAt(i)/2 +1 << "+ ";
			else outf << itSet.getItemAt(i)/2 +1 << "- ";
		}
		outf << "]" << endl;
	}

	outf.close();
	cout << "All Item sets have been written to file: " << st << endl;

	double ts2 = tt2.Stop();
	cout << endl << "Writing took " << setw(5) << ts2 << " sec" << endl;

	ostringstream ost1;
	ost1 << getpid ();
	string cmd1="ps -p "+ost1.str ()+" -o rss";
	cout << "Memory usage at writing step: " << endl;
	//system(cmd1.c_str());
	cout << endl;
}
コード例 #10
0
ファイル: GLCM.cpp プロジェクト: thacdtd/PGLCM
void GLCM::GLCMloop(ItemSet P, BinaryMatrix& res, vector< vector< pair<int,int> > > G1Item, const vector<BinaryMatrix *> & vBM, string freType, string so , std::ostream &output, int & resFre, bool printTSsFlag)
{	
	if ((P.size() != 0) && (resFre < _threshold))
	{
		return;
	}
	if (P.size() != 0)
	{
		if (resFre != G1Item[0].size()){
			dumpItemset(output,P,resFre);
			nbIS++;
			if (printTSsFlag){
				list<TransactionSequence> TSl;
				TSl.clear();
				TSl = buildTSList(res);
				dumpTSs(output,TSl);
			}
		}
	}


	int k = 0;
	int core_i = -1;
	if (P.size() != 0) core_i = P.getCore_i();

	if ((core_i % 2 != 0) || core_i == -1) k = core_i;
	else k = core_i + 1;
	
    BinaryMatrix calGBM(vBM[0]->getSize());
	int G1ItemSize = G1Item.size();
	for (int i = k + 1; i < G1ItemSize; i++)
	{
		ItemSet P1 = P.addItemwCore_i(i);
		if (P != P1)
		{
			calGBM = (*vBM[i]);
			if (res.getSize() != 0)
				calGBM &= res;
			int resourceFre = 0;
			ItemSet Q = calF(&calGBM,G1Item,vBM,freType,resourceFre);
			if (Q.size() != 0)
			{
				Q.setCore_i(P1.getCore_i());
				if (Q.prefixEqual(P1))
				{
					GLCMloop(Q, calGBM, G1Item, vBM, freType, so, output, resourceFre, printTSsFlag);
				}
			}
		}
	}
}
コード例 #11
0
        void
CLxItemSelection::GetSet (
        ItemSet			&set)
{
        CLxUser_Item		 item;
        LXtScanInfoID		 scan;
        void			*pkt;

        set.clear ();

        scan = 0;
        while (scan = srv_sel.ScanLoop (scan, sel_ID, &pkt)) {
                pkt_trans.GetItem (pkt, item);
                if (Include (item))
                        set.insert (item);
        }
}
コード例 #12
0
ファイル: Library.cpp プロジェクト: Gabers-/csfiles
const Item* Library::addMovie(const string& title, const string& director, const int nScenes)
{
	Item * movie = new Movie(director, nScenes, title);
	BookList.insert(movie);
	MasterList.insert(movie);
	if (byDirector.find(director) != byDirector.end())
		{
			byDirector[director].insert(movie);
		}
		else{
			ItemSet* temp = new ItemSet;
			temp->insert(movie);
			byDirector.insert(pair<string, ItemSet*>(director, temp));
		}
	
	return movie;
}
コード例 #13
0
int main(void) {
	ItemSet a;
	a.insert("A");
	a.insert("B");
	a.insert("C");
	
	if(a.contains(string("B"))) {
		cout << "contains B" << endl;
	}
	
	if(a.contains(string("D"))) {
		cout << "contains D" << endl;
	}
	
	if(a.contains(string("A"))) {
		cout << "contains A" << endl;
	}
	
	for(auto & i: a.subItemSets()) {
		cout << "-> ";
		for(auto &j: i->getItemSet()) {
			cout << j.first << " ";
		}
		cout << endl;
		delete(i);
	}
}
コード例 #14
0
ファイル: lritem.cpp プロジェクト: bsmr-opengl/voreen
bool ItemSet<T>::operator==(const ItemSet<T>& rhs) const {
    if (rhs.getNumItems() != items_.size())
        return false;

    bool result = true;
    for (size_t i = 0; ((result == true) && (i < items_.size())); ++i)
        result = (items_[i] == rhs.items_[i]);

    return result;
}
コード例 #15
0
ファイル: Library.cpp プロジェクト: Gabers-/csfiles
void Library::addBandMembers(const Item* const musicAlbum, const int nBandMembers, ...)
{
	va_list		members;
	char		*member;

	set<string> itemsMembers = static_cast<const MusicAlbum*>(musicAlbum)->getMembers();

	va_start(members, nBandMembers);
	for (int i = 0; i < nBandMembers; i++) {
		member = va_arg(members, char*);
		itemsMembers.insert(member);
		if (byMusician.find(member) != byMusician.end())
		{
			byMusician[member].insert(musicAlbum);
		}
		else{
			ItemSet* temp = new ItemSet;
			temp->insert(musicAlbum);
			byMusician.insert(pair<string, ItemSet*>(member, temp));
		}
	}
	va_end(members);
}
コード例 #16
0
ファイル: Library.cpp プロジェクト: Gabers-/csfiles
void Library::addCastMembers(const Item* const movie, const int nCastMembers, ...)
{
	va_list		members;
	char		*member;

	set<string> itemsMembers = static_cast<const Movie*>(movie)->getCast();

	va_start(members, nCastMembers);
	for (int i = 0; i < nCastMembers; i++) {
		member = va_arg(members, char*);
		itemsMembers.insert(member);
		if (byCastMember.find(member) != byCastMember.end())
		{
			byCastMember[member].insert(movie);
		}
		else{
			ItemSet* temp = new ItemSet;
			temp->insert(movie);
			byCastMember.insert(pair<string, ItemSet*>(member, temp));
		}
	}
	va_end(members);
}
コード例 #17
0
ファイル: ViewItemSet.cpp プロジェクト: huyite/VisualizeFI
bool ViewItemSet::checkItemSet(node nodeleaf,vector<node> &nodeitemset,vector<edge> &path,ItemSet& its){
	Graph *graph=getGlMainWidget()->getGraph();
	StringProperty *name =graph->getLocalProperty<StringProperty>("viewLabel");
	string leaf=name->getNodeStringValue(nodeleaf);
	Item *itemleaf=new Item(leaf);
	node cursor=nodeleaf;
	for(int j=its.numberOfItem()-1;j>-1;j--){
		      while(!graph->indeg(cursor)==0){
		    	  if((*its.getItem(j))>*itemleaf)
		    	 	       return false;

		    	  if(*(itemleaf)==(*(its.getItem(j)))){
		    		  nodeitemset.push_back(cursor);
		    		  cursor=graph->getInNode(cursor,1);
		    		  leaf=name->getNodeStringValue(cursor);
		    		  itemleaf->setName(leaf);
		    		  break;
		    	  }else{

		    		  cursor=graph->getInNode(cursor,1);
		    		  leaf=name->getNodeStringValue(cursor);
		    		  itemleaf->setName(leaf);
		    	  }
		      }
	}

	if(nodeitemset.size()>1)
	{	cursor=nodeitemset[0];
		while(cursor!=nodeitemset[nodeitemset.size()-1]){
		path.push_back((graph->getInEdges(cursor))->next());
		cursor=graph->getInNode(cursor,1);
		}
	}
	if(nodeitemset.size()==its.numberOfItem())
		return true;
	else return false;
}
コード例 #18
0
ファイル: Parser.cpp プロジェクト: Romag/LI_EU4_Converter
ItemSet Parse(std::istream& in)
{
  ItemSet items;

  std::string currentItem;
  int openBraces = 0;
  while (!in.eof() && !in.fail())
  {
    std::string currentLine;
    std::getline(in, currentLine);

    auto commentPos = currentLine.find('#');
    if (commentPos != std::string::npos)
      currentLine.erase(commentPos); // remove any comment

    if (!currentItem.empty())
      currentItem.push_back('\n');  // preserve new-lines within an item
    currentItem += currentLine;
    openBraces += std::count(currentLine.begin(), currentLine.end(), '{');
    openBraces -= std::count(currentLine.begin(), currentLine.end(), '}');
    if (openBraces <= 0)
    {
      auto lastCharPos = currentItem.find_last_not_of(" \t");
      if (lastCharPos != std::string::npos && currentItem[lastCharPos] != '=')
      {
        auto parsedItem = ParseItem(currentItem);
        if (parsedItem)
          items.push_back(std::move(parsedItem));
        currentItem.clear();
        openBraces = 0;
      }
    }
  }

  return items;
}
コード例 #19
0
inline int isContained_DBSizeEqual(struct PROJ_DB *pDB, TreeNode *currentLevel, TreeNode *candidate) 
{
	
	int		myItem = pDB->Item;
	bool	myItemIsIntra = pDB->ItemIsIntra;
	int		dir;
	bool	isContained;


	TreeNode *supNode;
	TreeNode *subNode;

	if ((myItem != candidate->Item) || (candidate->Items == (currentLevel->Items+1))) 
		return 0;

	if ( candidate->Items > (currentLevel->Items + 1))
		dir=1;
	else
		dir=-1;

	if (candidate->ItemIsIntra) {
		if (myItemIsIntra) {
			candidate=candidate->Parent;
		}
		else {
			//in this case, supNode must be candidate, subNode must be currentLevel
			while (candidate->ItemIsIntra && candidate->Items >0)
				candidate = candidate ->Parent;

			candidate=candidate->Parent;
			if ((candidate->Items < currentLevel->Items) || (candidate->ItemsetNumber < currentLevel->ItemsetNumber))
				return 0;
			
		}
	}
	else {
		if (myItemIsIntra) {
			//in this case, supNode must be currentLevel, subNode must be candidate
			while (currentLevel->ItemIsIntra && currentLevel->Items >0)
				currentLevel = currentLevel ->Parent;

			currentLevel=currentLevel->Parent;
			if ((candidate->Items > currentLevel->Items) || (candidate->ItemsetNumber > currentLevel->ItemsetNumber))
				return 0;

			
		}
		else {
			candidate=candidate->Parent;
		}
	}

	
	if (currentLevel->Items == 0) {
		return 1;
	}

	if (candidate->Items == 0) {
		return -1;
	}

	if ( dir == 1) {
		supNode=candidate;
		subNode=currentLevel;	
	}
	else {
		supNode=currentLevel;
		subNode=candidate;
	}

	isContained=false;
	supNode=GetLastItemSet(supNode, &supSet);
	subNode=GetLastItemSet(subNode, &subSet);

	while (1) {
		if (subSet.IsSubsetOf(&supSet)) {
			if (subNode->Items == 0) {
				isContained=true;
				break;
			}
			if ((supNode->Items >= subNode->Items) && (supNode->ItemsetNumber >= subNode->ItemsetNumber)) {
				supNode=GetLastItemSet(supNode, &supSet);
				subNode=GetLastItemSet(subNode, &subSet);
			}
			else
				break;
		}
		else {
			if (supNode->Items == 0) // unnecessary to check any more.
				break;

			if ((supNode->Items >= subNode->Items) && (supNode->ItemsetNumber >= subNode->ItemsetNumber)) {
				supNode=GetLastItemSet(supNode, &supSet);
			}
			else
				break;
		}

	}
	if (isContained)
		return dir;
	else
		return 0;


}
コード例 #20
0
void Yield::instantiate(ItemSet &contents) const {
  for (auto entry : _entries) {
    contents.set(entry.first, generateInitialQuantity(entry.second));
  }
}
コード例 #21
0
ファイル: ViewItemSet.cpp プロジェクト: huyite/VisualizeFI
void ViewItemSet::reBuildTree(const ItemSet& it){
	Graph *graph=getGlMainWidget()->getGraph();
	vector<ItemSet> data;
	DataSet dataset;
	bool b=graph->getAttribute("datasetitem",dataset);
	bool c=dataset.get("ItemSet",data);
	graph->holdObservers();
	graph->clear();
	StringProperty *labelItemSet=graph->getLocalProperty<StringProperty>("viewLabel");
	DoubleProperty *frequentItemSet=graph->getLocalProperty<DoubleProperty>("viewFrequent");
	//ItemSet itemset;
	node nodeNull=graph->addNode();
	node curNode;
	node pointerSon;
	labelItemSet->setNodeValue(nodeNull,"NULL");
	frequentItemSet->setNodeValue(nodeNull,0);
	int x=data.size();
	for(int i=0;i<x;i++){
		ItemSet &itemset=data[i];
			int size=itemset.numberOfItem();
			double fr= atof(itemset.getItem(size-1)->getName().c_str());
			itemset.removeItem(size);
			if(size!=0){
					curNode=nodeNull;   //cursor node

                    for(int i=0;i<size-1;i++)
						if(it.isExitItem(*itemset.getItem(i)))
							itemset.getItem(i)->setPriority(true);

					itemset.sortItems();

					for(int i=0;i<size-1;i++)
					{
						pointerSon=isNodeSon(itemset.getItem(i)->getName(),curNode);
						if(!pointerSon.isValid()){
							node n= node();
							n=graph->addNode();
							labelItemSet->setNodeStringValue(n,itemset.getItem(i)->getName());
							frequentItemSet->setNodeValue(n,fr);
							edge e=graph->addEdge(curNode,n);
							curNode=n;

						}else{
							curNode= pointerSon;
							frequentItemSet->setNodeValue(curNode,frequentItemSet->getNodeValue(curNode)+fr);

						}
					}


				}
			itemset.clear();

	}
	  string erreurMsg;
	 DataSet tmp;
				 LayoutProperty * layout = graph->getLocalProperty<LayoutProperty>("viewLayout"); // get the viewLayout property of your graph
				StructDef structDef = LayoutProperty::factory->getPluginParameters("Hierarchical Tree (R-T Extended)");
							  structDef.buildDefaultDataSet(tmp,graph);
						     // tmp.set<float>("node size", nodeSize);
						  	 // tmp.set<float>("layer spacing", 200.);
						  	 // tmp.set<float>("node spacing", 20.);
						  	  //tmp.set("orthogonal", true);
						  	  StringCollection tmpS("vertical;horizontal;");
						  	  tmp.set("orientation", tmpS);

						  	  LayoutProperty tempLayout(graph);
						  	  tempLayout = *layout;
						  	  graph->computeProperty<LayoutProperty>("Hierarchical Tree (R-T Extended)", &tempLayout,   //"Squarified Tree Map","Hierarchical Graph"
						  			                              erreurMsg, 0, &tmp); // call to the plugin.
						  	  *layout = tempLayout;
	graph->unholdObservers();
}
コード例 #22
0
ファイル: GLCM.cpp プロジェクト: thacdtd/PGLCM
void GLCM::GLCMAlgo( DBMain * DB, float threshold, string freType,string so, std::ostream &output)
{
    TimeTracker tt1;
    tt1.Start();
	nbIS = 0;
	ItemSet P = ItemSet();
	P.clear();
	ClosedItemSetList.clear();
	BinaryMatrixList.clear();
	vector< vector< pair<int,int> > > G1Item = buildG_1item(DB);
	cout << "There are " << G1Item[0].size() << " customers, and " <<  G1Item.size()/2 << " attributes." << endl << endl;
	if ((freType == "nor") || (freType == "norwTSs"))
	{
		_threshold = (int) ceil(threshold * G1Item[0].size());
	}
	else if (freType == "gra")
	{
		_threshold = (int) ceil(((threshold * G1Item[0].size() * (G1Item[0].size() - 1)))/2);
	}
	vector<BinaryMatrix *> vBM = constructBinaryMatrixAll(G1Item);
	BinaryMatrix BM = BinaryMatrix();
	cout << "Begin GLCM" << endl;
	int G1ItemSized2 = G1Item.size()/2;
	for (int i = 0; i < G1ItemSized2; i++)
	{
		cout << "Item Sets start with: " << i + 1 << "+" << endl;
		ItemSet P1 = P.addItemwCore_i(i*2);
		BM = (*vBM[i*2]);

		int resFre = 0;
		int BMSize = BM.getSize();
		BinaryMatrix * calFBM = new BinaryMatrix(BMSize);
		calFBM->setContrastTo0(BM);
		if (freType == "gra")
			resFre = calFBM->getActive();
		else {
			vector<int> freMap;
			freMap.clear();
			for (int i = 0; i < BMSize; i++)
			{
				freMap.push_back(-1);
			}
			loop_Chk_Freq(calFBM,freMap);
			resFre = frequentCount(freMap);
		}
		delete calFBM;
		bool printTSsFlag = false;
		if (freType == "norwTSs") printTSsFlag = true;
		GLCMloop(P1, BM, G1Item, vBM, freType, so, output, resFre, printTSsFlag);
	}
	double ts1 = tt1.Stop();
	cout << endl << "Execution took " << setw(5) << ts1 << " sec" << endl;

	vector<BinaryMatrix*>::const_iterator posVBM ;
	for (posVBM = vBM.begin() ; posVBM != vBM.end() ; ++posVBM)
	  delete *posVBM ;
	  vBM.clear() ;

	ostringstream ost1;
	ost1 << getpid ();
	string cmd1="ps -p "+ost1.str ()+" -o rss";
	cout << "Execution Memory usage : " << endl;
	//system(cmd1.c_str());
	cout << endl;
}
コード例 #23
0
ファイル: ItemSet.cpp プロジェクト: huyite/VisualizeFI
bool ItemSet::checkSubSet(ItemSet &it) {
    for(int i=0; i<it.numberOfItem(); i++)
        if(!this->isExitItem(*(it.getItem(i))))
            return false;
    return true;
}