complexity analysis using big o notation for:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
def find_pivot_largest_change(tableau):
M, N = tableau.shape
m = M - 1
n = N - 1
final_s = 1
final_r = 0
list_neg_col = []
for i in range(0, n + 1):
if tableau[0, i] >= 0:
list_neg_col.append(None)
else:
list_neg_col.append(tableau[0, i])
larg_change_list = []
rlist = []
for j in list_neg_col:
if j is not None:
final_s = list_neg_col.index(j)
final_r = 0
theta_star = np.inf
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 38 37 38 39 40 41 42 43 44 45 46 47
for i in range(1, m + 1):
if tableau[i, final_s] > 0:
if tableau[i, 0] / tableau[i, final_s] < theta_star:
final_r = i
theta_star = tableau[i, 0] / tableau[i, final_s]
larg_change_list.append(abs(theta_star * tableau[0, final_s]))
rlist.append(final_r)
larg_change_list.append(None)
rlist.append(None)
larg_change_list_sorted = larg_change_list.copy()
larg_change_list_sorted = sorted(larg_change_list_sorted, key=lambda x: x is None)
if_same_change = False
if larg_change_list_sorted[0] == larg_change_list_sorted[1]:
if_same_change = True
if if_same_change is True:
for k in larg_change_list:
if larg_change_list[k] == larg_change_list_sorted[0]:
final_s = larg_change_list.index(k)
break
final_r = rlist[final_s]
final_s = larg_change_list.index(larg_change_list_sorted[0])
final_r = rlist