Троичная логика

 
1 5 6 7 8 9 10 11
+
-
edit
 

AidarM

аксакал
★★☆
-exec-
>ваш артефакт UNDEF, поданный на вход вашего автомата, переводит все "задетые" его регистры и выходы в состояние UNDEF.
Поясните, плз. насчет 'все'. Он действительно переводит полный результат во многих случаях в UNDEF, но ведь не необратимо же. Я ведь указал, в каких ситуациях определенность снова может возникнуть. И что? Я сам так думаю, по другому пока не умею.

Если вы уже про железо говорите, то тут undef - просто другой, нежели у true и false, уровень напряжения, например. А правила проведения операций я прямо сейчас выдумываю, чтобы в железе жестко реализовать.

>состояние, вообще говоря, бесполезное, потому, что ваш UNDEF ни к чему нельзя применить, потому, что всё, что вступало с ним во взаимодействие, превращается и превратится в UNDEF.
Выдаете желаемое за действительное? :confused: Почему сразу 'всё'? undef на каком-то входе говорит, что данных об этой конкретной характеристике нет.

>(кроме операторов true() и false(), которые сами по себе вряд и полезны:
Не понял. :blink: Если в рассуждениях попадутся такие выражения:
or(TRUE,A) => TRUE, то есть эквивалентен true(A)
and(FALSE,A) => FALSE, то есть эквивалентен false(A))
 

то все ОК. Вывод не будет расходиться с реальностью. Что значит, вряд ли полезны? Такие выражения могут возникнуть при решении нашим будущим троичным девайсом какой-то логической задачи.

>а поскольку автомат после подачи на него UNDEF ничего больше определённого выполнить не сможет, то он целиком становится бесполезным. можно сказать выведенным из строя.
Что значит, не может? Если вы о том, чтобы из неопределенных данных, из ничего, получить нечто однозначное, cделать точный вывод - с этим не ко мне. :) И тем не менее, приведенные выше примеры показывают, что присутствие в рассуждениях undef не обязательно херит определенность конечного вывода.

>подача на вход UNDEF становится атакой Denial of Service - DoS атакой; а возможность, с помощью которой можно провести атаку на машину является дырой в безопасности, Security Hole.
Простите, undef - просто некоторое третье значение. Двоичные машины на него не рассчитаны, они не умеют с ним работать. А троичные могут. Если машина выдаст undef - это означает, что решение не найдено. Данных для однозначного вывода не хватило. Есть задачи, к-рые для решения требуют полной определенности всех исходных данных. А могут быть и такие, которые этого не требуют - если при их решении такие данные попадают в ловушки типа or(true,undef). Бинарная машина, способная решить такие задачи будет много сложнее(как вариант, тормозить будет сильнее при прочих равных), чем та, к-рая сделана на тритах. Поскольку придется писать эмулятор, дабы ей undef скормить. Из ничего же бывает только ничего. :) Если на входе принципиально не хватает данных - разрядность не поможет. ;) ИМХО.

>незакрываемой дырой, кстати - потому, что детектировать присутствие UNDEF на входах и в вашем автомате невозможно - детекторы выходят из строя один за другим.
Хватит вам, -exec-, мне уже страшно... :о :D

>интерпретировать их состояние невозможно, так как мы не можем проверить тождественность ни с чем.
Для троичных машин, правила логики которым мы сейчас изобретаем, это будет одно из предусмотренных 'паспортных' значений. Пусть false - 2В, undef - 4В, true - 6В, машина сгорела - 0В. :D Ну, погрешность пусть будет ± 0.5В - нам хватает, и железо дешевое выйдет. Дык вот, берем напряжОметр и тыкаем им в выход. Глядим - 4В. Увы и ах, каменный цветок не вышел. Данных для однозначного решения заданной задачи оказалось недостаточно. Всего лишь. :)

>таким образом ваш автомат остаётся двоичным, пока не сломается (возможность сломаться предусмотрена архитектурой).
Таким образом подача на вход двоичной логической машины неопределенного сигнала(непредусмотренного напряжения) действительно сможет похерить сей девайс. :) Ибо нефиг. :) В лучшем случае исходные данные установятся случайным образом, но машина будет считать их определенными. Т.е. воспримет либо true, либо false. Только к реальности ее решение может не иметь значения. ;)

Я вижу, что к обсуждению подключился ув. Mishka. Чему я очень рад, т.к. Mishka натаскан, в частности, и в области работы с бесконечностью. Mishka, пожалуйста прокомментируйте следующее:
-exec- написал:
>по мне хотя бы (cos(∞) eqv cos(∞)) = TRUE.

Для меня это слишком круто. Записаны косинусы, конечно, идентично, это да. А вот как смысл утверждения доказать? Бесконечность ± конечное число - уже другая бесконечность? Если да, то как их, эти бесконечности отличать? Если нет, бесконечность та же самая, то см. ниже. :)

Пример маразма :D
cos(alpha-Pi/2)=sin(alpha)(глядя на единичную окружность, мне так кажется :) )
сos(беск.-Pi/2)=сos(беск)
сos(беск.-Pi/2)=sin(беск)

Следовательно cos(беск)=sin(беск). (Вспоминаем, когда это может быть - когда сos(беск)=sin(беск)=1/sqrt(2) или -1/sqrt(2). :F )

Следующая затяжка. :D По той же причине
cos(alpha+Pi/2)=-sin(alpha)
сos(беск.+Pi/2)=сos(беск)
сos(беск.+Pi/2)=-sin(беск)
Следовательно cos(беск)=-sin(беск). :F
Что имеем? cos(беск)=sin(беск), cos(беск)=-sin(беск) :blink: :o
Это что же, сos(беск)=sin(беск)=0? А такие углы существуют? Чтоб и синус и косинус был нулем одновременно. Поскольку маразм, то высказывание
((cos(∞) eqv cos(∞)) = =TRUE)=false :F
ИМХО, поскольку мы не можем отличать одну бесконечность от другой(а если можем, только я лично не могу - научите меня,ув Mishka), то и
((cos(∞) eqv cos(∞)) = =false)=false :F

И остается только одно: операция сравнения косинусов от бесконечностей неопределена. В противном случае требуется указать метод различения бесконечностей.
((cos(∞) eqv cos(∞)) ==undef)=TRUE :lol:

Как трава?
Солипсизм не пройдёт! :fal:  
Это сообщение редактировалось 08.05.2004 в 16:10
+
-
edit
 

AidarM

аксакал
★★☆
>А, Сергей ведь прав. Не надо мешать логику с арифметикой, не надо навешивать порядок для алфавита. Не надо.

И не будем. Мы сейчас об эмуляции правильного мышления железом.

>Математическая логика в общем плане (Аристотелева как _частный случай_) не требуют интерпретации алфавита - такова сущность абстрактной алгебры. Именно алгебра определяет отношения между элементами алфавита по правилам операций, а не сам алфавит.

Мы ведь алгебру не от балды задаем в данном конкретном случае. Лично я пытаюсь отобразить правила мышления в виде этой будущей алгебры, действующей на троичном алфавите. А -exec- вообще хорошо сказал вот тут: Троичная логика [-exec-#05.05.04 19:01] и особенно вот тут: Троичная логика [-exec-#05.05.04 19:39]
Я процитирую:
уточнение - множество бинарных логик входит во множество бинарных отношений.
часто мы рассматриваем только те из них, которые родственные логике аристотеля. или усечённую двоичную алгебру, построенную на множестве бинарных операторов AND, OR, XOR, NOT, IMP. или ещё какую. хоть булеву. в частности полиномы жигалкина.
надо только постараться когда нибудь договориться о том, какую двоичную логику мы рассматриваем.
 

Нужно только заменить 'бинарный' на 'тернарный'. Суть не меняется.


>И про обобщение от булевой до алфавита можно сделать многими способами, но важно здесь, что количество таких всех отображений конечно и может быть задано простым их перечислением. Какое именно выбрать - это другой вопрос.

Такой, чтобы при истинном входе выход никогда не врал и при этом во всех возможных случаях ответ был однозначным-true или false. :)
Солипсизм не пройдёт! :fal:  
Это сообщение редактировалось 08.05.2004 в 16:27
+
-
edit
 

-exec-

опытный

AidarM>Выдаете желаемое за действительное? Почему сразу 'всё'?
задача:
остановка сразу за перекрёстком со светофором. может быть автобус. других объектов нет.
если автобуса нет, мы ждём независимо от светофора (WAIT => TRUE)
если автобус есть и цвет красный, мы ждём (WAIT => TRUE)
если автобус есть и цвет не красный, мы не ждём (WAIT => FALSE)
постройте автомат, вычисляющий ожидание автобуса от двух переменных.

подайте на вход
А)BUS: TRUE (область значений {FALSE, TRUE})
B)SIGNAL: UNDEF (область значений {FALSE/красный/, UNDEF/сломан/, TRUE/зелёный/})

нажмите кнопку старт и покажите ответ автомата :)

предупреждаю, автобус не остановится на сломанном светофоре.

данных для решения достаточно.



AidarM>Пусть false - 2В, undef - 4В, true - 6В, машина сгорела - 0В
вы собираетесь устроиться оператором такой машины на полный день, чтобы интерпретировать её вывод с точки зрения наблюдателя с K-значной логикой и диагностировать состояние автомата, чтобы вовремя его переинициализировать?

постройте пожалуйста детектор лжи:
is_false(FALSE) => TRUE
is_false(UNDEF) => FALSE
is_false(TRUE) => FALSE

AidarM>Поскольку маразм, то высказывание
AidarM>((cos(∞) eqv cos(∞)) = =TRUE)=false

ну постройте тогда детектор правды
is_true(UNDEF eqv UNDEF) => FALSE
is_true(FALSE) => FALSE
is_true(TRUE) => TRUE



AidarM>>по мне хотя бы (cos(∞) eqv cos(∞)) = TRUE.
AidarM>Для меня это слишком круто. Записаны косинусы, конечно, идентично, это да. А вот как утверждение доказать?
ну вот... оказывается тождественность значения значению зависит от родословной значения :blink: .
вы что, оставляете за собой обязанность проверять родословную в следующем случае:
√4 eqv tg(60°) => ?
 
Это сообщение редактировалось 08.05.2004 в 17:50
+
-
edit
 

AidarM

аксакал
★★☆
Дошло-таки до меня, чего не хватает. Спасибо, -exec-. :beer: Ну и тормознутый же вам оппонент попался. :F Детектора неопределенности не хватает. Вы правы были насчет таблицы истинности eqv. Я-то по дурной привычке думал eqv - не детектор совпадения, а детектор множества совпадения. Примем смысл eqv - детектор 'на эквивалентность'? Не равенство, не тождество и не совпадение. А на эквивалентность. И возьмем таблицу истинности (neqv лучше) отсюда Троичная логика [-exec-#05.05.04 22:19]
undef neqv undef = false
undef neqv false = true
undef neqv true = true
 

Остальные случаи и так известны.

А neqv у нас не указывает ни на какое множество, получается. Генерит свое, в бинарном пр-ве. :) Зато помогает разобраться машине с собственными 'мыслями'. :)

Итак, функция XOR указывает на множество элементов, входящих только в одно из входных множеств. Функция neqv - детектор неэквивалентности входных множеств. Принимает лишь 2 значения - false или true.

Вот теперь решаем задачу. :)
>если автобуса нет, мы ждём независимо от светофора (WAIT => TRUE)
>если автобус есть и цвет красный, мы ждём (WAIT => TRUE)
>если автобус есть и цвет не красный, мы не ждём (WAIT => FALSE)
>предупреждаю, автобус не остановится на сломанном светофоре.
>данных для решения достаточно.
Да. Для принятия однозначного решения вполне достаточно.
>постройте автомат, вычисляющий ожидание автобуса от двух переменных.
Строю.
Обозначения: Автобус - А, светофор - С.
Go!=(А AND (Not(С neqv undef) or C )) :)
>нажмите кнопку старт и покажите ответ автомата
Жму.
>А)BUS: TRUE (область значений {FALSE, TRUE})
Остается Go!=Not(С neqv undef) or C
>B)SIGNAL: UNDEF (область значений {FALSE/красный/, UNDEF/сломан/, TRUE/зелёный/})
Go!=Not(undef neqv undef) or undef=Not(false) or undef=true or undef=true :)
Едем! :)

>постройте пожалуйста детектор лжи:
>is_false(FALSE) => TRUE
>is_false(UNDEF) => FALSE
>is_false(TRUE) => FALSE
Брешет, гад!=Not(A) AND (A neqv undef) :)

>ну постройте тогда детектор правды
>is_true(UNDEF eqv UNDEF) => FALSE
>is_true(FALSE) => FALSE
>is_true(TRUE) => TRUE
Не врет=А AND (A neqv undef)

>ну вот... оказывается тождественность значения значению зависит от родословной значения .
Почему? Мы бесконечность исчерпывающе задать не можем, ну подумаешь, записали условно. Я о том, что косинус от бесконечности вообще не поддается анализу. А запись cos(беск.) ничего осмысленного не значит.
>вы что, оставляете за собой право проверять родословную в следующем случае: √4 eqv tg(60°) => ?
Нет, я просто говорю, что равенство, тождественность утверждать нельзя. Логически нельзя, бо, не получается объект задать. Зато можно сказать, что (cos(беск) eqv cos(беск))=true Как и(cos(беск) eqv sin(беск))=true.
И (cos(беск) eqv undef)=true.

Блин, в математике ведь разные значки обозначают равенство(совпадение) и эквивалентность. А я-то тормоз... :( Но мой undef пока еще жив. :)
Солипсизм не пройдёт! :fal:  
Это сообщение редактировалось 08.05.2004 в 21:04

Anika

координатор
★★☆
Есть хорошее и точное в двумерной геометрии понятие - "по часовой стрелке". А в трех измерениях оно может означать и "увеличение тангажа", и "правый крен", и много чего еще - смотря в какой плоскости смотреть... ;)
Не надо пристегивать двоичные операторы к троичной логике. Ей нужны свои собственные, с новыми (во избежание путаницы) именами. Ну, разве что NEG(x) еще годится. :)
Когда говорит масло - пушки молчат. А голос пушек - это голос Муз. (c)Ю.Шерман  
+
-
edit
 

-exec-

опытный

AidarM
да вы тоже заставили меня попотеть. :D
у меня самого прояснилась нетождественность XOR и NEQV.
до этого разницу я подозревал, но весьма смутно.

в общем получается кажецца так:
is_true(A):= (A eqv TRUE)
is_false(A):= (A eqv FALSE)
is_undef(A):= (A eqv UNDEF)
is_def(A):= (A eqv TRUE) or (A eqv FALSE)
is_not_true(A):= (A eqv FALSE) or (A eqv UNDEF)
is_not_false(A):= (A eqv UNDEF) or (A eqv TRUE)
это я так, инструментарий прикупил на всякие случаи.

оператор not(A) пока, пожалуй придётся похерить: он переводит сущность в диаметрально противоположную, что применимо при наличии чётного числа сущностей, но неприменимо при нечётного.
гарантировать, что под руку не попадётся not(UNDEF) мы не можем.

можно было бы определить not(UNDEF) => UNDEF,
но тогда это станет странностью в виде эквивалентности элемента своему дополнению.
вообще говоря, not это оператор над множествами.
not({FALSE}) => {UNDEF, TRUE}
not({UNDEF}) => {FALSE, TRUE}
not({TRUE}) => {FALSE, UNDEF}

действительно, Anika предлагает заменить not на neg.
neg(FALSE) => TRUE
neg(UNDEF) => UNDEF
neg(TRUE) => FALSE
это уже гораздо комфортнее наблюдать... вот хотя бы -0 = 0.
вроде привычно.

что станет с A and not(A)? кажется так:
FALSE and neg(FALSE) => FALSE and TRUE => FALSE
UNDEF and neg(UNDEF) => UNDEF and UNDEF => UNDEF *
TRUE and neg(TRUE) => TRUE and FALSE => FALSE

меня (*) смущает.

попытка вторая:
{FALSE} and not({FALSE}) => {FALSE} and {UNDEF, TRUE} => {} - получено пустое множество. это FALSE?
{UNDEF} and not({UNDEF}) => {UNDEF} and {FALSE, TRUE} => {} - FALSE?
{TRUE} and not({TRUE}) => {TRUE} and {FALSE, UNDEF} => {} - FALSE?
вроде лучше.

{FALSE} or not({FALSE}) => {FALSE} or {UNDEF, TRUE} => {FALSE, UNDEF, TRUE} - достигнуто полное множество. пишем TRUE?
{UNDEF} or not({UNDEF}) => {UNDEF} or {FALSE, TRUE} => {FALSE, UNDEF, TRUE} - TRUE?
{TRUE} or not({TRUE}) => {TRUE} or {FALSE, UNDEF} => {FALSE, UNDEF, TRUE} - TRUE?
пока не ясно.
но, в принципе, видно почему у меня получилось тогда провернуть UNDEF or not(UNDEF).
там выхлоп у меня оказыватеся был статусом достижения полноты.

интересно... попробуем далее:
neqv(A,B):= neg(A eqv B)
получается:
neqv(FALSE, FALSE):= FALSE
neqv(FALSE, UNDEF):= TRUE
neqv(FALSE, TRUE):= TRUE
neqv(UNDEF, UNDEF):= FALSE
neqv(TRUE, TRUE):= FALSE
вроде терпимо...

xor(A, B):= ?
вы говорите xor возвращает множество неэквивалентности.
я понимаю что это такое, но в 5:31 не могу окончательнн записать словами.

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

сейчас мощность нашего алфавита 3.
подозреваю, что, в таком случае, xor должен быть тернарной функцией, чтобы дать нечто определённое
xor3(A, B, C):=
xor3(FALSE, UNDEF, TRUE) => TRUE
xor3(FALSE, FALSE, TRUE) => FALSE
xor3(FALSE, FALSE, FALSE) => FALSE
...

всё. я спать. гоню уже по тяжёлой.
 
+
-
edit
 

AidarM

аксакал
★★☆
>у меня самого прояснилась нетождественность XOR и NEQV.

ИМХО, можно сказать, что с помощью EQV/NEQV девайс 'оценивает', а не 'вычисляет' содержимое ячеек.

>это я так, инструментарий прикупил на всякие случаи.
:) Предлагаю обобщение на троичный случай алгоритма реш-я задачи о построении автомата. Изменим немного условие пред. задачи, чтобы и в ответе был неопр. случай. Скажем, пусть когда автобус подъезжает, а светофор сломан, то непонятно - ждать или нет(автобус притормозит или нет). Ну, с потолка условие, в общем. Так, для иллюстрации.

Автобус(А) есть/нет(±).
Светофор(С) красный/сломан/зеленый(+/undef/-)
Мы(M) не ждем/мучаемся в догадках/ждем(+/undef/-)

Таблица истинности.
A C M
- - -
- 0 -
- + -
+ - -
+ 0 0
+ + +

Алгоритм следующий: для начала берем ситуации, когда целевая функция(М) равна true и эти ситуации объединяются(через or, т.е., как и в бинарном случае) в кучку 1. У нас всего одна такая: A and С. В 3нарной логике возникает доп. проблема: если требуется отработать ситуацию, когда операнд должен иметь значение true или false, а этот операнд теоретически способен принять значение undef(у нас такой - С), ИМХО, нужно исключить сие с помощью детектора undef, пересекая с ним данное выражение. У нас это С and (С neqv undef)

Затем точно так же собираются в отдельную кучку и ситуации, когда целевая функция должна принять значение undef. У нас такая тоже одна:
A and Not(C neqv undef).

Затем вся вторая кучка берется в скобки и пересекается(через and) с undef - таким образом достигается равенство целевой функции undef при реализации(равенстве true) любой ситуации из второй кучки. В нашей ситуации это
(A and Not(C neqv undef)) and undef.

После чего полученное опять объединяется с первой кучкой и упрощается. Имеем автомат, отрабатывающий M.

M=((A and Not(C neqv undef)) and undef) or (A and С and (С neqv undef)) :)


>можно было бы определить not(UNDEF) => UNDEF,
>но тогда это станет странностью в виде эквивалентности элемента своему дополнению.

Ну и что? Эквивалентность, но не равенство же. :) Для меня :) cos(беск) и cos(-беск.) эквивалентны. Но говорить про равенство я не могу, что это такое я не знаю.

>вообще говоря, not это оператор над множествами.
Да.
>not({FALSE}) => {UNDEF, TRUE}
Почему? true ведь полное множество. Или ваш undef в него не входит?
>not({UNDEF}) => {FALSE, TRUE}
>not({TRUE}) => {FALSE, UNDEF}
Похоже, это уже какая-то математика из 3х чисел/объектов пошла... :unsure: Конечно, если проводить аналогии с числами, то 0 в единицу не входит. А -1 не входит в 0. Все это разные объекты и отношения между ними установлены совсем иные, нежели для множеств. ИМХО, это все не в кассу. Anika ведь предлагает знак поменять, а у множеств этой фичи нема. Или я вас опять не понял.

>всё. я спать. гоню уже по тяжёлой.
Божественный смайлик! :) Откуда?

Исправил глюки. Как мне кажется. :F
Солипсизм не пройдёт! :fal:  
Это сообщение редактировалось 11.05.2004 в 16:26
US [Сергей] #10.05.2004 21:20
+
-
edit
 
Господа, еще раз - формальная логика есть набор ммм... да, в общем, просто набор эвристик, смысл которых - в простоте и предельности случая. Причем понятно, что любые выражения n-арной логики можно выразить логическими выражениями - те же ваши "автобус приедет - просто назначением дополнительных символов и/или переменных. Так же очевидно, что при наличии такого решения в бинарной логике задача оптимального "перевода" в троичную, четверичную etc (с заменой некоторый групп значений одним - вовсе не является ни сложно ни "исследовательской" - с ней вполне справится автомат. Которому, разумеется, вовсе ну нужны "правоверные" названия троичных функций, а нужны только таблицы соответствий. Так что задача сводится (насколько я понимаю) к задаче "привыкнуть" думать в категории троичных логик. Практической (и даже теоретической) ценности сего деяния я представить не могу. :)

Пример - на входе - две булевских переменных,
значат -
a - может быть дождик/не будет дождик
b - точно будет/не точно

Множество возможных входных значений -
a b
true true
true false
false true (собственно, в этом случае нам последний параметр пофиг, мы его зафиксируем для строгости)

На выходе - одна переменная - брать зонтик/не брать зонтик.

Реализуем в "обычной" логике, получаем некоторую булевскую функцию
f (a,b) = c

Теперь (при желании) напускаем на нашу функцию автомат для перевода в троичную логику, он выделяет область определения, область значений и автоматически строит что-то вроде

f3(a3) = b3

где
a3 = 0 если точно будет
a3 = 1 если может быть будет
a3 = 2 если не будет.

а сама функция f3 - таблично заданная троичная функция, которая переводит 0 и 1 в 0 (брать зонтик) а 2 - в 1 (не брать). Ну, или если такая функция впрямую в вашей машине не реализована - то тогда суперпозицию базисных функций, реализующую данную.

И зачем же вам нужны "правоверные" мнемоники в таком случае? Почему не ограничиться "правоверной" бинарной логикой? :)
 
+
-
edit
 

-exec-

опытный

[Сергей]: машина поста это круто. но тьюринга - быстрее :D

AidarM> Автобус(А) есть/нет(±(.
у меня помутилось сознание когда я тут начал сравнивать булевские значения и множества.

меня смущает
OR: FALSE or TRUE => TRUE; {FALSE} or {TRUE} => {FALSE, TRUE}
OR: FALSE or FALSE => FALSE; {FALSE} or {FALSE} => {FALSE}
AND: FALSE and TRUE => FALSE; {FALSE} and {TRUE} => {}
AND: FALSE and FALSE => FALSE; {FALSE} and {FALSE} => {FALSE}
я пока не могу осознать изоморфизма.
заметьте - булевский TRUE на множествах соответствует множеству {FALSE, TRUE}, а не множеству {TRUE}, как можно было бы ожидать.
то же самое FALSE.

я планирую сналала понять соответствие, пересчитать таблицы для именованных булевых операторов, и потом уже попробовать подменить {FALSE, UNDEF, TRUE} на {"–", "0", "+"}. или ещё что нть полезное.

сейчамс прыгать на {"–", "0", "+"} я морально не готов.

p.s.надыбал букву в юникоде
. прикольно. F17.
p.p.s. fool.exler.ru - там так написано.
 
Это сообщение редактировалось 11.05.2004 в 09:15
+
-
edit
 

-exec-

опытный

AidarM, вы думаете так?
code text
  1. False ∈ Undef
  2. Undef ∈ True
  3. False ∈ True


Просто если так, то можно договориться, что множество {False, Undef} эквивалентно {Undef} (если договориться, что количество вхождений элемента во множество не важно).
Равно как:
{False, True} ≡ {True}
{Undef, True} ≡ {True}
{True, True} ≡ {True}

Если это не так, то придётся выдумывать как отобразить множество {False, True} на двоичную/троичную логику.
 
+
-
edit
 

AidarM

аксакал
★★☆
Наврал в своем предыдущем посте аж в 2х местах. :blink::(
Исправил.

-exec-

>у меня помутилось сознание когда я тут начал сравнивать булевские значения и множества.
Чего? :blink:

>меня смущает
А я вообще не уловил смысл.
>OR: FALSE or TRUE => TRUE; {FALSE} or {TRUE} => {FALSE, TRUE}
>OR: FALSE or FALSE => FALSE; {FALSE} or {FALSE} => {FALSE}
>AND: FALSE and TRUE => FALSE; {FALSE} and {TRUE} => {}
>AND: FALSE and FALSE => FALSE; {FALSE} and {FALSE} => {FALSE}
>я пока не могу осознать изоморфизма.
И я. Левая часть таблицы мне ясна. А от правой таблицы у меня укрепилось ощущение, что true, false - независимые, несоподчиненные элементы некоторого другого полного множества. И false тут - не пустое множество, и true - не полное. :confused:

Короче, не уловил я ни идею, ни смысл.

>сейчамс прыгать на {"–", "0", "+"} я морально не готов.
Дык это вроде просто обозначения false,undef, true и не более того. Нет? :unsure: Я-то их так юзаю.

>AidarM, вы думаете так?
У меня значок между операндами выглядит как квадратик. И найденный вами новый символ - тоже.

Уперто продолжаю считать, что false содержится во всех множествах. А true содержит все множества - оно полное.
Солипсизм не пройдёт! :fal:  
Это сообщение редактировалось 11.05.2004 в 16:38
+
-
edit
 

-exec-

опытный

AidarM>Предлагаю обобщение на троичный случай алгоритма реш-я задачи о построении автомата. Изменим немного условие пред. задачи, чтобы и в ответе был неопр. случай. Скажем, пусть когда автобус подъезжает, а светофор сломан, то непонятно - ждать или нет(автобус притормозит или нет). Ну, с потолка условие, в общем. Так, для иллюстрации.
а что иллюстрировать? то, что неполное множество операторов иногда может справиться с задачей, решение которой может быть не выходит за пределы досягаемости неполного множества операторов? да, если нет детекторов правды, лжи и неопределённости, очевидно, что множество операторов будет неполным.
если светофор сломан, тогда да, застенчивый автобус на неполной троичной логике тоже повиснет в неопределённости. и повисший в неопределённости автомат просто унаследует неопределённость автобуса. такая задача не интересна.

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

мой пост, начинающийся словами "машина поста это круто" глючит в ИЕ - показывается только верхняя часть постинга. приходится шаманить кликами наугад, чтобы он отрисовался нормально. почему - undef.
_________________________

кстати, я теперь запутался вообще в булевой логике.
у меня две модели булевых значений в терминах множеств.
тут картинка, следующим постом моя путаница.
 
+
-
edit
 

AidarM

аксакал
★★☆
>смысл этой задачи в том, чтобы показать, что неполная логика не может решить целый класс задач, требующих как минимум наличия работающих детекторов.
Ежели не удастся чего-то нового придумать. Принципиально троичного, например. :) Я еще подумаю, как без детекторов обойтись. ИМХО, стоит придумать гейт, позволяющий записать решение, не отлавливая случаи с undef специально.

>у меня две модели булевых значений в терминах множеств.
тут картинка, следующим постом моя путаница.

А у меня другая картинка. :) К-рую нарисовать не получится. ;)
Квадрат - это true. undef - неизвестно что, ясно только, что внутри квадрата. Никаких границ undef нарисовать нельзя. А false - вообще пустое множество. :D Чего рисовать? Ясно, что пустое множество везде поместится, куда угодно влезет. :)
Солипсизм не пройдёт! :fal:  
+
-
edit
 

-exec-

опытный

модель 2 (нижний рисунок):
{False} and {False} => {False}
{False} and {Undef} => {} => {False}, если принять, что {} ≡ {False}
{False} and {True} => {} => {False}
{Undef} and {Undef} => {Undef}
{True} and {Undef} => {} => {False}
{True} and {True} => {True}
(сокращено по коммутативности)
получается ерунда.

ладно, возьмём модель 1:
{False} and {False} => {False}
{False} and {Undef} => {} => {False}, если принять, что {} ≡ {False}
{False} and {True} => {} => {False}
{Undef} and {Undef} => {Undef}
{True} and {Undef} => {Undef}
{True} and {True} => {True}
вроде получается лучше, чем на второй модели.

смотрим модель 1 дальше
not {False} => {Undef, True} => {True}, поскольку {Undef} ∈ {True}
дальше глюк:
not {True} => {False, Undef} => {Undef}, поскольку {False} ∈ {Undef}
и ещё глюк:
not {Undef} => {False, True} => {True}, поскольку {False} ∈ {True}

смотрим not для второй модели:
not {False} => {Undef, True}. как множество {Undef, False} отобразить на троичную логику я не догабываюсь
not {Undef} => {False, True}
not {True} => {False, Undef}.

какие идеи?
 
+
-
edit
 

-exec-

опытный

так что ли?
это в общем топологически эквивалентно первой модели
 
+
-
edit
 

AidarM

аксакал
★★☆
>так что ли?

Не совсем. Нельзя очертить границу undef - неизвестно, что это за множество. Если рисунок на плоскости, то, грубо говоря, это может быть и многосвязная область и фрактал и все, что можно выдумать и уместить в true. Хоть само true, хоть false. А false - пустое множество. 'Нихрена.' А не точка внутри undef. :) Ваш рисунок скорее к 4значной логике относится. Есть полное множ-во, есть какое-то ограниченное(условно обозванное undef) и другое, дополняющее undef до полного - not(undef).
ИМХО, не стоит рисовать. Прямой иллюстрации, ИМХО, сделать не удастся.
Солипсизм не пройдёт! :fal:  
Это сообщение редактировалось 11.05.2004 в 18:05
+
-
edit
 

-exec-

опытный

оффтопик:
а как называется функция:
{f(x) = 0 если x∈R\Q; f(x) = 1 если x∈Q}
?

п.с.и вообще тут электроникой почти не пахнет.
 
+
-
edit
 

AidarM

аксакал
★★☆
У меня значки какие-то странные. Можно функцию словами описать?
Солипсизм не пройдёт! :fal:  
+
-
edit
 

-exec-

опытный

ноль, если число иррациональное
единица, если число рациональное

или наоборот - не помню
 
+
-
edit
 

AidarM

аксакал
★★☆
Функция Дирихле, кажется.
Солипсизм не пройдёт! :fal:  
US [Сергей] #11.05.2004 19:50
+
-
edit
 
Господа, а не кажется ли вам, что вы изобретаете нечеткую логику? :) Пока что все очень даже в русле. ;)
 
+
-
edit
 

AidarM

аксакал
★★☆
>Господа, а не кажется ли вам, что вы изобретаете нечеткую логику?
Конечно, раз на исключенное третье забили. Вот только я в ней не спец и изобретаю велосипед, т.к. мне интересно. Если вы, Сергей, в ней разбираетесь, то быть может, просто ссылок на учебные материалы накидаете на эту тему?

> Пока что все очень даже в русле.
Приятно слышать. :)
Солипсизм не пройдёт! :fal:  
US [Сергей] #11.05.2004 21:57
+
-
edit
 
Я вовсе не большой специалист. На самом деле - что помню с спецкурса универа - то и знаю. А насчет ссылок - скажем,
здесь.

Правда, там очень прикладной курс. :)
 
+
-
edit
 

-exec-

опытный

[Сергей]> подскажите содержание следующей серии, плиз:
A)Undef имеет пересечения с False и True, как считает Aidar (модель стакана с жидкостью - 0, 0-слегка-полный-(но не ясно сколько), полный)
B)элементы Undef, False, True пересечений не имеют, как я считал раньше (как {0, 1, 2})
C)False входит в Undef, Undef входит в True как мне недавно поглючилось под влиянием AidarM
?

похоже недетерменированная логика использует модель AidarM "A": то есть детерминированные автоматы у которых некоторые входы забиваются генераторами случайных значений.
 
US [Сергей] #11.05.2004 23:02
+
-
edit
 
Продолжая тему с нечеткими множествами, можно предположить, что каждый элемент нашего множества (с числом элементом N) представляет значение функции принадлежности. В частности, для двоичной логики:

valFalse(0) = 0 // Константа false
valFalse(1) = 0

valTrue(0) = 1 // Константа true
valTrue(1) = 1

для троичной:

valFalse(0) = 0 // Константа false
valFalse(1) = 0

valUndef(0) = 1/2 // Константа undef
valUndef(1) = 1/2

valTrue(0) = 1 // Константа true
valTrue(1) = 1

(разумеется, мы можем определить интервал не от 0 до 1, а любой другой, но это нам не надо).

Тогда все операции прекрасно работают, если воспользоваться операторами нечетких множеств. Скажем, в двоичной:

valFalse(x) & valFalse(x) = valFalse(x)
valFalse(x) | valFalse(x) = valFalse(x)
valFalse(x) | valTrue(x) = valTrue(x)
valTrue(x) & valTrue(x) = valTrue(x)

- сказка, правда? :) Перейдем к троичным, получаем:

valFalse(x) & valFalse(x) = valFalse(x)
valFalse(x) & valUndef(x) = valFalse(x)
valFalse(x) & valUndef(x) = valFalse(x)
valUndef(x) & valUndef(x) = valUndef(x)
valUndef(x) & valTrue(x) = valUndef(x)
valTrue(x) & valTrue(x) = valTrue(x)

valFalse(x) | valFalse(x) = valFalse(x)
valFalse(x) | valUndef(x) = valUndef(x)
valUndef(x) | valUndef(x) = valUndef(x)
valUndef(x) | valTrue(x) = valTrue(x)

- опять сказка! :) Заметьте, что с выкидыванием valUndef() мы легко и непринужденно приходим к булевой логике.

Вы скажете - мы некорректно зафиксировали 1/2 как функцию принадлежности valUndef. Во-первых - заметьте, что мы можем зафиксировать любую другую. Во-вторых - при введении оператора дополнени лучше иметь симметрию.


Продолжая этот ряд мы легко можем расширить его на любую n-ичную логику - с тем безусловным преимуществом, что она всегда будет сходиться к логике предыдущего порядка просто выкидыванием соответствующей константы. Как я понимаю - чтд. :)

 
1 5 6 7 8 9 10 11

в начало страницы | новое
 
Поиск
Настройки
Твиттер сайта
Статистика
Рейтинг@Mail.ru