Example #1
0
void SiftMatrix::checkWithConfig() {
	for(Data::iterator li = data.begin(); li!=data.end(); ++li) {
		Layer &l = li->second;
		for(unsigned o = 0; o<l.size(); o++)
			for(unsigned o2 = 0; o2<l.size(); ++o2) {
				DDModel::Node *u = config.ranking.GetRank(li->first)->order[o],
					*v = config.ranking.GetRank(li->first)->order[o2];
				dgassert(getCrossings(u,v,false)==weigh(uvcross(u,v,true,false)));
				dgassert(getCrossings(u,v,true)==weigh(uvcross(u,v,false,true)));
			}
	}
}
Example #2
0
void SiftMatrix::recompute() {
	for(Config::Ranks::iterator ri = config.ranking.begin(); ri!=config.ranking.end(); ++ri) {
		Rank *rank = *ri;
		unsigned r = config.ranking.IndexOfIter(ri);
		unsigned wid = rank->order.size();
		Layer &l = data[r];
		l.resize(wid);
		for(unsigned o = 0; o<wid; ++o) {
			l[o].resize(wid);
			for(unsigned o2 = 0; o2<wid; ++o2) {
				CrossCount cr = make_pair(weigh(uvcross(rank->order[o],rank->order[o2],true,false)),
					weigh(uvcross(rank->order[o],rank->order[o2],false,true)));
				dgassert(cr.first>=0);
				dgassert(cr.second>=0);
				l[o][o2] = cr;
			}
		}
	}
}
Example #3
0
Crossings calculateCrossings(Config &config) {
	Crossings cc;
	for(Config::Ranks::iterator ri = config.ranking.begin(); ri!=config.ranking.end(); ++ri) {
		Rank *r = *ri;
		for(NodeV::iterator ni1 = r->order.begin(); ni1!=r->order.end(); ++ni1)
			for(NodeV::iterator ni2 = ni1+1; ni2!=r->order.end(); ++ni2) 
				cc += uvcross(*ni1,*ni2,false,true);
	}
	return cc;
}