Пример #1
0
void TopologicSSSP::computeSSSP( const std::vector<node> &topSortArray,
								 NodeArray<int> &sccArray) {
	resetArrays();
	assert(m_G.getNodesNumber() == topSortArray.size());
	assert(m_G.getNodesNumber() == sccArray.getSize());
	assert(checkIfTopologicOrder(topSortArray, sccArray));
	//m_componentDistanceArray[5] = 0;
    //m_componentDistanceArray[m_G.getNodesNumber()-1] = 0;
	for(int i = 0; i < topSortArray.size(); i++) {
		node v = topSortArray[i];
		for(edge e = v->getFirstEdge(); e !=0; e = e->getNext()) {
			node u = e->getTarget();
			if(e->getWeight() <= WEIGHT_BOUND && sccArray[u] != sccArray[v] ) {
					relaxEdge(sccArray[v], sccArray[u], e);
			}
		}
	}
	for(node v = m_G.getFirstNode(); v!= 0; v = v->getNext()) {
		m_distanceArray[v] = m_componentDistanceArray[ sccArray[v] ];
	}
}
Пример #2
0
PastWeightMatrix::PastWeightMatrix(int numRounds, int numOutputs)
    : previousOutputs(NULL), idealOutputs(NULL)
{
    resetArrays(numRounds, numOutputs);
}