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()
                    map_matrix[i + 1][j + 1] = map_matrix[i][j] + 1
                    if map_matrix[i + 1][j + 1] > m_max:
                        m_max = map_matrix[i + 1][j + 1]
                        position = i + 1
        '''
        print('     ' + ' '.join(list(string_2)))
        for idx, i in enumerate(map_matrix):
            if idx == 0:
                print(' ', i)
            else:
                print(string_1[idx - 1], i)
        '''
        return string_1[position - m_max:position], int(m_max)


if __name__ == '__main__':
    import time
    from time_stat import TimeStat

    lcs_dp = LongestCommonStringDynamicProgramming()
    string_1 = '123456778'
    string_2 = '129834567486782'
    max_iter = 10000

    with TimeStat() as ts:
        for i in range(max_iter):
            res = lcs_dp(string_1, string_2, flag=False)
    with TimeStat() as ts:
        for i in range(max_iter):
            res = lcs_dp(string_1, string_2, flag=True)
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() :
    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()
示例#5
0
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()