Изменения

Перейти к: навигация, поиск

Коды Грея для перестановок

28 байт добавлено, 12:31, 7 декабря 2014
Доказательство корректности
Будем использовать обозначения:
*<tex>(\overset{\text {$\to$}}{a,}</tex> ←<tex>)</tex> <tex> {{--- </tex> }} элемент с заданным направлением(компонента).*<tex>P[i]</tex> <tex> {{--- </tex> }} перестановка с номером <tex>i</tex>.*<tex>P[i]\backslash\{a\}\;</tex> <tex> {{--- </tex> }} перестановка с номером <tex>i</tex> без элемента <tex>a</tex>.
{{Утверждение
|id=approval1
|statement=Число <tex>n</tex> в перестановке не является подвижным элементом тогда и только тогда, когда первая компонента перестановки есть <tex>(\overset{\text {$\leftarrow$}}{n,</tex> ←<tex>)}</tex> или последняя компонента есть <tex>(\overset{\text {$\to$}}{n,</tex> →<tex>)}</tex>.
}}
|id=lemma1
|statement=Если в перестановке <tex>P[i]</tex> есть подвижный элемент <tex>a \neq n</tex>, то также определены перестановки <tex>P[i + 1] ... P[i + n]</tex>. Причём, <tex>P[i + 1]\backslash\{n\} = P[i + 2]\backslash\{n\} = ... = P[i + n]\backslash\{n\}</tex>.
|proof=Заметим, что если в перестановке есть подвижный элемент <tex>a \neq n</tex>, то после транспозиции его с соседним элемнтом(по направлению стрелки), нам нужно будет заменить направление стрелок у всех элементов больше <tex>a</tex>. Так как <tex>n</tex> больше любого элемента из перестановки, то направление стрелки у него тоже изменится. По нашему утверждению, либо в новой перестановке окажется компонента <tex>(\overset{\text {$\to$}}{n,</tex> →<tex>)}</tex> на первой позиции, либо компонента <tex>(\overset{\text {$\leftarrow$}}{n,</tex> ←<tex>)}</tex> на последней позиции. В обоих случаях <tex>n</tex> окажется подвижным элементом в следующих <tex>n</tex> перестановках. Так как в следующих <tex>n</tex> перестановках подвижным элементом будет только <tex>n</tex>, то <tex>P[i + 1]\backslash\{n\} = P[i + 2]\backslash\{n\} = ... = P[i + n]\backslash\{n\}</tex>.
}}
130
правок

Навигация