# Path: stationary/utils/math_helpers.py
# def normalize(x):
#     s = float(sum(x))
#     for j in range(len(x)):
#         x[j] /= s
#     return x
# 
# def multiply_vectors(a, b):
#     c = []
#     for i in range(len(a)):
#         c.append(a[i]*b[i])
#     return c


from ..utils.math_helpers import normalize, multiply_vectors
    incentive: function
        An incentive function from incentives.py
    mu: float, 0.001
        The mutation rate of the process
    """

    if not death_probabilities:
        death_probabilities = moran_death(N)
    edges = []
    # Possible states are (a, b) with 0 < a + b <= N where a is the number of A
    # individuals and B is the number of B individuals.
    for a in range(0, N + 1):
        for b in range(0, N + 1 - a):
            # Death events.
            if a + b == 0:
                continue
            p = death_probabilities((a, b))
            if a > 0 and b > 0:
                q = p * float(a) / (a + b)
                if q > 0:
                    edges.append(((a, b), (a - 1, b), q))
                q = p * float(b) / (a + b)
                if q > 0:
                    edges.append(((a, b), (a, b - 1), q))
            # Birth events.
            if a + b >= N:
                continue
            if incentive:
                birth_q = normalize(incentive([a,b]))
            else:

# Path: stationary/utils/math_helpers.py
# def normalize(x):
#     s = float(sum(x))
#     for j in range(len(x)):
#         x[j] /= s
#     return x
# 
# def multiply_vectors(a, b):
#     c = []
#     for i in range(len(a)):
#         c.append(a[i]*b[i])
#     return c


# Path: stationary/processes/variable_population_size.py
from ..utils.math_helpers import normalize, multiply_vectors

    incentive: function
        An incentive function from incentives.py
    mu: float, 0.001
        The mutation rate of the process
    """

    if not death_probabilities:
        death_probabilities = moran_death(N)
    edges = []
    # Possible states are (a, b) with 0 < a + b <= N where a is the number of A
    # individuals and B is the number of B individuals.
    for a in range(0, N + 1):
        for b in range(0, N + 1 - a):
            # Death events.
            if a + b == 0:
                continue
            p = death_probabilities((a, b))
            if a > 0 and b > 0:
                q = p * float(a) / (a + b)
                if q > 0:
                    edges.append(((a, b), (a - 1, b), q))
                q = p * float(b) / (a + b)
                if q > 0:
                    edges.append(((a, b), (a, b - 1), q))
            # Birth events.
            if a + b >= N:
                continue
            if incentive:
                birth_q = normalize(incentive([a,b]))
            else:

                birth_q = normalize(