def generate_init_belief(state_space):
    """
    Generate the initial belief distribution over states

    Initially, there is uniform belief for all states where no machine in network is compromised
    """
    num_valid_init_states = 0
    for s in state_space:
        if not s.has_compromised_machine():
            num_valid_init_states += 1

    init_prob = 1 / num_valid_init_states
    init_belief = []
    for s in state_space:
        if not s.has_compromised_machine():
            init_belief.append(init_prob)
        else:
            init_belief.append(0)
    return init_belief