2013-06-20 3 views
2

Учитывая бит вектор V = (101101) и функцию перестановки: F (x) = (a * x + b) mod p. Где a и b - случайные числа, а p - простое число. Как я могу вычислить перестановку вектора V? F (x) принимает V как целое значение или я должен использовать каждый бит в V как x для функции?Как вычислить перестановку битового вектора?

+1

Каков ваш контекст? Является ли битовый вектор, представляющий число в двоичном формате? – greyfairer

+0

@greyfairer Нет, это всего лишь бит-вектор –

+0

Перестановка на бит-векторе с использованием этой функции для меня не имеет смысла. Было бы разумно, если бы это было умножение матрицы перестановок или что-то еще ... – greyfairer

ответ

1

Да, чтобы переставить бит-бит, затем возьмите каждый бит и примените к нему функцию перестановки.

An introduction to permutation functions

1

В этом определении, функция перестановки дает новую позицию для каждого элемента в векторе. Например. при a = 2, b = 0, p = 7, функция дает {0,1,2,3,4,5,6} -> {0,2,4,6,1,3,5}.

Используя эту функцию, можно переставить любой вектор из 7 элементов, преобразуя {a, b, c, d, e, f, g} в {a, c, e, g, b, d, f}.

Это работает только в том случае, если размер вектора равен простому p. Итак, для вектора бит каждый элемент в позиции n помещает a * n + b mod p.

Это также работает для непустого числа p, если a и b взаимно согласованы с p.

Смежные вопросы