コード例 #1
0
ファイル: ItemSet.cpp プロジェクト: huyite/VisualizeFI
bool ItemSet::isEqual(ItemSet &it) {
    if(this->numberOfItem()!=it.numberOfItem())
        return false;
    for(int i=0; i<(it.numberOfItem()); i++)
        if(!this->isExitItem(*(it.getItem(i))))
            return false;
    return true;
}
コード例 #2
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;
}
コード例 #3
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;
}