Пример #1
0
def test_facto(nb_states_1, nb_letters_1, nb_states_2, nb_letters_2):
    while True:
        m1 = generator.helix(nb_states_1, nb_letters_1)
        m2 = generator.helix(nb_states_2, nb_letters_2)
        m = product(m1, m2)
        if m.bireversible():
            break

    # print(m)
    return len(factor(m)) != 0
Пример #2
0
def test_factor_inv(nb_states_1, nb_letters_1, nb_states_2, nb_letters_2):
    while True:
        m1 = generator.helix(nb_states_1, nb_letters_1)
        m2 = generator.helix(nb_states_2, nb_letters_2)
        m = product(m1, m2)
        if m.bireversible():
            break

    print(m)
    return factor_inv(m) is not None
Пример #3
0
def test_all_factors_iso_inv_n(n):
    c_smart = 0
    for _ in range(n):
        smart = test_all_factors_iso_inv(generator.helix(4, 4))
        if smart:
            c_smart += 1
    print("smart", c_smart, "/", n)
Пример #4
0
def test_all_factors_n(n):
    c_inv = 0
    c_smart = 0
    for _ in range(n):
        inv, smart = test_all_factors(generator.helix(4, 3))
        if inv:
            c_inv += 1
        if smart:
            c_smart += 1
    print("inv", c_inv, "/", n)
    print("smart", c_smart, "/", n)
Пример #5
0
def test_divide(nb_states, nb_letters):
    while True:
        m1 = helix(nb_states, nb_letters)
        m2 = helix(nb_states, nb_letters)
        m = product(m1, m2)
        if m.bireversible():
            break

    ma = divide_right(m, m2)

    print(ma)
    if ma == m1:
        print("C'EST LE BON")
        prod = product(ma, m2)
        return True


#    if prod == m:
#        return True

    return False
Пример #6
0
def perf_func(test_size, funcs):
    test_set = []
    for i in range(1, test_size):
        for j in range(test_size):
            if i * j <= test_size:
                for _ in range(2):
                    test_set.append(generator.helix(i, j))
                    print("Generated", len(test_set))
    print("Test set generated")
    bars = []
    for f in funcs:
        bars.append(perf_facto(f[0], f[1], len(test_set) // 2, test_set, x))

    plt.figure(1)
    ind = list(range(len(test_set) // 2))
    for i in range(len(bars)):
        plt.subplot(1, 2, i + 1)
        plt.bar(ind, bars[i], 1)
        plt.title(funcs[i][0])

    plt.show()