def generate_NBA():
    start = datetime.datetime.now()
    task = Task()
    buchi = Buchi(task)
    buchi.construct_buchi_graph()
    buchi.get_minimal_length()
    buchi.get_feasible_accepting_state()
    buchi_graph = buchi.buchi_graph
    NBA_time = (datetime.datetime.now() - start).total_seconds()
    print('Time for constructing the NBA: {0:.4f} s'.format(NBA_time))
    return buchi, buchi_graph
    save_covariances = True
    drone_height = 16.0  # altitude of drones
    waypoint_folder_location = "/home/samarth/catkin_ws/src/rotors_simulator/rotors_gazebo/resource"
    launch_folder_location = "/home/samarth/catkin_ws/src/rotors_simulator/rotors_gazebo/launch"

    time_array = []  #stores time for each trial run
    cost_array = []  #stores cost of each trial run

    for round_num in range(number_of_trials):
        print('Trial {}'.format(round_num + 1))
        start = datetime.datetime.now()
        task = Task()
        buchi = Buchi(task)
        buchi.construct_buchi_graph()
        buchi.get_minimal_length()
        buchi.get_feasible_accepting_state()
        buchi_graph = buchi.buchi_graph
        NBA_time = (datetime.datetime.now() - start).total_seconds()
        print('Time for constructing the NBA: {0:.4f} s'.format(NBA_time))

        # workspace
        workspace = Workspace()
        geodesic = Geodesic(workspace, task.threshold)
        # parameters
        n_max = 100000
        para = dict()
        # lite version, excluding extending and rewiring
        para['is_lite'] = True
        # step_size used in function near
        para['step_size'] = 0.25 * buchi.number_of_robots
        # probability of choosing node q_p_closest