Троичная логика — различия между версиями
Romanosov (обсуждение | вклад) (→Определение) |
м (rollbackEdits.php mass rollback) |
||
(не показано 49 промежуточных версий 3 участников) | |||
Строка 1: | Строка 1: | ||
− | + | '''Троичная''' или '''трёхзначная логика''' (англ. ''ternary logic'') — один из видов многозначной логики, использующий три истинностных значения. | |
+ | В традиционной трёхзначной логике "лжи" и "истине" соответствуют знаки <tex>-</tex> и <tex>+</tex>. Третьему (серединному) состоянию соответствует знак <tex>0</tex>. Допустимо использование таких наборов знаков, как <tex>\{0,1,2\}</tex>, <tex>\{-1,0,1\}</tex>, <tex>\{0,1/2,1\}</tex> <tex>\{N,Z,P\}</tex>, и др. Иногда используют обозначения И, Л, Н (истина, ложь и неизвестность). | ||
+ | |||
+ | Классическим примером состояний такой логики является множество <tex>\{>, <, =\}</tex>, — значения, которые может принимать компаратор двух объектов. | ||
{{Определение | {{Определение | ||
|definition = | |definition = | ||
− | ''' | + | '''Троичная функция''' (или '''тернарная функция''') от <tex>n</tex> переменных — это отображение <tex>T^n</tex> → <tex>T</tex>, где <tex>T = \{-, 0, +\}</tex>. |
}} | }} | ||
− | + | ==Одноместные операции== | |
− | + | ||
+ | По-аналогии с [[Определение_булевой_функции | двоичной логикой]], в троичной логике существует всего <tex>3^{3^n}</tex> операций для <tex>n</tex> аргументов. Таким образом, в троичной логике всего существует <tex>3^{3^1}=27</tex> одноместных операций. | ||
+ | |||
+ | ===Инверсия=== | ||
+ | |||
+ | <tex>NOT^-</tex>,<tex>NOT</tex> и <tex>NOT^+</tex> — операторы '''инверсии''', сохраняющие состояние <tex>-</tex>, <tex>0</tex> и <tex>+</tex> соответственно, когда оно соответствует типу оператора, или обращающие в значение, не равное исходному состоянию и не соответствующее типу оператора инверсии, то есть в оставшееся третье. | ||
+ | |||
+ | Например, если <tex>a = (-)</tex>, то <tex>NOT^+a=0</tex>. Так как исходное состояние <tex>(-)</tex>, тип инверсии <tex>NOT^+</tex>, то методом исключения можно прийти к результирующему состоянию <tex>0</tex>. | ||
+ | |||
+ | Все возможные варианты для данной одноместной операции приведены в таблице. | ||
+ | |||
+ | {| style="background-color:#CCC;margin:0.5px" | ||
+ | !style="background-color:#EEE"| <tex>\bf{a}</tex> | ||
+ | !style="background-color:#EEE"| <tex>\bf{NOT^-}</tex> | ||
+ | !style="background-color:#EEE"| <tex>\bf{NOT}</tex> | ||
+ | !style="background-color:#EEE"| <tex>\bf{NOT^+}</tex> | ||
+ | |||
+ | |- | ||
+ | |style="background-color:#EEE;padding:2px 30px"| <tex>\bf{-}</tex> | ||
+ | |style="background-color:#FFF;padding:2px 30px"| <tex>-</tex> | ||
+ | |style="background-color:#FFF;padding:2px 30px"| <tex>+</tex> | ||
+ | |style="background-color:#FFF;padding:2px 30px"| <tex>0</tex> | ||
+ | |- | ||
+ | |style="background-color:#EEE;padding:2px 30px"| <tex>\bf{0}</tex> | ||
+ | |style="background-color:#FFF;padding:2px 30px"| <tex>+</tex> | ||
+ | |style="background-color:#FFF;padding:2px 30px"| <tex>0</tex> | ||
+ | |style="background-color:#FFF;padding:2px 30px"| <tex>-</tex> | ||
+ | |- | ||
+ | |style="background-color:#EEE;padding:2px 30px"| <tex>\bf{+}</tex> | ||
+ | |style="background-color:#FFF;padding:2px 30px"| <tex>0</tex> | ||
+ | |style="background-color:#FFF;padding:2px 30px"| <tex>-</tex> | ||
+ | |style="background-color:#FFF;padding:2px 30px"| <tex>+</tex> | ||
+ | |} | ||
+ | |||
+ | ===Операция выбора=== | ||
+ | |||
+ | <tex>S^-</tex>, <tex>S</tex> и <tex>S^+</tex> — операторы '''выбора'''. Превращают состояние, соответствующее типу оператора в <tex>(+)</tex>, в случае любого из остальных двух состояний переменная приобретает значение <tex>(-)</tex>. | ||
+ | |||
+ | {| style="background-color:#CCC;margin:0.5px" | ||
+ | !style="background-color:#EEE"| <tex>\bf{a}</tex> | ||
+ | !style="background-color:#EEE"| <tex>\bf{S^-}</tex> | ||
+ | !style="background-color:#EEE"| <tex>\bf{S}</tex> | ||
+ | !style="background-color:#EEE"| <tex>\bf{S^+}</tex> | ||
+ | |||
+ | |- | ||
+ | |style="background-color:#EEE;padding:2px 30px"| <tex>\bf{-}</tex> | ||
+ | |style="background-color:#FFF;padding:2px 30px"| <tex>+</tex> | ||
+ | |style="background-color:#FFF;padding:2px 30px"| <tex>-</tex> | ||
+ | |style="background-color:#FFF;padding:2px 30px"| <tex>-</tex> | ||
+ | |- | ||
+ | |style="background-color:#EEE;padding:2px 30px"| <tex>\bf{0}</tex> | ||
+ | |style="background-color:#FFF;padding:2px 30px"| <tex>-</tex> | ||
+ | |style="background-color:#FFF;padding:2px 30px"| <tex>+</tex> | ||
+ | |style="background-color:#FFF;padding:2px 30px"| <tex>-</tex> | ||
+ | |- | ||
+ | |style="background-color:#EEE;padding:2px 30px"| <tex>\bf{+}</tex> | ||
+ | |style="background-color:#FFF;padding:2px 30px"| <tex>-</tex> | ||
+ | |style="background-color:#FFF;padding:2px 30px"| <tex>-</tex> | ||
+ | |style="background-color:#FFF;padding:2px 30px"| <tex>+</tex> | ||
+ | |} | ||
+ | |||
+ | ===Модификация=== | ||
+ | |||
+ | <tex>INC</tex> и <tex>DEC</tex> — операторы '''модификации''', соответственно увеличение и уменьшение трита на единицу по модулю три. При переполнении трита счёт начинается заново (<tex>INC (+) = (-)</tex>). | ||
+ | |||
+ | {| style="background-color:#CCC;margin:0.5px" | ||
+ | !style="background-color:#EEE"| <tex>\bf{a}</tex> | ||
+ | !style="background-color:#EEE"| <tex>\bf{INC a}</tex> | ||
+ | !style="background-color:#EEE"| <tex>\bf{DEC a}</tex> | ||
+ | |||
+ | |- | ||
+ | |style="background-color:#EEE;padding:2px 30px"| <tex>\bf{-}</tex> | ||
+ | |style="background-color:#FFF;padding:2px 30px"| <tex>0</tex> | ||
+ | |style="background-color:#FFF;padding:2px 30px"| <tex>+</tex> | ||
+ | |- | ||
+ | |style="background-color:#EEE;padding:2px 30px"| <tex>\bf{0}</tex> | ||
+ | |style="background-color:#FFF;padding:2px 30px"| <tex>+</tex> | ||
+ | |style="background-color:#FFF;padding:2px 30px"| <tex>-</tex> | ||
+ | |- | ||
+ | |style="background-color:#EEE;padding:2px 30px"| <tex>\bf{+}</tex> | ||
+ | |style="background-color:#FFF;padding:2px 30px"| <tex>-</tex> | ||
+ | |style="background-color:#FFF;padding:2px 30px"| <tex>0</tex> | ||
+ | |} | ||
+ | |||
+ | ===Пороговое увеличение и уменьшение=== | ||
+ | |||
+ | <tex>\nearrow</tex>, <tex>\searrow</tex> — данные операторы работают аналогично операторам модификации лишь с тем отличием, что при переполнении трита цикл состояний не повторяется, и значение так и остаётся минимальным или максимальным. | ||
+ | |||
+ | {| style="background-color:#CCC;margin:0.5px" | ||
+ | !style="background-color:#EEE"| <tex>\bf{a}</tex> | ||
+ | !style="background-color:#EEE"| <tex>\bf{\nearrow a}</tex> | ||
+ | !style="background-color:#EEE"| <tex>\bf{\searrow a}</tex> | ||
+ | |||
+ | |- | ||
+ | |style="background-color:#EEE;padding:2px 30px"| <tex>\bf{-}</tex> | ||
+ | |style="background-color:#FFF;padding:2px 30px"| <tex>0</tex> | ||
+ | |style="background-color:#FFF;padding:2px 30px"| <tex>-</tex> | ||
+ | |- | ||
+ | |style="background-color:#EEE;padding:2px 30px"| <tex>\bf{0}</tex> | ||
+ | |style="background-color:#FFF;padding:2px 30px"| <tex>+</tex> | ||
+ | |style="background-color:#FFF;padding:2px 30px"| <tex>-</tex> | ||
+ | |- | ||
+ | |style="background-color:#EEE;padding:2px 30px"| <tex>\bf{+}</tex> | ||
+ | |style="background-color:#FFF;padding:2px 30px"| <tex>+</tex> | ||
+ | |style="background-color:#FFF;padding:2px 30px"| <tex>0</tex> | ||
+ | |} | ||
+ | |||
+ | ===Другие одноместные функции=== | ||
+ | |||
+ | * <tex>+</tex>, <tex>0</tex> и <tex>-</tex> — функции, не зависящие от аргумента <tex>a</tex>, они же вырожденные. | ||
+ | |||
+ | * Функция <tex>a</tex> — тождественная и также вырожденная функция. | ||
+ | |||
+ | * Остальные функции от одной переменной образуются путём [[Суперпозиции | сочетания операторов]] выбора с операторами инверсии и модификации, поэтому они не имеют собственных названий. | ||
+ | |||
+ | ==Двухместные операции== | ||
− | == | + | Легко видеть, что всего в троичной логике существует <tex>3^{3^2}=19683</tex> двухместные операции. В таблице приведены самые основные и практически полезные из них. |
+ | |||
+ | {| style="background-color:#CCC;margin:0.5px" | ||
+ | !style="background-color:#EEE"| <tex>\bf{a}</tex> | ||
+ | !style="background-color:#EEE"| <tex>\bf{b}</tex> | ||
+ | !style="background-color:#EEE"| <tex>\bf{a \wedge b}</tex> | ||
+ | !style="background-color:#EEE"| <tex>\bf{a \vee b}</tex> | ||
+ | !style="background-color:#EEE"| <tex>\bf{a \cdot b}</tex> | ||
+ | !style="background-color:#EEE"| <tex>\bf{a \oplus b}</tex> | ||
+ | !style="background-color:#EEE"| <tex>\bf{a \mid b}</tex> | ||
+ | !style="background-color:#EEE"| <tex>\bf{a+b}</tex> | ||
+ | !style="background-color:#EEE"| <tex>\bf{a \Uparrow b}</tex> | ||
+ | !style="background-color:#EEE"| <tex>\bf{a \rightarrow b}</tex> | ||
+ | !style="background-color:#EEE"| <tex>\bf{a\ cmp\ b}</tex> | ||
+ | !style="background-color:#EEE"| <tex>\bf{a \&_L b}</tex> | ||
+ | !style="background-color:#EEE"| <tex>\bf{a \rightarrow_L b}</tex> | ||
+ | !style="background-color:#EEE"| <tex>\bf{a \wedge_+ b}</tex> | ||
+ | !style="background-color:#EEE"| <tex>\bf{a \rightarrow_+ b}</tex> | ||
+ | !style="background-color:#EEE"| <tex>\bf{a \rightarrow_G b}</tex> | ||
+ | !style="background-color:#EEE"| <tex>\bf{a \rightarrow_M b}</tex> | ||
+ | !style="background-color:#EEE"| <tex>\bf{a \rightarrow_B b}</tex> | ||
+ | !style="background-color:#EEE"| <tex>\bf{a \equiv b}</tex> | ||
+ | |- | ||
+ | |style="background-color:#FFF;padding:2px 6px"| <tex>\bf{-}</tex> | ||
+ | |style="background-color:#FFF;padding:2px 6px"| <tex>\bf{-}</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>-</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>-</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>+</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>+</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>0</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>-</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>-</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>-</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px;text-align: center;"| <tex>0</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>-</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>+</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>-</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>+</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>+</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>+</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>+</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>+</tex> | ||
+ | |- | ||
+ | |style="background-color:#FFF;padding:2px 6px"| <tex>\bf{-}</tex> | ||
+ | |style="background-color:#FFF;padding:2px 6px"| <tex>\bf{0}</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>-</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>0</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>0</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>-</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>+</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>-</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>0</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>0</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px;text-align: center;"| <tex>-</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>-</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>+</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>0</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>0</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>+</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>+</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>0</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>-</tex> | ||
+ | |- | ||
+ | |style="background-color:#FFF;padding:2px 6px"| <tex>\bf{-}</tex> | ||
+ | |style="background-color:#FFF;padding:2px 6px"| <tex>\bf{+}</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>-</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>+</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>-</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>0</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>-</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>0</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>+</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>-</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px;text-align: center;"| <tex>-</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>-</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>+</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>-</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>-</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>+</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>+</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>0</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>-</tex> | ||
+ | |- | ||
+ | |style="background-color:#FFF;padding:2px 6px"| <tex>\bf{0}</tex> | ||
+ | |style="background-color:#FFF;padding:2px 6px"| <tex>\bf{-}</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>-</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>0</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>0</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>-</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>+</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>-</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>0</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>0</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px;text-align: center;"| <tex>+</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>-</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>0</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>0</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>+</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>-</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>0</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>0</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>-</tex> | ||
+ | |- | ||
+ | |style="background-color:#FFF;padding:2px 6px"| <tex>\bf{0}</tex> | ||
+ | |style="background-color:#FFF;padding:2px 6px"| <tex>\bf{0}</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>0</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>0</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>0</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>0</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>+</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>0</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>-</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>+</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px;text-align: center;"| <tex>0</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>-</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>+</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>0</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>0</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>+</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>0</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>0</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>+</tex> | ||
+ | |- | ||
+ | |style="background-color:#FFF;padding:2px 6px"| <tex>\bf{0}</tex> | ||
+ | |style="background-color:#FFF;padding:2px 6px"| <tex>\bf{+}</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>0</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>+</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>0</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>+</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>-</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>+</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>+</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>0</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px;text-align: center;"| <tex>-</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>0</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>+</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>0</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>0</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>+</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>+</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>0</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>-</tex> | ||
+ | |- | ||
+ | |style="background-color:#FFF;padding:2px 6px"| <tex>\bf{+}</tex> | ||
+ | |style="background-color:#FFF;padding:2px 6px"| <tex>\bf{-}</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>-</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>+</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>-</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>0</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>-</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>0</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>+</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>-</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px;text-align: center;"| <tex>+</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>-</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>-</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>-</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>+</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>-</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>-</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>-</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>-</tex> | ||
+ | |- | ||
+ | |style="background-color:#FFF;padding:2px 6px"| <tex>\bf{+}</tex> | ||
+ | |style="background-color:#FFF;padding:2px 6px"| <tex>\bf{0}</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>0</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>+</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>0</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>+</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>-</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>+</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>+</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>0</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px;text-align: center;"| <tex>+</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>0</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>0</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>0</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>0</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>0</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>0</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>0</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>-</tex> | ||
+ | |- | ||
+ | |style="background-color:#FFF;padding:2px 6px"| <tex>\bf{+}</tex> | ||
+ | |style="background-color:#FFF;padding:2px 6px"| <tex>\bf{+}</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>+</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>+</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>+</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>-</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>-</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>+</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>-</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>-</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px;text-align: center;"| <tex>0</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>+</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>+</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>+</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>+</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>+</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>+</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>+</tex> | ||
+ | |style="background-color:#FFF;padding:2px 20px"| <tex>+</tex> | ||
+ | |||
+ | |} | ||
+ | |||
+ | Ниже приведены названия этих функций. | ||
− | + | {| style="background-color:#CCC;margin:0.5px" | |
− | + | !style="background-color:#EEE;padding:2px 8px"| '''Обозначение''' | |
− | + | !style="background-color:#EEE;padding:2px 8px"| '''Название''' | |
− | + | |- | |
− | + | |style="background-color:#FFF;padding:2px 8px"| <tex>\bf{a \wedge b}</tex> | |
− | + | |style="background-color:#FFF;padding:2px 8px"| Конъюнкция | |
− | + | |- | |
− | + | |style="background-color:#FFF;padding:2px 8px"| <tex>\bf{a \vee b}</tex> | |
− | + | |style="background-color:#FFF;padding:2px 8px"| Дизъюнкция | |
− | + | |- | |
− | + | |style="background-color:#FFF;padding:2px 8px"| <tex>\bf{a \cdot b}</tex> | |
− | + | |style="background-color:#FFF;padding:2px 8px"| Логическое умножение по модулю три | |
− | + | |- | |
− | < | + | |style="background-color:#FFF;padding:2px 8px"| <tex>\bf{a \oplus b}</tex> |
− | < | + | |style="background-color:#FFF;padding:2px 8px"| Логическое сложение по модулю три |
− | < | + | |- |
− | < | + | |style="background-color:#FFF;padding:2px 8px"| <tex>\bf{a \mid b}</tex> |
− | < | + | |style="background-color:#FFF;padding:2px 8px"| Функция Вебба |
− | + | |- | |
− | < | + | |style="background-color:#FFF;padding:2px 8px"| <tex>\bf{a+b}</tex> |
− | + | |style="background-color:#FFF;padding:2px 8px"| Пороговое сложение | |
− | + | |- | |
− | + | |style="background-color:#FFF;padding:2px 8px"| <tex>\bf{a \Uparrow b}</tex> | |
− | + | |style="background-color:#FFF;padding:2px 8px"| Исключающий максимум | |
− | < | + | |- |
− | + | |style="background-color:#FFF;padding:2px 8px"| <tex>\bf{a \rightarrow b}</tex> | |
− | < | + | |style="background-color:#FFF;padding:2px 8px"| Среднее (''Mean'') |
− | + | |- | |
− | + | |style="background-color:#FFF;padding:2px 8px"| <tex>\bf{a\ cmp\ b}</tex> | |
− | < | + | |style="background-color:#FFF;padding:2px 8px"| Сравнение |
− | + | |- | |
− | + | |style="background-color:#FFF;padding:2px 8px"| <tex>\bf{a \&_L b}</tex> | |
+ | |style="background-color:#FFF;padding:2px 8px"| Сильная конъюнкция | ||
+ | |- | ||
+ | |style="background-color:#FFF;padding:2px 8px"| <tex>\bf{a \rightarrow_L b}</tex> | ||
+ | |style="background-color:#FFF;padding:2px 8px"| Импликация Лукасевича | ||
+ | |- | ||
+ | |style="background-color:#FFF;padding:2px 8px"| <tex>\bf{a \wedge_+ b}</tex> | ||
+ | |style="background-color:#FFF;padding:2px 8px"| Конъюнкция Клини | ||
+ | |- | ||
+ | |style="background-color:#FFF;padding:2px 8px"| <tex>\bf{a \rightarrow_+ b}</tex> | ||
+ | |style="background-color:#FFF;padding:2px 8px"| Импликация Клини | ||
+ | |- | ||
+ | |style="background-color:#FFF;padding:2px 8px"| <tex>\bf{a \rightarrow_G b}</tex> | ||
+ | |style="background-color:#FFF;padding:2px 8px"| Импликация Гейтинга (импликация Гёделя) | ||
+ | |- | ||
+ | |style="background-color:#FFF;padding:2px 8px"| <tex>\bf{a \rightarrow_M b}</tex> | ||
+ | |style="background-color:#FFF;padding:2px 8px"| Материальная импликация | ||
+ | |- | ||
+ | |style="background-color:#FFF;padding:2px 8px"| <tex>\bf{a \rightarrow_B b}</tex> | ||
+ | |style="background-color:#FFF;padding:2px 8px"| Функция следования Бруснецова | ||
+ | |- | ||
+ | |style="background-color:#FFF;padding:2px 8px"| <tex>\bf{a \equiv b}</tex> | ||
+ | |style="background-color:#FFF;padding:2px 8px"| Тождество | ||
− | + | |} | |
==Алгебраические свойства== | ==Алгебраические свойства== | ||
− | + | Все нижеперечисленные законы и свойства легко доказываются путём перебора всех значений входящих в них переменных. | |
+ | Алгебраический подход заключается в том, чтобы определить над множеством <tex>\{-, 0, +\}</tex> двухместные (<tex>\wedge</tex>, <tex>\vee</tex>) и одноместные (<tex>'</tex>, <tex>S</tex>, <tex>\neg</tex>) операции с помощью законов, а оставшиеся свойства уже выводить из них алгебраически. | ||
+ | |||
+ | <ol> | ||
− | < | + | <li>'''Свойства констант''':</li> |
− | < | + | <tex>a \wedge (+) = a</tex> |
− | < | + | <tex>a \wedge (-) = (-)</tex> |
− | < | + | <tex>a \vee (+) = (+)</tex> |
− | < | + | <tex>a \vee (-) = a</tex> |
− | < | + | <tex>\overline{(-)} = (+)</tex> |
− | + | <tex>\overline{(+)} = (-)</tex> | |
− | + | <li>Для конъюнкции и дизъюнкции в троичной логике сохраняются '''коммутативный''', '''ассоциативный''' и '''дистрибутивный законы''', '''закон идемпотентности'''.</li> | |
− | < | + | <li>Закон '''двойного отрицания''' (отрицания Лукаcевича) и '''тройного (циклического) отрицания''':</li> |
− | < | + | <tex>\overline{\overline{a}}=a</tex> |
− | + | <tex>a'''=a</tex> | |
− | < | + | <li>Буквальное определение '''циклического отрицания''' вытекает из следующих свойств:</li> |
− | < | + | <tex>(-) ' = 0</tex> |
− | < | + | <tex>0 ' = (+)</tex> |
− | + | <tex>(+) ' = (-)</tex> | |
− | < | + | <li>Имеет место быть '''неизменность третьего состояния''' (<tex>0</tex>) при отрицании Лукаcевича:</li> |
− | < | + | <tex>\overline{0} = 0</tex> |
+ | |||
+ | <tex>\overline{(a \wedge 0)} = \overline{a} \vee 0</tex> | ||
+ | |||
+ | </ol> | ||
Для законов двоичной логики, не справедливых для троичной, существуют их троичные аналоги. | Для законов двоичной логики, не справедливых для троичной, существуют их троичные аналоги. | ||
− | '''Закон несовместности состояний''' (аналог закона противоречия в двоичной логике): | + | <ol start="6"> |
+ | <li>'''Закон несовместности состояний''' (аналог закона противоречия в двоичной логике):</li> | ||
+ | |||
+ | <tex>Sa \wedge Sa'' = (-)</tex> | ||
+ | |||
+ | <tex>Sa' \wedge Sa'' = (-)</tex> | ||
+ | |||
+ | <tex>Sa' \wedge Sa = (-)</tex> | ||
+ | |||
+ | <li>'''Закон исключённого четвёртого''' (вместо '''закона исключённого третьего'''), он же '''закон полноты состояний''':</li> | ||
+ | |||
+ | <tex>Sa' \vee Sa \vee Sa'' = (+)</tex>, или | ||
+ | |||
+ | <tex>S^-a \vee Sa \vee S^+a = (+)</tex> | ||
+ | |||
+ | <li>'''Трёхчленный закон Блейка-Порецкого''':</li> | ||
+ | |||
+ | <tex>a \vee Sa' \wedge b \vee Sa \wedge b = a \vee b</tex>, или | ||
+ | |||
+ | <tex>a \vee S^-a \wedge b \vee Sa \wedge b = a \vee b</tex> | ||
+ | |||
+ | <li>'''Закон трёхчленного склеивания''':</li> | ||
+ | |||
+ | <tex> a \wedge Sb' \vee a \wedge Sb \vee a \wedge Sb'' = a</tex>, или | ||
+ | |||
+ | <tex>a \wedge S^-b \vee a \wedge Sb \vee a \wedge S^+b = a</tex> | ||
+ | |||
+ | <li>'''Закон обобщённого трёхчленного склеивания''':</li> | ||
+ | |||
+ | <tex>a \wedge Sd' \vee b \wedge Sd \vee c \wedge Sd'' \vee a \wedge b \wedge c = a \wedge Sd' \vee b \wedge Sd \vee c \wedge Sd''</tex>, или | ||
+ | |||
+ | <tex>a \wedge S^-d \vee b \wedge Sd \vee c \wedge S^+d \vee a \wedge b \wedge c = a \wedge S^-d \vee b \wedge Sd \vee c \wedge S^+d</tex> | ||
+ | |||
+ | <li>'''Антиизотропность отрицания Лукаcевича''':</li> | ||
+ | |||
+ | <tex>a \leqslant b \Rightarrow \overline a \geqslant \overline b</tex> | ||
+ | |||
+ | </ol> | ||
+ | |||
+ | ==Перспективы развития== | ||
+ | |||
+ | ===Преимущества троичной системы счисления перед двоичной=== | ||
+ | |||
+ | {{Определение | ||
+ | |definition = | ||
+ | '''Троичная система счисления''' (англ. ''ternary numeral system'') — позиционная система счисления с целочисленным основанием, равным <tex>3</tex>. Существует в двух вариантах: '''несимметричная''' (<tex>\{0,1,2\}</tex>, <tex>\{0,1/2,1\}</tex> и др.) и '''симметричная''' (обычно <tex>\{-,0,+\}</tex> или <tex>\{-1,0,1\}</tex>). | ||
+ | }} | ||
+ | Троичная логика обладает рядом преимуществ перед двоичной. Ниже перечислены основные: | ||
+ | |||
+ | * Троичная СС позволяет вмещать больший диапазон чисел в памяти троичного компьютера, поскольку <tex>3^n>2^n</tex>. | ||
+ | |||
+ | * <p>Очевидно, что троичная СС использует меньше разрядов для записи чисел, по-сравнению с двоичной СС. Например: | ||
+ | |||
+ | <tex>1110101_2=11100_3</tex> | ||
+ | |||
+ | <tex>1000_2=22_3</tex> | ||
+ | |||
+ | Для троичной СС используется несимметричный набор <tex>\{0,1,2\}</tex>. | ||
+ | |||
+ | Эти два важных преимущества перед двоичной системой счисления говорят о большей '''экономичности''' троичной системы счисления. | ||
+ | {{Определение | ||
+ | |definition = | ||
+ | '''Экономичность системы счисления''' (англ. ''radix economy'') — возможность представления как можно большего количества чисел с использованием как можно меньшего общего количества знаков. | ||
+ | }} | ||
+ | </p> | ||
+ | |||
+ | Докажем экономичность троичной системы счисления математически. | ||
+ | |||
+ | Пусть <tex>p</tex> – основание системы счисления, а <tex>n</tex> – количество требуемых знаков. Для записи <tex>n</tex> знаков потребуется <tex>n/p</tex> разрядов, а количество чисел, которое при этом можно записать, будет равно <tex>p^{n/p}</tex>. | ||
+ | |||
+ | Рассмотрим функцию <tex>f(p)=p^{n/p}</tex>. | ||
+ | |||
+ | Для того, чтобы определить максимальное значение функции, найдем ее производную: | ||
+ | |||
+ | <tex>f'(p)=-n(p^{n/p - 2})(\ln p - 1) \Rightarrow \ln p - 1 = 0, \ln p = 1, p = e</tex> | ||
+ | |||
+ | <tex>e \approx 2,71</tex>, ближайшее число к <tex>e</tex> — <tex>3</tex>. Таким образом, троичная СС не только экономичнее двоичной, но и экономичнее любой другой СС. | ||
+ | |||
+ | * Троичная логика включает в себя почти все возможности двоичной логики. | ||
+ | |||
+ | * Компьютер, основанный на троичной логике, обладает большим быстродействием. Например, [[Троичная_функциональная_схема |троичный сумматор]] и полусумматор в троичном компьютере при сложении тритов выполняет примерно в 1,5 раза меньше операций сложения по-сравнению с двоичным компьютером. | ||
+ | |||
+ | ===Проблемы реализации=== | ||
+ | |||
+ | Одним из барьеров, сдерживающих развитие и распространение троичной техники, является неверное представление о необычности и трудной постижимости трехзначной логики. Современная формальная логика (как традиционная, так и математическая) основана на принципе двузначности. Кроме того, электронные компоненты для построения логики, использующие более двух состояний, требуют больше материальных затрат на их производство, достаточно сложны в реализации, и потребляют больше электроэнергии, поэтому троичные компьютеры занимают очень малое место в истории. | ||
+ | Использование двоичных компьютеров — более простых и дешёвых в реализации — практически полностью затмило применение троичных компьютеров. | ||
+ | |||
+ | ===Практические реализации=== | ||
+ | |||
+ | Говоря о будущем таких машин, как «Сетунь» (то есть троичных компьютеров), известный американский учёный Дональд Кнут, отмечал, что они занимают очень мало место в отрасли вычислительной техники, что объясняется массовым засильем двоичных компонентов, производимых в огромных количествах. Но, поскольку троичная логика гораздо эффектнее, а главное, эффективнее двоичной, не исключено, что в недалёком будущем к ней вернутся. | ||
+ | |||
+ | В настоящий момент, в условиях интегральной технологии и микроэлектроники привлекательность троичной техники увеличивается: сложность трехзначных вентилей теперь не так страшна, а сокращение количества соединений и уменьшение рассеиваемой мощности особенно ценны. Особо благоприятное влияние на развитие троичное логики оказало пришествие квантовых компьютеров — вычислительных устройств, работающих на основе квантовой механики, принципиально отличающихся от классических компьютеров, работающих на основе классической механики. | ||
+ | Полноценный квантовый компьютер является пока гипотетическим устройством, сама возможность построения которого связана с серьёзным развитием квантовой теории в области многих частиц и сложных экспериментов; эта работа лежит на переднем крае современной физики. | ||
+ | Канадская компания D-Wave заявила в феврале 2007 года о создании образца квантового компьютера, состоящего из 16 ''кубит'' — квантовых аналогов битов. | ||
+ | Используя в универсальных [[Квантовые_гейты | квантовых вентилях]] кутриты вместо кубитов, можно существенно снизить количество необходимых вентилей. | ||
+ | Ланьон утверждает, что компьютер, который в обычном случае использовал бы 50 традиционных квантовых вентилей, сможет обойтись всего девятью, будучи основанным на троичном представлении. | ||
+ | Также, согласно некоторым исследованиям, использование кутритов вместо кубитов позволит упростить реализацию квантовых алгоритмов и компьютеров. | ||
+ | |||
+ | ==См. также== | ||
+ | |||
+ | * [[Определение_булевой_функции | Булевые функции]] | ||
− | + | ==Источники информации== | |
− | + | * [http://www.computer-museum.ru/histussr/12-1.htm Заметки о троичной цифровой технике — часть 1] | |
− | + | * [http://unidevices.blogspot.ru/2011/11/blog-post.html «Сетунь» — единственный серийный троичный компьютер] | |
− | + | * [https://ru.wikipedia.org/wiki/%D0%A2%D1%80%D0%BE%D0%B8%D1%87%D0%BD%D0%B0%D1%8F_%D0%BB%D0%BE%D0%B3%D0%B8%D0%BA%D0%B0 Википедия — Троичная логика] | |
− | + | * [http://habrahabr.ru/post/166679/ Хабрахабр — Замена двоичной логики — увеличит ли это производительность?] | |
− | + | * [http://arvi.livejournal.com/144259.html Жизнь сквозь решето сети — Третье состоянье] | |
− | + | * [http://arvi.livejournal.com/144849.html Жизнь сквозь решето сети — Трёхзначная логика] | |
− | + | * [http://traditio-ru.org/wiki/%D0%A2%D1%80%D0%BE%D0%B8%D1%87%D0%BD%D0%B0%D1%8F_%D0%BB%D0%BE%D0%B3%D0%B8%D0%BA%D0%B0 Традиция — Троичная логика] | |
− | + | [[Категория: Дискретная математика и алгоритмы]] | |
+ | [[Категория: Булевы функции]] |
Текущая версия на 19:21, 4 сентября 2022
Троичная или трёхзначная логика (англ. ternary logic) — один из видов многозначной логики, использующий три истинностных значения.
В традиционной трёхзначной логике "лжи" и "истине" соответствуют знаки
и . Третьему (серединному) состоянию соответствует знак . Допустимо использование таких наборов знаков, как , , , и др. Иногда используют обозначения И, Л, Н (истина, ложь и неизвестность).Классическим примером состояний такой логики является множество
, — значения, которые может принимать компаратор двух объектов.Определение: |
Троичная функция (или тернарная функция) от | переменных — это отображение → , где .
Содержание
Одноместные операции
По-аналогии с двоичной логикой, в троичной логике существует всего операций для аргументов. Таким образом, в троичной логике всего существует одноместных операций.
Инверсия
, и — операторы инверсии, сохраняющие состояние , и соответственно, когда оно соответствует типу оператора, или обращающие в значение, не равное исходному состоянию и не соответствующее типу оператора инверсии, то есть в оставшееся третье.
Например, если
, то . Так как исходное состояние , тип инверсии , то методом исключения можно прийти к результирующему состоянию .Все возможные варианты для данной одноместной операции приведены в таблице.
Операция выбора
, и — операторы выбора. Превращают состояние, соответствующее типу оператора в , в случае любого из остальных двух состояний переменная приобретает значение .
Модификация
и — операторы модификации, соответственно увеличение и уменьшение трита на единицу по модулю три. При переполнении трита счёт начинается заново ( ).
Пороговое увеличение и уменьшение
, — данные операторы работают аналогично операторам модификации лишь с тем отличием, что при переполнении трита цикл состояний не повторяется, и значение так и остаётся минимальным или максимальным.
Другие одноместные функции
- , и — функции, не зависящие от аргумента , они же вырожденные.
- Функция — тождественная и также вырожденная функция.
- Остальные функции от одной переменной образуются путём сочетания операторов выбора с операторами инверсии и модификации, поэтому они не имеют собственных названий.
Двухместные операции
Легко видеть, что всего в троичной логике существует
двухместные операции. В таблице приведены самые основные и практически полезные из них.Ниже приведены названия этих функций.
Обозначение | Название |
---|---|
Конъюнкция | |
Дизъюнкция | |
Логическое умножение по модулю три | |
Логическое сложение по модулю три | |
Функция Вебба | |
Пороговое сложение | |
Исключающий максимум | |
Среднее (Mean) | |
Сравнение | |
Сильная конъюнкция | |
Импликация Лукасевича | |
Конъюнкция Клини | |
Импликация Клини | |
Импликация Гейтинга (импликация Гёделя) | |
Материальная импликация | |
Функция следования Бруснецова | |
Тождество |
Алгебраические свойства
Все нижеперечисленные законы и свойства легко доказываются путём перебора всех значений входящих в них переменных. Алгебраический подход заключается в том, чтобы определить над множеством
двухместные ( , ) и одноместные ( , , ) операции с помощью законов, а оставшиеся свойства уже выводить из них алгебраически.- Свойства констант:
- Для конъюнкции и дизъюнкции в троичной логике сохраняются коммутативный, ассоциативный и дистрибутивный законы, закон идемпотентности.
- Закон двойного отрицания (отрицания Лукаcевича) и тройного (циклического) отрицания:
- Буквальное определение циклического отрицания вытекает из следующих свойств:
- Имеет место быть неизменность третьего состояния ( ) при отрицании Лукаcевича:
Для законов двоичной логики, не справедливых для троичной, существуют их троичные аналоги.
- Закон несовместности состояний (аналог закона противоречия в двоичной логике):
- Закон исключённого четвёртого (вместо закона исключённого третьего), он же закон полноты состояний:
- Трёхчленный закон Блейка-Порецкого:
- Закон трёхчленного склеивания:
- Закон обобщённого трёхчленного склеивания:
- Антиизотропность отрицания Лукаcевича:
, или
, или
, или
, или
Перспективы развития
Преимущества троичной системы счисления перед двоичной
Определение: |
Троичная система счисления (англ. ternary numeral system) — позиционная система счисления с целочисленным основанием, равным | . Существует в двух вариантах: несимметричная ( , и др.) и симметричная (обычно или ).
Троичная логика обладает рядом преимуществ перед двоичной. Ниже перечислены основные:
- Троичная СС позволяет вмещать больший диапазон чисел в памяти троичного компьютера, поскольку .
-
Очевидно, что троичная СС использует меньше разрядов для записи чисел, по-сравнению с двоичной СС. Например:
Для троичной СС используется несимметричный набор
.Эти два важных преимущества перед двоичной системой счисления говорят о большей экономичности троичной системы счисления.
Определение: |
Экономичность системы счисления (англ. radix economy) — возможность представления как можно большего количества чисел с использованием как можно меньшего общего количества знаков. |
Докажем экономичность троичной системы счисления математически.
Пусть
– основание системы счисления, а – количество требуемых знаков. Для записи знаков потребуется разрядов, а количество чисел, которое при этом можно записать, будет равно .Рассмотрим функцию
.Для того, чтобы определить максимальное значение функции, найдем ее производную:
, ближайшее число к — . Таким образом, троичная СС не только экономичнее двоичной, но и экономичнее любой другой СС.
- Троичная логика включает в себя почти все возможности двоичной логики.
- Компьютер, основанный на троичной логике, обладает большим быстродействием. Например, троичный сумматор и полусумматор в троичном компьютере при сложении тритов выполняет примерно в 1,5 раза меньше операций сложения по-сравнению с двоичным компьютером.
Проблемы реализации
Одним из барьеров, сдерживающих развитие и распространение троичной техники, является неверное представление о необычности и трудной постижимости трехзначной логики. Современная формальная логика (как традиционная, так и математическая) основана на принципе двузначности. Кроме того, электронные компоненты для построения логики, использующие более двух состояний, требуют больше материальных затрат на их производство, достаточно сложны в реализации, и потребляют больше электроэнергии, поэтому троичные компьютеры занимают очень малое место в истории. Использование двоичных компьютеров — более простых и дешёвых в реализации — практически полностью затмило применение троичных компьютеров.
Практические реализации
Говоря о будущем таких машин, как «Сетунь» (то есть троичных компьютеров), известный американский учёный Дональд Кнут, отмечал, что они занимают очень мало место в отрасли вычислительной техники, что объясняется массовым засильем двоичных компонентов, производимых в огромных количествах. Но, поскольку троичная логика гораздо эффектнее, а главное, эффективнее двоичной, не исключено, что в недалёком будущем к ней вернутся.
В настоящий момент, в условиях интегральной технологии и микроэлектроники привлекательность троичной техники увеличивается: сложность трехзначных вентилей теперь не так страшна, а сокращение количества соединений и уменьшение рассеиваемой мощности особенно ценны. Особо благоприятное влияние на развитие троичное логики оказало пришествие квантовых компьютеров — вычислительных устройств, работающих на основе квантовой механики, принципиально отличающихся от классических компьютеров, работающих на основе классической механики. Полноценный квантовый компьютер является пока гипотетическим устройством, сама возможность построения которого связана с серьёзным развитием квантовой теории в области многих частиц и сложных экспериментов; эта работа лежит на переднем крае современной физики. Канадская компания D-Wave заявила в феврале 2007 года о создании образца квантового компьютера, состоящего из 16 кубит — квантовых аналогов битов. Используя в универсальных квантовых вентилях кутриты вместо кубитов, можно существенно снизить количество необходимых вентилей. Ланьон утверждает, что компьютер, который в обычном случае использовал бы 50 традиционных квантовых вентилей, сможет обойтись всего девятью, будучи основанным на троичном представлении. Также, согласно некоторым исследованиям, использование кутритов вместо кубитов позволит упростить реализацию квантовых алгоритмов и компьютеров.