def test_one_pair(self): # flip, x, y, population, risk s = map(lambda x: Cluster(*x), [(5, 0, 0, 13, 0.1), (10, 42, 0, 14, 0.2)]) r1 = list(slow_closest_pairs(s))[0] r2 = fast_closest_pair(s) self.assertEqual(r1, r2) self.assertEqual(r2, (42.0, 0, 1))
def test_three_vert_pairs(self): s = map(lambda x: Cluster(*x), [(5, 0, 0, 13, 0.1), (10, 0, 2, 14, 0.2), (15, 0, 4, 15, 0.2), (20, 0, 5, 16, 0.2), (25, 0, 7, 17, 0.2), (30, 0, 9, 18, 0.2), ]) r1 = list(slow_closest_pairs(s))[0] r2 = fast_closest_pair(s) self.assertEqual(r1, r2) self.assertEqual(r1, (1.0, 2, 3))
def test_three_vert_pairs(self): s = map(lambda x: Cluster(*x), [ (5, 0, 0, 13, 0.1), (10, 0, 2, 14, 0.2), (15, 0, 4, 15, 0.2), (20, 0, 5, 16, 0.2), (25, 0, 7, 17, 0.2), (30, 0, 9, 18, 0.2), ]) r1 = list(slow_closest_pairs(s))[0] r2 = fast_closest_pair(s) self.assertEqual(r1, r2) self.assertEqual(r1, (1.0, 2, 3))
def question1(filename): xs = range(2, 201) ys_fast, ys_slow = [], [] for n in xs: clusters = get_random_clusters(n) ys_fast.append(timeit(lambda: fast_closest_pair(clusters), number=1)) ys_slow.append(timeit(lambda: slow_closest_pairs(clusters), number=1)) plt.plot(xs, ys_fast, '-r', label='fast_closest_pair') plt.plot(xs, ys_slow, '-b', label='slow_closest_pairs') plt.title('Running time of *closest_pair functions (desktop Python)') plt.xlabel('Number of initial clusters') plt.ylabel('Running time, seconds') plt.legend(loc='upper left') plt.tight_layout() plt.savefig(filename) print('Saved plot to %s' % filename)
of clusters of size 2 to 200. ''' clusters_list = [] for _ in range(num_clusters): x_axis = random.random() y_axis = random.random() cluster = alg_cluster.Cluster(set(), x_axis, y_axis, '', '') clusters_list.append(cluster) return clusters_list TIMES = [] for num in range(2, 200): fun_time = {} clusters = gen_random_clusters(num) time_start = time.time() alg_project3_solution.slow_closest_pairs(clusters) time_end = time.time() time_spent = time_end - time_start fun_time['number of initial clusters'] = num fun_time['slow_closest_pairs'] = time_spent time_start = time.time() alg_project3_solution.fast_closest_pair(clusters) time_end = time.time() time_spent = time_end - time_start fun_time['fast_closest_pair'] = time_spent TIMES.append(fun_time) ITMES_DF = pd.DataFrame(TIMES) ax = ITMES_DF[['slow_closest_pairs', 'fast_closest_pair']].plot(title='running time of different functions') ax.set_ylabel('running time') ax.set_xlabel('number of initial clusters')
import random import alg_project3_solution def gen_random_clusters(num_clusters): cluster_list = [] for i in range(num_clusters): cluster_list.append(alg_cluster.Cluster(set(), random.uniform(-1, 1), random.uniform(-1, 1), 0, 0)) return cluster_list x_axis = range(2, 201) slow_y = [] for i in range(2, 201): cluster_list = gen_random_clusters(i) start = time.time() closet = alg_project3_solution.slow_closest_pairs(cluster_list) end = time.time() slow_y.append((end-start)*1000) fast_y = [] for i in range(2, 201): cluster_list = gen_random_clusters(i) start = time.time() closet = alg_project3_solution.fast_closest_pair(cluster_list) end = time.time() fast_y.append((end-start)*1000) print(slow_y) print(fast_y) plt.plot(x_axis, slow_y, label = "slow_closest_pair")