304
правки
Изменения
Нет описания правки
'''Коды Грея для перестановок''' {{---}} упорядочение перестановок, при котором соседние перестановки отличаются только элементарной транспозицией.<br>
'''Элементарная транспозиция''' {{---}} транспозиция двух соседних элементов. Далее будем называть элементарную транспозицию просто транспозицией.}}
== Примеры кодов Грея для перестановок ==
{| border="1" cellpadding="3" | $n = 2 $ || n = 3 $\{1, 2\}$ || $\{2, 1\}$
|-
| {1, 2} $n = 3$ || $\{1, 2, 3\} |- | {2, 1} $ || $\{1, 3, 2\} |- | $ || $\{3, 1, 2\} |- | $ || $\{3, 2, 1\} |- | $ || $\{2, 3, 1\} |- | $ || $\{2, 1, 3\} $
|}
== Построение кода Грея для перестановок ==
Будем строить код Грея для длины $n = k$. Предположим, что нам известен код Грея для перестановок длиной $n = k - 1$. Возьмем первую перестановку из известного нам кода. Пусть она выглядит такОна имеет следующий вид: {a<sub>1</sub>, a<sub>2</sub>, a<sub>3</sub>, ..., a<sub>k-1</sub>} ,где $a_{i}$ при $i = 1, 2, 3, ..., k$ {{---}} элементы перестановки. Элемент $a_\{k}$ запишем в начало этой перестановки: {'''a<sub>k</sub>'''a_1, a<sub>1</sub>a_2, a<sub>2</sub>a_3, a<sub>3</sub>\dots, ..., a<sub>k - 1</sub>} Будем "двигать" этот элемент $a_{k}$ вправо, меняя его с соседним(жирным выделены элементы, которые поменялись):*{a<sub>k</sub>, a<sub>1</sub>, a<sub>2</sub>, a<sub>3</sub>, ..., a<sub>k - 1</sub>} (1) *{'''a<sub>1</sub>''', '''a<sub>k</sub>''', a<sub>2</sub>, a<sub>3</sub>, ..., a<sub>k - 1</sub>} (2) *{a<sub>1</sub>, '''a<sub>2</sub>''', '''a<sub>k</sub>''', a<sub>3</sub>, ..., a<sub>k - 1</sub>} *{a<sub>1</sub>, a<sub>2</sub>, '''a<sub>3</sub>''', '''a<sub>k</sub>''', ..., a<sub>k - 1</sub>\} *$..........................$
*$\{a<sub>\underline{k, a_1}, a_2, a_3, \dots, a_{k-1}\}$* $\{a_1, \underline{k, a_2}, a_3, \dots, a_{k-1}\}$* $\{a_1, a_2, \underline{k, a_3}, \dots, a_{k-1}\}$* $\{a_1, a_2, a_3, \underline{k, \dots}, a_{k-1}\}$* $\{a_1, a_2, a_3, \dots, \underline{k, a_{k-1</sub>}}\}$* $\{a_1, a<sub>2</sub>a_2, a<sub>3</sub>a_3, ...\dots, '''a<sub>a_{k - 1</sub>'''}, '''a<sub>k</sub>'''\} (3)$
Получим $k$ различных перестановок, отличающихся в одной транспозицииэлементарной транспозицией. Возьмем следующую строку из кода Грея для перестановок длиной $n = k - 1$, которая будет выглядеть так (т.к. мы получили, что элемент стоящий на первом месте в перестановке будет "двигаться" вправо см. (1), (2), то и во второй перестановке первый элемент "поменяется" со вторым):
{'''a<sub>2</sub>''', '''a<sub>1</sub>''', a<sub>3</sub>, ..., a<sub>k - 1</sub>}