<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://neerc.ifmo.ru/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=46.233.201.233&amp;*</id>
		<title>Викиконспекты - Вклад участника [ru]</title>
		<link rel="self" type="application/atom+xml" href="http://neerc.ifmo.ru/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=46.233.201.233&amp;*"/>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%92%D0%BA%D0%BB%D0%B0%D0%B4/46.233.201.233"/>
		<updated>2026-05-04T09:59:58Z</updated>
		<subtitle>Вклад участника</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9A%D0%BE%D0%B4%D1%8B_%D0%B0%D0%BD%D1%82%D0%B8%D0%B3%D1%80%D0%B5%D1%8F&amp;diff=28636</id>
		<title>Коды антигрея</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9A%D0%BE%D0%B4%D1%8B_%D0%B0%D0%BD%D1%82%D0%B8%D0%B3%D1%80%D0%B5%D1%8F&amp;diff=28636"/>
				<updated>2013-01-01T07:35:46Z</updated>
		
		<summary type="html">&lt;p&gt;46.233.201.233: /* Двоичный код антигрея */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Определение ==&lt;br /&gt;
&lt;br /&gt;
{{Определение &lt;br /&gt;
|definition=&lt;br /&gt;
'''Код антигрея (Anti-Gray Code)''' {{---}} такое упорядочивание &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt;-ичных векторов, что [[расстояние Хэмминга]] между двумя соседними векторами максимально. &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Здесь должно быть написано о том нафига вообще все это нужно.&lt;br /&gt;
&lt;br /&gt;
== Двоичный код антигрея ==&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Двоичный код антигрея''' {{---}} такое упорядочивание двоичных векторов длины &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt;, что соседние отличаются не менее, чем в &amp;lt;tex&amp;gt;n-1&amp;lt;/tex&amp;gt; битах.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Заметим, что для &amp;lt;tex&amp;gt;n &amp;gt; 2&amp;lt;/tex&amp;gt; невозможно такое упорядочивание двоичных векторов, что соседние отличаются во всех битах. Это объясняется однозначностью &amp;quot;соседа&amp;quot; для каждого вектора. Так как количество &amp;quot;соседей&amp;quot; может быть равно &amp;lt;tex&amp;gt;2&amp;lt;/tex&amp;gt; и все вектора различны, то мы приходим к противоречию.&lt;br /&gt;
&lt;br /&gt;
=== Пример ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! n = 1 || n = 2 || n = 3&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 00 || 000&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 11 || 111&lt;br /&gt;
|-&lt;br /&gt;
| || 01 || 001&lt;br /&gt;
|-&lt;br /&gt;
| || 10 || 110&lt;br /&gt;
|-&lt;br /&gt;
| || || 011&lt;br /&gt;
|-&lt;br /&gt;
| || || 100&lt;br /&gt;
|-&lt;br /&gt;
| || || 010&lt;br /&gt;
|-&lt;br /&gt;
| || || 101&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Алгоритм генерации ===&lt;br /&gt;
&lt;br /&gt;
Возьмем двоичный зеркальный [[Коды Грея | код Грея]] размером &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt;. Тогда для первых &amp;lt;tex&amp;gt;2^{n-1}&amp;lt;/tex&amp;gt; двоичных векторов будем:&lt;br /&gt;
&lt;br /&gt;
# Печатать двоичный вектор&lt;br /&gt;
# Печатать его инверсию&lt;br /&gt;
&lt;br /&gt;
Утверждается, что с помощью данного алгоритма мы напечатаем двоичный код антигрея.&lt;br /&gt;
&lt;br /&gt;
=== Псевдокод ===&lt;br /&gt;
&lt;br /&gt;
  genBinAntiGray(n)&lt;br /&gt;
    for i = 1 to 2^(n-1)&lt;br /&gt;
      v = getMirrorGray(i, n)&lt;br /&gt;
      print(v)&lt;br /&gt;
      inverseBits(v)&lt;br /&gt;
      print(v)&lt;br /&gt;
&lt;br /&gt;
=== Доказательство корректности алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Здесь приведено доказательство корректности алгоритма выше&lt;br /&gt;
&lt;br /&gt;
== Троичный код антигрея ==&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Троичный код антигрея''' {{---}} такое упорядочивание троичных вектором, что соседние отличаются во всех разрядах.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
В отличие от двоичного кода антигрея, здесь мы не сталкиваемся с проблемой однозначности &amp;quot;соседа&amp;quot; и можем привести такой код, соседние элементы которого будут отличаться во всех разрядах.&lt;br /&gt;
&lt;br /&gt;
=== Пример ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!style=&amp;quot;width:45px&amp;quot;| n = 1 &lt;br /&gt;
!style=&amp;quot;width:45px&amp;quot;| n = 2 &lt;br /&gt;
!colspan=&amp;quot;3&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;width:135px&amp;quot;| n = 3&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 00 || 000 || 010 || 020&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 11 || 111 || 121 || 101&lt;br /&gt;
|-&lt;br /&gt;
| 2 || 22 || 222 || 202 || 212&lt;br /&gt;
|-&lt;br /&gt;
| || 01 || 001 || 011 || 021&lt;br /&gt;
|-&lt;br /&gt;
| || 12 || 112 || 122 || 102&lt;br /&gt;
|-&lt;br /&gt;
| || 20 || 220 || 200 || 210&lt;br /&gt;
|-&lt;br /&gt;
| || 02 || 002 || 012 || 022&lt;br /&gt;
|-&lt;br /&gt;
| || 10 || 110 || 120 || 100&lt;br /&gt;
|-&lt;br /&gt;
| || 21 || 221 || 201 || 211&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Алгоритм генерации ===&lt;br /&gt;
&lt;br /&gt;
Упорядочим все троичные вектора лексикографически. Тогда для первых &amp;lt;tex&amp;gt;3^{n-1}&amp;lt;/tex&amp;gt; векторов будем выводить все его поразрядные циклические сдвиги.&lt;br /&gt;
&lt;br /&gt;
Утверждается, что выполняя эти действия мы получим троичный код антигрея.&lt;br /&gt;
&lt;br /&gt;
=== Псевдокод ===&lt;br /&gt;
&lt;br /&gt;
  genTernAntiGray(n)&lt;br /&gt;
    for v = &amp;lt;000..0&amp;gt; to &amp;lt;022..2&amp;gt;&lt;br /&gt;
      digitCircleShift(v)&lt;br /&gt;
      while(v[0] != 0)&lt;br /&gt;
        print(v)&lt;br /&gt;
        digitCircleShift(v)&lt;br /&gt;
&lt;br /&gt;
Заметим, что данный алгоритм можно обобщить на случай &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt;-ичного кода антигрея.&lt;br /&gt;
&lt;br /&gt;
=== Доказательство корректности алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Здесь идет доказательство корректности приведенного выше алгоритма&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
&lt;br /&gt;
*[[Коды Грея]]&lt;br /&gt;
*[[Коды Грея для перестановок]]&lt;br /&gt;
*[[Цепные коды]]&lt;br /&gt;
&lt;br /&gt;
== Источники ==&lt;br /&gt;
&lt;br /&gt;
*[http://en.wikipedia.org/wiki/Talk%3AGray_code#Anti-Gray_Codes.3F Talk:Gray Code - Wikipedia, the free encyclopedia]&lt;/div&gt;</summary>
		<author><name>46.233.201.233</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9A%D0%BE%D0%B4%D1%8B_%D0%B0%D0%BD%D1%82%D0%B8%D0%B3%D1%80%D0%B5%D1%8F&amp;diff=28635</id>
		<title>Коды антигрея</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9A%D0%BE%D0%B4%D1%8B_%D0%B0%D0%BD%D1%82%D0%B8%D0%B3%D1%80%D0%B5%D1%8F&amp;diff=28635"/>
				<updated>2013-01-01T07:14:50Z</updated>
		
		<summary type="html">&lt;p&gt;46.233.201.233: /* Пример */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Определение ==&lt;br /&gt;
&lt;br /&gt;
{{Определение &lt;br /&gt;
|definition=&lt;br /&gt;
'''Код антигрея (Anti-Gray Code)''' {{---}} такое упорядочивание &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt;-ичных векторов, что [[расстояние Хэмминга]] между двумя соседними векторами максимально. &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Здесь должно быть написано о том нафига вообще все это нужно.&lt;br /&gt;
&lt;br /&gt;
== Двоичный код антигрея ==&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Двоичный код антигрея''' {{---}} такое упорядочивание двоичных векторов длины &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt;, что соседние отличаются не менее, чем в &amp;lt;tex&amp;gt;n-1&amp;lt;/tex&amp;gt; битах.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Объяснение, почему невозможен код, где соседние отличаются во всех битах.&lt;br /&gt;
&lt;br /&gt;
=== Пример ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! n = 1 || n = 2 || n = 3&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 00 || 000&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 11 || 111&lt;br /&gt;
|-&lt;br /&gt;
| || 01 || 001&lt;br /&gt;
|-&lt;br /&gt;
| || 10 || 110&lt;br /&gt;
|-&lt;br /&gt;
| || || 011&lt;br /&gt;
|-&lt;br /&gt;
| || || 100&lt;br /&gt;
|-&lt;br /&gt;
| || || 010&lt;br /&gt;
|-&lt;br /&gt;
| || || 101&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Алгоритм генерации ===&lt;br /&gt;
&lt;br /&gt;
Возьмем двоичный зеркальный [[Коды Грея | код Грея]] размером &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt;. Тогда для первых &amp;lt;tex&amp;gt;2^{n-1}&amp;lt;/tex&amp;gt; двоичных векторов будем:&lt;br /&gt;
&lt;br /&gt;
# Печатать двоичный вектор&lt;br /&gt;
# Печатать его инверсию&lt;br /&gt;
&lt;br /&gt;
Утверждается, что с помощью данного алгоритма мы напечатаем двоичный код антигрея.&lt;br /&gt;
&lt;br /&gt;
=== Псевдокод ===&lt;br /&gt;
&lt;br /&gt;
  genBinAntiGray(n)&lt;br /&gt;
    for i = 1 to 2^(n-1)&lt;br /&gt;
      v = getMirrorGray(i, n)&lt;br /&gt;
      print(v)&lt;br /&gt;
      inverseBits(v)&lt;br /&gt;
      print(v)&lt;br /&gt;
&lt;br /&gt;
=== Доказательство корректности алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Здесь приведено доказательство корректности алгоритма выше&lt;br /&gt;
&lt;br /&gt;
== Троичный код антигрея ==&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Троичный код антигрея''' {{---}} такое упорядочивание троичных вектором, что соседние отличаются во всех разрядах.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
В отличие от двоичного кода антигрея, здесь мы не сталкиваемся с проблемой однозначности &amp;quot;соседа&amp;quot; и можем привести такой код, соседние элементы которого будут отличаться во всех разрядах.&lt;br /&gt;
&lt;br /&gt;
=== Пример ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!style=&amp;quot;width:45px&amp;quot;| n = 1 &lt;br /&gt;
!style=&amp;quot;width:45px&amp;quot;| n = 2 &lt;br /&gt;
!colspan=&amp;quot;3&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;width:135px&amp;quot;| n = 3&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 00 || 000 || 010 || 020&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 11 || 111 || 121 || 101&lt;br /&gt;
|-&lt;br /&gt;
| 2 || 22 || 222 || 202 || 212&lt;br /&gt;
|-&lt;br /&gt;
| || 01 || 001 || 011 || 021&lt;br /&gt;
|-&lt;br /&gt;
| || 12 || 112 || 122 || 102&lt;br /&gt;
|-&lt;br /&gt;
| || 20 || 220 || 200 || 210&lt;br /&gt;
|-&lt;br /&gt;
| || 02 || 002 || 012 || 022&lt;br /&gt;
|-&lt;br /&gt;
| || 10 || 110 || 120 || 100&lt;br /&gt;
|-&lt;br /&gt;
| || 21 || 221 || 201 || 211&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Алгоритм генерации ===&lt;br /&gt;
&lt;br /&gt;
Упорядочим все троичные вектора лексикографически. Тогда для первых &amp;lt;tex&amp;gt;3^{n-1}&amp;lt;/tex&amp;gt; векторов будем выводить все его поразрядные циклические сдвиги.&lt;br /&gt;
&lt;br /&gt;
Утверждается, что выполняя эти действия мы получим троичный код антигрея.&lt;br /&gt;
&lt;br /&gt;
=== Псевдокод ===&lt;br /&gt;
&lt;br /&gt;
  genTernAntiGray(n)&lt;br /&gt;
    for v = &amp;lt;000..0&amp;gt; to &amp;lt;022..2&amp;gt;&lt;br /&gt;
      digitCircleShift(v)&lt;br /&gt;
      while(v[0] != 0)&lt;br /&gt;
        print(v)&lt;br /&gt;
        digitCircleShift(v)&lt;br /&gt;
&lt;br /&gt;
Заметим, что данный алгоритм можно обобщить на случай &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt;-ичного кода антигрея.&lt;br /&gt;
&lt;br /&gt;
=== Доказательство корректности алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Здесь идет доказательство корректности приведенного выше алгоритма&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
&lt;br /&gt;
*[[Коды Грея]]&lt;br /&gt;
*[[Коды Грея для перестановок]]&lt;br /&gt;
*[[Цепные коды]]&lt;br /&gt;
&lt;br /&gt;
== Источники ==&lt;br /&gt;
&lt;br /&gt;
*[http://en.wikipedia.org/wiki/Talk%3AGray_code#Anti-Gray_Codes.3F Talk:Gray Code - Wikipedia, the free encyclopedia]&lt;/div&gt;</summary>
		<author><name>46.233.201.233</name></author>	</entry>

	</feed>