Отображение двух целых чисел в одно уникальным и детерминированным способом

Вы ищете биективное сопоставление integer NxN -> N. Они используются, например, для maping dovetailing. Взгляните на this PDF для введения maths в так называемые функции сопряжения. В Википедии mappings представлена ​​особая функция maths сопряжения, а именно Cantor pairing function:

Отображение двух целых чисел в одно уникальным и детерминированным способом_algorithms

Три algorithms замечания:

  • Как пояснили другие, если вы планируете реализовать функцию сопряжения, вы вскоре можете обнаружить, что вам нужны произвольно большие целые числа (bignums).
  • Если вы не хотите проводить различие между парами (a, b) и (b, a), отсортируйте a и b перед применением функции сопряжения.
  • На самом деле я солгал. Вы ищете биективное сопоставление ZxZ -> N. Функция Кантора работает только с неотрицательными числами. Однако это не проблема, потому что легко определить биекцию f : Z -> N, например:
    • f (n) = n * 2, если n> = 0
    • f (n) = -n * 2 - 1, если n <0

algorithm

mapping

integer

deterministic

math

2022-11-02T17:34:13+00:00