コード例 #1
0
ファイル: PatchCycles.cpp プロジェクト: Changhe160/OFEC
GainType LKH::LKHAlg::PatchCycles(int k, GainType Gain)
{
    Node *s1, *s2, *sStart, *sStop;
    GainType NewGain;
    int M, i;

	if(!CurrentCycle.get())
	{
		CurrentCycle.reset(new int(0));
		Patchwork.reset(new int(0));
		RecLevel.reset(new int(0));
	}
	FindPermutation(k,this);
    M = Cycles(k);
    if (M == 1 && Gain > 0) {
        MakeKOptMove(k);
        return Gain;
    }
    if (M == 1 || M > PatchingC || k + M > NonsequentialMoveType)
        return 0;
    if (*RecLevel == 0)
        *Patchwork = 0;
    *CurrentCycle = ShortestCycle(M, k,this);
    for (i = 0; i < k; i++) {
        if ((*cycle.get())[(*p.get())[2 * i]] != *CurrentCycle)
            continue;
        sStart = (*t.get())[(*p.get())[2 * i]];
        sStop = (*t.get())[(*p.get())[2 * i + 1]];
        for (s1 = sStart; s1 != sStop; s1 = s2) {
            s2 = SUC(s1);
            if (FixedOrCommon(s1, s2))
                continue;
            if (++(*Patchwork) > Dimension)
                return 0;
            (*t.get())[2 * k + 1] = s1;
            (*t.get())[2 * k + 2] = s2;
            MarkDeleted(s1, s2);
            /* Find a set of gainful alternating cycles */
            NewGain = PatchCyclesRec(k, 2, M, Gain + (this->*C)(s1, s2),this);
            UnmarkDeleted(s1, s2);
            if (NewGain > 0)
                return NewGain;
        }
    }
    return 0;
}
コード例 #2
0
ファイル: nagra2-0501.c プロジェクト: 3PO/vdr-plugin-sc
 virtual unsigned int CpuCycles(void) { return Cycles(); }
コード例 #3
0
ファイル: Timer.cpp プロジェクト: pnowell/CalcPrimes
// ================================================================================================
// Take a timing sample
// ================================================================================================
void Timer::Sample() {
    last = curr;
    curr = Cycles();
}
コード例 #4
0
ファイル: Timer.cpp プロジェクト: pnowell/CalcPrimes
// ================================================================================================
// Constructor
// ================================================================================================
Timer::Timer() {
    curr = last = Cycles();
}