Примеры инъективных функций сокращения?

Есть ли какие-либо источники для поиска общих инъективных функций сокращения карты? (Есть ли название для таких функций?)

Например, мне нужно сопоставить список чисел

lst = [1,2,3,4]

в кортеж (сумма, произведение)

def mapper(lst):
    sum_, prod = 0, 1
    for e in lst:
        sum_ += e
        prod *= e
res = mapper(lst)
# res = tuple(10, 24)

Но это отображение не является инъективным, потому что списки:

x = [1,2,3,4]
y = [4,3,2,1]

дают тот же результат.

Меня не особенно беспокоит "сложность" инвертирования этих функций, но разные источники для простых и сложных обратимых функций были бы полезны.

Также было бы неплохо, если бы результат не "взрывался" в дальности. Например, функция:

def mapper(lst):
    res = 1
    for e, prime in zip( lst, prime_number_generator() ):
        res *= prime**e

является сокращением карты, а также инъективным, но результатом будет:

res = 2^1 * 3^2 * 5^3 * 7^4 = 2 * 9 * 125 * 2401 = 5402250 # too large number

0 ответов

Другие вопросы по тегам