def main() : timer = TimeStat() pntStater = PointStat() pnt_nums = PNT_NUM_LIST logging_format = "{method_name}-{pnt_num} done ." for pnt_num in pnt_nums : pnts = generate_pnts_in_random(pnt_num , is_static_random=False) pntStater.add_stat_pnts(pnts) timer.add_stat_pnt_num(pnt_num) # brute force method_name = "brute force" timer.start_time_stat() convex_hull_pnts = find_convex_hull_bruteforce(pnts) #print convex_hull_pnts plot_pnts = ready_plot_pnts_bruteforce(convex_hull_pnts) timer.end_time_stat() timer.add_stat_brute_force_timecost(timer.get_time_cost()) pntStater.add_stat_bruteforce_convex_hull(plot_pnts) logging.info(logging_format.format(**locals()) ) # graham scan method_name = "gramham scan" timer.start_time_stat() convex_hull_pnts = find_convex_hull_grahamscan(pnts) plot_pnts = ready_plot_pnts_grahamscan(convex_hull_pnts) timer.end_time_stat() timer.add_stat_graham_scan_timecost(timer.get_time_cost()) pntStater.add_stat_graham_convex_hull(plot_pnts) logging.info(logging_format.format(**locals()) ) # divide conquer method_name = "divide conquer" timer.start_time_stat() convex_hull_pnts = find_convex_hull_dc(pnts) plot_pnts = ready_plot_pnts_dc(convex_hull_pnts) timer.end_time_stat() timer.add_stat_dc_timecost(timer.get_time_cost()) pntStater.add_stat_dc_convex_hull(plot_pnts) logging.info(logging_format.format(**locals()) ) timer.print_time_cost() pntStater.draw_stat(convex_hull_pnt_plot_config) timer.draw_stat() plot.show()
def main(): timer = TimeStat() pntStater = PointStat() pnt_nums = PNT_NUM_LIST logging_format = "{method_name}-{pnt_num} done ." for pnt_num in pnt_nums: pnts = generate_pnts_in_random(pnt_num, is_static_random=False) pntStater.add_stat_pnts(pnts) timer.add_stat_pnt_num(pnt_num) # brute force method_name = "brute force" timer.start_time_stat() convex_hull_pnts = find_convex_hull_bruteforce(pnts) #print convex_hull_pnts plot_pnts = ready_plot_pnts_bruteforce(convex_hull_pnts) timer.end_time_stat() timer.add_stat_brute_force_timecost(timer.get_time_cost()) pntStater.add_stat_bruteforce_convex_hull(plot_pnts) logging.info(logging_format.format(**locals())) # graham scan method_name = "gramham scan" timer.start_time_stat() convex_hull_pnts = find_convex_hull_grahamscan(pnts) plot_pnts = ready_plot_pnts_grahamscan(convex_hull_pnts) timer.end_time_stat() timer.add_stat_graham_scan_timecost(timer.get_time_cost()) pntStater.add_stat_graham_convex_hull(plot_pnts) logging.info(logging_format.format(**locals())) # divide conquer method_name = "divide conquer" timer.start_time_stat() convex_hull_pnts = find_convex_hull_dc(pnts) plot_pnts = ready_plot_pnts_dc(convex_hull_pnts) timer.end_time_stat() timer.add_stat_dc_timecost(timer.get_time_cost()) pntStater.add_stat_dc_convex_hull(plot_pnts) logging.info(logging_format.format(**locals())) timer.print_time_cost() pntStater.draw_stat(convex_hull_pnt_plot_config) timer.draw_stat() plot.show()
def main() : graph_stater = GraphStat() timer = TimeStat() for vertex_num in VERTEX_NUM_LIST : logging.info('random generate connected graph ( vertex %d)' % vertex_num) vertex , adj_matrix = generate_random_connected_graph(vertex_num , False) logging.info('generate graph done .') graph_stater.add_stat_graph(vertex , adj_matrix) timer.add_stat_vertex_num(vertex_num) # dfs logging.info('using dfs to find hamiltonian') timer.start_time_stat() hamiltonian_path_in_dfs = find_hamiltonian_in_dfs(vertex , adj_matrix , timer) timer.end_time_stat() timer.add_stat_dfs_timecost(timer.get_time_cost()) graph_stater.add_stat_dfs_path(hamiltonian_path_in_dfs) logging.info('dfs done .') print_path_in_console(hamiltonian_path_in_dfs) # bfs logging.info('using bfs to find hamiltonian') timer.start_time_stat() hamiltonian_path_in_bfs = find_hamiltonian_in_bfs(vertex , adj_matrix , timer) timer.end_time_stat() timer.add_stat_bfs_timecost(timer.get_time_cost()) graph_stater.add_stat_bfs_path(hamiltonian_path_in_bfs) logging.info('bfs done .') print_path_in_console(hamiltonian_path_in_bfs) #hill climbing logging.info('using hillclimbing to find hamiltonian') timer.start_time_stat() hamiltonian_path_in_hillclimbing = find_hamiltonian_in_hillclimbing(vertex , adj_matrix , timer) timer.end_time_stat() timer.add_stat_hillclimbing_timecost(timer.get_time_cost()) graph_stater.add_stat_hill_climbing_path(hamiltonian_path_in_hillclimbing) logging.info('hillclimbing done .') print_path_in_console(hamiltonian_path_in_hillclimbing) # Min Hamiltonian # it is different from previous logging.info('generate a complete random weighted graph') vertex , cost_matrix = generate_random_weighted_complete_graph(vertex_num,False) logging.info('done .') logging.info('using branch and bound to find minimum halmiltonian') graph_stater.add_stat_complete_graph(vertex , cost_matrix) timer.start_time_stat() min_hamiltonian = find_min_hamiltonian_in_branch_and_bound(vertex , cost_matrix) timer.end_time_stat() timer.add_stat_branch_and_bound_timecout(timer.get_time_cost()) graph_stater.add_stat_branch_and_bound_path(min_hamiltonian) print_path_in_console(min_hamiltonian) logging.info('branch and bound done .') graph_stater.draw_stat() timer.print_time_cost() timer.draw_stat() plot.show()
def main(): graph_stater = GraphStat() timer = TimeStat() for vertex_num in VERTEX_NUM_LIST: logging.info('random generate connected graph ( vertex %d)' % vertex_num) vertex, adj_matrix = generate_random_connected_graph(vertex_num, False) logging.info('generate graph done .') graph_stater.add_stat_graph(vertex, adj_matrix) timer.add_stat_vertex_num(vertex_num) # dfs logging.info('using dfs to find hamiltonian') timer.start_time_stat() hamiltonian_path_in_dfs = find_hamiltonian_in_dfs( vertex, adj_matrix, timer) timer.end_time_stat() timer.add_stat_dfs_timecost(timer.get_time_cost()) graph_stater.add_stat_dfs_path(hamiltonian_path_in_dfs) logging.info('dfs done .') print_path_in_console(hamiltonian_path_in_dfs) # bfs logging.info('using bfs to find hamiltonian') timer.start_time_stat() hamiltonian_path_in_bfs = find_hamiltonian_in_bfs( vertex, adj_matrix, timer) timer.end_time_stat() timer.add_stat_bfs_timecost(timer.get_time_cost()) graph_stater.add_stat_bfs_path(hamiltonian_path_in_bfs) logging.info('bfs done .') print_path_in_console(hamiltonian_path_in_bfs) #hill climbing logging.info('using hillclimbing to find hamiltonian') timer.start_time_stat() hamiltonian_path_in_hillclimbing = find_hamiltonian_in_hillclimbing( vertex, adj_matrix, timer) timer.end_time_stat() timer.add_stat_hillclimbing_timecost(timer.get_time_cost()) graph_stater.add_stat_hill_climbing_path( hamiltonian_path_in_hillclimbing) logging.info('hillclimbing done .') print_path_in_console(hamiltonian_path_in_hillclimbing) # Min Hamiltonian # it is different from previous logging.info('generate a complete random weighted graph') vertex, cost_matrix = generate_random_weighted_complete_graph( vertex_num, False) logging.info('done .') logging.info('using branch and bound to find minimum halmiltonian') graph_stater.add_stat_complete_graph(vertex, cost_matrix) timer.start_time_stat() min_hamiltonian = find_min_hamiltonian_in_branch_and_bound( vertex, cost_matrix) timer.end_time_stat() timer.add_stat_branch_and_bound_timecout(timer.get_time_cost()) graph_stater.add_stat_branch_and_bound_path(min_hamiltonian) print_path_in_console(min_hamiltonian) logging.info('branch and bound done .') graph_stater.draw_stat() timer.print_time_cost() timer.draw_stat() plot.show()