Arvi the Hacker (Арви Хэкер) (arvi) wrote,
Arvi the Hacker (Арви Хэкер)
arvi

Categories:

Третье состоянье.

   Некоторые элементы «Базы» уже просочились в широкие слои общественности. Суровость той тренировки, которую проходят мои ученики в системах счисления и логических операциях, вошла в легенды.
   Но в hscool даётся необходимое и не хватает той самой сумасшедшинки, которую полюбили читатели этого журнала. Поэтому давайте расскажу о том, что сейчас лично мне интереснее всего. Это более эзотерическое знание, ведь за него враг «валюту» не заплатит. В «Искусстве программирования» от Дональда Кнута этому посвящён единственный листик (т.2, стр. 238-241/832). Который некоторые пропускают, а некоторые зачитывают до дыр.

0. Трёхзначная логика


 Zero and One
Good evening. Now, now I'm no mathematician, but I'd like to talk about a just couple of numbers that have really been bothering me lately. And they are zero and one. Now first, let's take a look at zero. Now nobody wants to be a zero. To be a zero means to be a nothing, a nobody, a has-been, a clod.

On the other hand, almost everybody wants to be number one. To be a number one means to be a winner, top of the heap, the acme. And there seems to be a strange kind of national obsession with this particular number.

Now, in my opinion, the problem with these two numbers is that they are just too close. It leaves very little room in there for everybody else. Just not enough range...

© 1986, Laurie Anderson


   Мы привыкли, что есть правда и ложь. Что третьего не дано. Не так давно я рассказывал про византийскую Матрицу, в которую „шавка“ и „пастух“ ловят человека. В том случае имелись в виду православные mithgol и apazhe, которые высказывали ко мне ограниченную симпатию и заразительную антипатию соответственно. Если ты лишь робот, привычно «ищущий истину» или животное, любящее ласку, то в такой ситуации уподобляешься электрону. Отталкиваешься от того места, где на тебя „тявкают“, мешают работать. И стремишься туда, где „хвалят“ или платят деньги.
   Эта логика вошла в поговорки. «Собака лает, караван идёт», «свято место пусто не бывает» — это всё о традиционной, двоичной логике. Точнее о её взаимодействии с троичным “инструментальным” миром.

   Представим теперь третье состояние. То, что помимо железных американских границ „истинно“ и „ложно“, „разрешено“ и „запрещено“, „профанно“ и „свято“ есть нечто другое. Например „неизвестно“, „скрыто“ или „изменчиво“, „сигнал“. Возможно, что это „жизнь“ или „свобода“ — нечто, что ещё (якобы) не оцифровано. Ещё не взято в официальные рамки, тиски ноликов и единичек. Не подчинено инструкциям, тарифам от МТС, и т.д.
   Любители ролевых игр мгновенно узнают знакомые им триады Законный-Нейтральный-Хаотичный (Lawful-Neutral-Chaotic) и Добрый-Нейтральный-Злой (Good-Neutral-Evil). Оказывается, для этого есть чёткая и несложная математика.

1. Традиционная запись


 Нормальное состояние - скрип зубов за стеной,
В нормальном состоянии все, что рядом со мной.
Нормальное состояние- строго дозированный кайф,
Пломбированные ящички для надежд.

© 1996, olegmedvedev (mp3)

   Мы привыкли, что булевские (двухзначные) логические состояния записываются „0“ или „1“. В традиционной трёхзначной логике им соответствуют знаки „-“ и „+“. „Ложь“ это отрицательное, „истина“ это положительное. (см. ниже логическое осмысление трита)
   Третье (серединное) состояние назовём „мерой“ и обозначим кружочком, „0“. Наименьшей единицей информации теперь является трит. Сегодня мы будем разбирать операции над одним тритом, то есть переменная α может хранить лишь три значения: „-“, „0“ или „+“. У других авторов вы можете встретить обозначаения 1, 0, 1 или N, O, P. Некоторые отличают „ложь“ от „истины“ с помощью подчёркиванья: 1, 0, 1.
   Название „мера“ отражает тот факт, что третье состояние естественно моделирует элементарный процесс измерения, важнейший для физики и других естественных наук. Например, если измерение показало метр ткани (или килограмм сахара), то это „мера“ („0“). Если меньше, то результат „-“. Если больше, то результат „+“.

2. Традиционные одноместные операции


   Опишу традиционные одноместные («унарные») операции, то есть операции над одним тритом.
   В двухзначной логике профессора Буля была лишь одна такая операция. Именно она (точнее её трёхзначный аналог) уважает концепцию „третьего состояния“, о которой я рассказывал. Другие с ним довольно цинично обходятся, т.к. с точки зрения формальной логики оно ничем не отлично от соседних.

2.1. Инверсия


 Мне на плечи кидается век-волкодав
Он по своему прав, я по-своему прав
Я держусь, он проводит удары
Мы, наверно, красивая пара.
Я по-своему прав, он по-своему прав
Я не пёс и не волк, его парит мой нрав
Я держусь, он проводит удары
Я держусь, он проводит удары.

© 2006, sexfunk

   Инверсия меняет местами два разных логических состояния. Традиционное отрицание NOT, не влияющее на третье состояние («зеркальное отрицание», обращение, дополнение), математики называют отрицанием Лукашевича и обозначают, как ~x (сам Ян Лукашевич обозначал её, как Nx; иностранцы пишут ¬x, иногда встречается запись x'; Брусенцов использовал запись x). Очевидно, что ~~x=x, ведь ~x означает просто изменить знак трита (плюс на минус, минус на плюс).

   Помимо него, есть ещё две операции инверсии. Первая из них (обозначим её NOT-) сохраняет неизменным состояние „-“, вторая (соответственно NOT+) сохраняет состояние „+“. В нашей трактовке — прячут „истину“ или „ложь“, давая им свободу от тисков двоичной логики. В разном качестве выводя на сцену тех, кто был до этого „0“ — ненаблюдаем в логичных (по-двоичному) СМИ, подобно НБП при Путине.
   Вот таблицы истинности для этих трёх инверсий:

αNOT- αNOT αNOT+ α
--+0
0+0-
+0-+


2.2. Модификация


   Полное название этих одноместных операций: увеличение на единицу по модулю три (INC) и уменьшение на единицу по модулю три (DEC). Что означает «по модулю три»? Это означает, что когда тритик «переполняется», то счёт начинается заново. Только с другого конца. То есть увеличение „+“ даёт „-“. На фоне общего «увеличения» то, что считалось ранее за „истину“, становится „ложью“. А кто был никем („0“), тот станет всем („+“). Также уменьшение „-“ даёт „+“, «из грязи — в князи».

αINC αDEC α
-0+
0+-
+-0

   Несложно видеть, что если дважды применить операцию модификации, то мы получим либо другую операцию модификации (если применяли одинаковую операцию), либо восстановим аргумент (если операции были разными). Если записать это формулами, то получим:

INC INC α = DEC α
DEC DEC α = INC α
INC DEC α = α
DEC INC α = α


   Т.к. из одной операции можно получить другую, математики используют лишь одну из них, а именно INC, обозначая её просто, как x или x'. Иногда её называют «циклическим отрицанием», т.к. значение восстанавливается не при двойном, а при тройном применении этой операции: x'''=x.

2.3. Выбор


   Все предыдущие операции просто «тасовали» логические состояния. Информация сохранялась, но «запутывалась», словно моток ниток в кошачьих лапках. Операции выбора выделяют одно из трёх состояний (то есть превращают в „+“, истину), при этом уничтожая разницу между оставшимися двумя (превращая оба в „-“, ложь).
   Обозначим эту операцию буквой S, от английского слова Select (выбирать). (Математики используют буковку I или J, называя эту операцию характеристической функцией.) Таблица истинности каждой из этих трёх операций содержит везде „-“, кроме единственного значения, которое ею можно выбрать.

αS- αS αS+ α
-+--
0-+-
+--+

   Из этих трёх операций достаточно реализовать всего одну. Остальные получатся из неё при помощи модификации аргумента, например:

S- α = S INC α
S+ α = S DEC α


   Операция выбора основана на избирательном свойстве отрицания, которое пытливый читатель может заметить даже в отрицании Буля из прошлого века.

3. Остальные одноместные операции


   Несложно подсчитать, что в троичной системе существует всего 27 одноместных операций. Давайте-ка их все пронумеруем, от f0 до f26:

αf0f1f2f3f4f5f6f7f8f9f10f11f12f13f14f15f16f17f18f19f20f21f22f23f24f25f26
----------000000000+++++++++
0---000+++---000+++---000+++
+-0+-0+-0+-0+-0+-0+-0+-0+-0+
 -S+  αSNOT-   NOT+ 0α+INCα°S-DEC NOTα-   +


   Несложно видеть, что f0, f13 и f26 это вырожденные операции. Они не зависят от своего аргумента и всегда представляют из себя константы „-“, „0“ и „+“. Такой же вырожденной операцией является операция f5, не меняющая значение своего аргумента.
   Операции f2, f6, f18 (выбора: S+, S, S-) и f7, f11, f21 (инверсии: NOT-, NOT+, NOT) и f15, f19 (модификации: INC, DEC) мы уже разбирали.
   Оставшиеся 15 функций являются вариантами трёх операций выбора, просто в другой кодировке выбранного и невыбранных значений. Например f1, как и S+, всегда равна „-“, кроме единственного случая, когда на входе „+“. Но в отличии от S+, в этом случае функция f1 даёт „0“, а не „+“. Поэтому f1 можно легко получить, применив NOT- к S+: f1(α)=NOT-(S+(α)).
   Все эти 15 функций (о некоторых из них мы поговорим позднее) можно получить с помощью уже изученных операций инверсии и модификации, применяя их к соответствующей операции выбора, что доказывает полноту традиционных одноместных операций:

 S-SS+
NOT-f9f3f1
NOTf8f20f24
NOT+f22f16f14
INCf4f10f12
DECf17f23f25


4. Числа


   Очевидно, что один трит может хранить числа -1, 0 и 1. Это называется арифметическим осмыслением трита, в отличии от логического осмысления, где роль «логического нуля» (двоичной лжи) выполняет „-“, а роль «логической единицы» (двоичной истины) выполняет „+“.
   Шесть тритов образуют трайт. Какие же числа можно записать в трайт? Давайте для начала посмотрим, какие числа вмещаются в два трита.
   В троичной системе счисления вес каждого следующего разряда (если считать справа налево) в три раза больше. Если „+“ это 1, то „+0“ это 3, „+00“ — 9 и так далее. Меняя последний битик, можно прибавлять или вычитать единичку, например „+0+“ это уже 10, а „+-“ это 2. Приведу ниже все состояния двух тритов, их значения в привычной десятичной системе счисления и буквенно-цифровой код в уравновешенно-девятеричной системе, которую удобно использовать для трампов (распечаток троичной памяти):

триты---0-+0-000++-+0++
кодdcba01234
значение-4-3-2-101234


   Точно также в трайт можно записать число ноль и одинаковое количество положительных и отрицательных чисел. Так как 36=729, получаем, что минимальное значение трайта это ddd9 (------3 или -36410), а максимальное это 4449 (++++++3 или 36410). Мы видим, что трайт это более удобная единица хранения информации, чем байт. Ведь он способен хранить весь диапазон значений байта (0..255), этот же диапазон со знаком «минус», и ещё место про запас остаётся!


P.S. Спасибо magenta_13 за ссылки на описания и фотографии советской машины «Сетунь», в которой акад. Брусенцов Н.П. реализовал трёхзначную логику на аппаратном уровне.

( продолжение следует )
Subscribe
  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 21 comments