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; }
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; }
bool ItemSet::checkSubSet(ItemSet &it) { for(int i=0; i<it.numberOfItem(); i++) if(!this->isExitItem(*(it.getItem(i)))) return false; return true; }