School Commit Init
This commit is contained in:
+67
@@ -0,0 +1,67 @@
|
||||
"""
|
||||
Created on Jan 10, 2017
|
||||
|
||||
@author: Arthur
|
||||
"""
|
||||
|
||||
import time
|
||||
from texttable import *
|
||||
|
||||
|
||||
def generate_test(array, dim):
|
||||
if len(array) == dim:
|
||||
# print (array)
|
||||
pass
|
||||
if len(array) > dim:
|
||||
return
|
||||
array.append(0)
|
||||
for i in range(0, dim):
|
||||
array[-1] = i
|
||||
generate_test(array[:], dim)
|
||||
|
||||
|
||||
def backtracking_iter(dim: int):
|
||||
array = [-1] # candidate solution
|
||||
while len(array) > 0:
|
||||
chosen = False
|
||||
while not chosen and array[-1] < dim - 1:
|
||||
array[-1] = array[-1] + 1 # increase the last component
|
||||
chosen = len(set(array)) == len(array)
|
||||
if chosen:
|
||||
if len(array) == dim:
|
||||
print(array)
|
||||
array.append(-1) # expand candidate solution
|
||||
else:
|
||||
array = array[:-1] # go back one component
|
||||
|
||||
|
||||
def backtracking_rec(array, dim):
|
||||
if len(array) == dim:
|
||||
print(array)
|
||||
if len(array) > dim:
|
||||
return
|
||||
array.append(0)
|
||||
for i in range(0, dim):
|
||||
array[-1] = i
|
||||
if len(set(array)) == len(array):
|
||||
backtracking_rec(array, dim)
|
||||
array.pop()
|
||||
|
||||
|
||||
'''
|
||||
And here we build our experiment
|
||||
'''
|
||||
functions = [generate_test, backtracking_rec]
|
||||
data_sizes = [3, 4, 5, 6, 7]
|
||||
|
||||
t = Texttable()
|
||||
t.add_row(['Functions'] + data_sizes)
|
||||
for function in functions:
|
||||
row = [function.__name__]
|
||||
for size in data_sizes:
|
||||
t1 = time.perf_counter()
|
||||
function([], size)
|
||||
t2 = time.perf_counter()
|
||||
row = row + [t2 - t1]
|
||||
t.add_row(row)
|
||||
print(t.draw())
|
||||
Reference in New Issue
Block a user