def countProcess(minS): w = worstCase(minS.getS(), math.ceil(minS.getK())) w.worstCase(w.genGraphList(), A[cnt], B[cnt]) print("When d=", d, "f(n, m)=", A[cnt], " * n + ", B[cnt], " * m", "Minimum S =", minS.getS()) print("the worst branch is (", w.getBranchCheck(), ")") print("the worst branch number is (", w.getWorstIn(), ",", w.getWorstOut(), ")") print("\\tau is", w.getWorstTime(), "\n") del minS
def binarySearchToSearchBi(low, up): w = worstCase(minS.getS(), math.ceil(minS.getK())) b_mid = (low + up) / 2 a_mid = Kai - (minS.getK() * b_mid) w.worstCase(w.genGraphList(), a_mid, b_mid) branch = w.getBranchCheck() if w.getWorstTime() == PreDefinedTau: return {"Kai": Kai, "b": b_mid, "a": a_mid, "branch": branch, "tau": w.getWorstTime(), "k": minS.getK()} elif (up - low) < ACCURACY: return {"Kai": Kai, "b": low, "a": a_mid, "branch": branch, "tau": w.getWorstTime(), "k": minS.getK()} elif w.getWorstTime() > PreDefinedTau: return binarySearchToSearchBi(b_mid, up) elif w.getWorstTime() < PreDefinedTau: return binarySearchToSearchBi(low, b_mid)
A = [1, 0.1961, 0.3308, 0.4461, 0.8755, 0.9139, 0.9517, 0.9841, 1.0143] B = [-2, 0.2680, 0.2295, 0.1987, 0.0914, 0.0821, 0.0736, 0.0665, 0.0602] S = 0 cnt = 0 for i in range(2001, 5000): from minS import minS d = i / 1000 minS = minS(d) minS.minS() while d > k[cnt]: cnt += 1 def countProcess(minS): w = worstCase(minS.getS(), math.ceil(minS.getK())) w.worstCase(w.genGraphList(), A[cnt], B[cnt]) print("When d=", d, "f(n, m)=", A[cnt], " * n + ", B[cnt], " * m", "Minimum S =", minS.getS()) print("the worst branch is (", w.getBranchCheck(), ")") print("the worst branch number is (", w.getWorstIn(), ",", w.getWorstOut(), ")") print("\\tau is", w.getWorstTime(), "\n") del minS if S == 0: S = minS.getS() countProcess(minS) elif minS.getS() != S: S = minS.getS() countProcess(minS)
# minimum S(k) is 19 when k>= 15/4 and d(F)= 4 # minimum S(k) is 20 when k>= 4 and d(F)= 4 # minimum S(k) is 23 when k>= 120/29 and d(F)= 5 # minimum S(k) is 24 when k>= 30/7 and d(F)= 5 # minimum S(k) is 25 when k>= 40/9 and d(F)= 5 # minimum S(k) is 26 when k>= 9/2 and d(F)= 5 # minimum S(k) is 27 when k>= 32/7 and d(F)= 5 # minimum S(k) is 28 when k>= 14/3 and d(F)= 5 # minimum S(k) is 29 when k>= 24/5 and d(F)= 5 # minimum S(k) is 30 when k>= 5 and d(F)= 5 from fractions import Fraction S = 0 for i in range(1000, 5000): from minS import minS d = Fraction(i, 1000) minS = minS(d) minS.minS() if S == 0: S = minS.getS() print("minimum S(k) is", minS.getS(), " when k>=", minS.getK(), " and d(F)=", minS.getD()) del minS elif minS.getS() != S: S = minS.getS() print("minimum S(k) is", minS.getS(), " when k>=", minS.getK(), " and d(F)=", minS.getD()) del minS