6 лет на форуме Автор 3 уровня Топ пользователь Все
Награды
6 лет на форуме
6 лет на форуме
Автор 3 уровня
Автор 3 уровня
Топ пользователь
Топ пользователь
1000 просмотров
1000 просмотров
Наверное стоит еще раз вспомнить о троичной логике
  837
http://www.computer-museum.ru/histussr/12.htm

в "Заметки о троичной цифровой технике – часть 1" показывается убедительный пример сокращения программы работающей на троичной машине раз в пять.

а это из Википедии
image
Ответов 35 Написать ответ
  • dionisiy
    dionisiy
    Dio Nisiy
    11 января 2010  

    http://lib.ru/MEMUARY/MALINOWSKIJ/8.htm

    У меня налицо убедительные доказательства верности открытого пути. С какой легкостью была создана "Сетунь", как просто ее осваивали и продуктивно применяли пользователи во всех областях, и как они плевались, когда пришлось переходить на двоичные машины. Наивысшее достижение сегодня - RISC-архитектура - машины с сокращенным набором команд (типично - 150 команд), но где им до "Сетуни", у которой 24 команды обеспечивали полную универсальность и несвойственные RISC эффективность и удобство программирования! Истинный RISC может быть только троичным.

    0
  • URSUS
    11 января 2010  

    круто конечно, но... вы программираете на аппаратном уровне?

    но это конечно круто! :
    ..."Арифметические и машинные достоинства троичности в достаточной степени были освоены нами уже в "Сетуни-70" - операции со словами варьируемой длины, оптимальный интервал значений мантиссы нормализованного числа, единый натуральный код чисел, адресов и операций, идеальное естественное округление при простом усечении длины числа, алгебраические четырехвходные сумматоры и реверсивные счетчики, экономия соединительных проводов и контактов за счет передачи по каждому проводу двух несовместимых двузначных сигналов (т.е. одного трехзначного). Короче говоря, все, о чем мечтает Д. Кнут в "Искусстве программирования для ЭВМ", мы уже осуществили."...

    Очень жаль, что мы работаем не в этих условиях, как говорит Задорнов: Всё из-за бабок!

    ..."В декабре 1993 г. я встретился с известным специалистом в области компьютерной науки профессором С.В. Клименко, работающим в вычислительном центре Института физики высоких энергий (г. Протвино Московской области). Ученый только что возвратился из США, где по просьбе американской стороны прочитал небольшой курс лекций по истории развития компьютерной науки и техники в Советском Союзе. На мой вопрос - о чем и о ком спрашивали его американские слушатели, он ответил: "Почему-то только о Брусен-цове и его машине "Сетунь"."...

    0
    • dionisiy
      dionisiy
      Dio Nisiy
      11 января 2010  

      я сейчас пример троичной логики на 1С напишу

      для этого не надо тритов и т.д. Просто и наглядно докажу, что программа упрощается и более читабельна.

      0
    • dionisiy
      dionisiy
      Dio Nisiy
      11 января 2010  

      Вот тут

      image

      В примере я пытался анализировать как цена поменялась у одного взятого товара и пытался выяснить животрепещущие частности, что случилось - вбивали ли вовремя цену? Была ли она вообще?


      Используются новые элементы - "Типа да", "Типа нет", "НЕОПР"
      500 руб. > неопр = "Типа да"
      неопр > 500 руб = "Типа нет"
      неопр > неопр = "НЕОПР"

      К слову сказать, в математической логике подобное сравнение вообще невозможно, и в 1С это вызывает исключение - нельзя сравнивать неопределенное значение, но даже если не вызовет, то еще хуже, нам будет неизвестно, что же случилось, или там был 0? или меньшее значение?

      Есть разные варианты троичной логики, я их не изучал особо, мне нравится такой.

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

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

      Думаю, 1С-ники подчиняясь двузначной логике, бы даже так написали, чтобы типа "сократить" код:

      Цитата:
      ИначеЕсли (ЦенаА<>"НЕОПР")и(ЦенаБ<>"НЕОПР")и( ЦенаА>ЦенаБ) Тогда


      но согласитесь такие длинные условия более далеки от реальности, а что если бы мы захотели еще сюда добавить другие условия? Именно назло такие, которые зависят от "девочек". Т.е. их могут вбить или нет. То есть, пусто. Это пришлось бы ветвистое двоичное дерево рисовать ) или писать Если в три строчки )

      Конечно мне могут указать на новые удобные изобретения математики - исчисления, кванторы. Но мне нужна простота и читабельность ) Конечно все можно разложить на 0 и 1, главное то не в этом.

      0
      • dionisiy
        dionisiy
        Dio Nisiy
        11 января 2010  

        ахаха я уже ошибся

        ИначеЕсли (ЦенаА<>"НЕОПР")и(ЦенаБ<>"НЕОПР")и( ЦенаА>ЦенаБ) Тогда

        должно быть

        ИначеЕсли ((ЦенаА<>"НЕОПР")и(ЦенаБ<>"НЕОПР"))и( ЦенаА>ЦенаБ) Тогда

        0
      • dionisiy
        dionisiy
        Dio Nisiy
        11 января 2010  

        далеки не то что от реальности

        а от удобного способа выражать мысли

        0
      • dionisiy
        dionisiy
        Dio Nisiy
        11 января 2010  

        можно сказать это не то что троичная, а многозначная логика )

        Можно для удобства добавить еще какие-то удобные универсальные возвратные значения

        0
        • URSUS
          11 января 2010  

          :) логика на уровне процента вероятности события:

          значение
          максимально округлённое(булево): 0 или 1
          не округлённое: от 0 до 100%
          а для степени округления использовать функцию в зависимости от необходимости, например y=x^2 или y=x :)

          0
          • dionisiy
            dionisiy
            Dio Nisiy
            11 января 2010  

            к счастью для 1С хватит и просто

            НеЗаполнено )

            0
            • URSUS
              11 января 2010  

              на галерее добавил картинку

              http://www.ykt.ru/GALLERY/gals/program/504763.gif

              И всё таки мне кажется это обычная логика, просто правильно расставлены условия. :)

              0
              • dionisiy
                dionisiy
                Dio Nisiy
                11 января 2010  

                видишь сколько хитростей нужно предпринять )

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

                А если твой код копи пастить спросонья? А если еще два условия с null подкинуть?

                У меня количество импликаций одно, а у тебя два.

                0
    • dionisiy
      dionisiy
      Dio Nisiy
      11 января 2010  

      А наверное третичная импликация выглядела бы так

      Если ... То

      Иначе

      Возможно //одно из значений NULL, правда не известно первое или второе ))

      КонецЕсли

      0
      • URSUS
        11 января 2010  

        конструкция "Попытка-Исключение" позволяет создавать некое подобие:)

        но опять минус - "попытка" снижает производительность?

        0
        • dionisiy
          dionisiy
          Dio Nisiy
          11 января 2010  

          читабельность снижает

          и опять это новая импликация же, еще одна название-по-научному ))

          Исключения вроде оптимизированы, но все равно там же отдельные аж регистры для них. И они нужны для других целей. Более правильно было бы дополнительная импликация IsNull ПустоеЗначение. Но мне кажется стоит как-то осмыслить не Null, а что-то еще. Пропадает же ведь )

          0
    • dionisiy
      dionisiy
      Dio Nisiy
      11 января 2010  

      Вообще троичная логика может выглядеть так

      (ИСТИНА = ИСТИНА) -> ИСТИНА
      (ИСТИНА = НЕОПР) -> НЕОПР
      (ИСТИНА = ЛОЖЬ) -> ЛОЖЬ
      (НЕОПР = ИСТИНА) -> НЕОПР
      (НЕОПР = НЕОПР) -> ИСТИНА
      (НЕОПР = ЛОЖЬ) -> НЕОПР
      (ЛОЖЬ = ИСТИНА) -> ЛОЖЬ
      (ЛОЖЬ = НЕОПР) -> НЕОПР
      (ЛОЖЬ = ЛОЖЬ) -> ИСТИНА

      0
    • Assa
      11 января 2010  

      re(+)

      Троичный risc конечно хорошо, но все прикладыние задачи решаются с помощью (по словам того же Н.П.Брусенцова) "структурированное программирование [1] расценивается обычно как методика разработки больших, сложных программ, реализуемая на базе языка высокого уровня, например Фортрана или Кобола"

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

      Описывать троичную логику "двоичными если" это громоздко и неудобно (хотя бы посмотрите синтаксис языка PL или пример dionisy). Может посмотреть в сторону нечеткой логики? Английский математик Чарльз Лютвидж Доджсон (он же Льюис Кэррол) еще в 19 веке предвосхитил нечеткую логику, что описана в книге "Логическая игра", двоичную логику можно расширить до троичной в частности и далее на сколько хватит фантазии :) Именно по такому множествомерному пространству гуляла Алиса :)

      «Они рисовали мышеловки, мальчишек, математику, множество... Ты когда-нибудь видела как рисуют множество?
      - Множество чего, - спросила Алиса.
      - Ничего, - отвечала Соня, – просто множество!»
      Льюис Кэррол. Алиса в стране чудес.

      0
      • dionisiy
        dionisiy
        Dio Nisiy
        12 января 2010  

        Брусенцов

        "фанат" Доджсона.

        Цитата:
        "Двадцатый век ознаменован прогрессирующим нарастанием протеста против двухзначности: отвержение интуиционистской математикой закона исключенного третьего, попытки Льюиса, а затем Аккермана преодолеть “парадоксы" материальной импликации, изобретение Лукасевичем трехзначной логики, предположение Рейхенбаха о трехзначности логики микромира (квантовой механики), общее усиление активности в области многозначных логик, наконец, нечеткие множества Заде, справедливо квалифицируемые “как вызов, брошенный европейской культуре с ее дихотомическим видением мира в жестко разграничиваемой системе понятий”. Однако все это пока как бы некий “модерн”, не достигающий преследуемых целей, да и сами цели еще далеко не осознаны. Хрисиппова же “классика” обрела второе дыхание в исчислениях математической логики, в двоичной цифровой технике, и с позиций ее столь же непросто постичь недвухзначное, как, скажем, обитателям двухмерного мира представить себе мир трехмерный."


        Что я сегодня пытался сделать -
        Цитата:

        Разобраться в силлогистике удается не путем формального построения трехзначных и многозначных логик, а осмысленным последовательным развитием двухзначной логики, находящейся в ее основании.


        Цитата:

        Ситуация в логике убедительно свидетельствует о том, что и в трех соснах, когда видят два, глядя на три, блуждать можно без конца, причем блуждать научно и изобретательно - виртуальные миры неисчерпаемы и неисчислимы. Но ведь мы живем в единственном реальном мире, и Органон должен упреждать заблуждения в познании и благоустройстве именно этого мира, нашего бытия. Так понималось назначение информатики Аристотелем и его достойными последователями. Логики уклонились от этой цели, и теперь информатика при всей ее технической мощи и “искусственном интеллекте” функции Органона не выполняет. Она не предоставляет нам безупречных методов и инструментов рассуждения, вынуждая полагаться на эмпирику и интуицию, ее положения оказываются неадекватными реальности, несовместимыми со здравым смыслом, с диалектикой. Очевидна, однако, возможность коренного исправления ситуации: ведь не извращенная двухзначниками силлогистика Аристотеля с законом сосуществования противоположностей и с привходящим в качестве третьего-среднего есть та самая диалектическая логика , которую днем с огнем ищут современные мудрецы.

        0
      • dionisiy
        dionisiy
        Dio Nisiy
        12 января 2010  

        Капец вообщем, без бутылки не разберешься )

        Основоположником логики справедливо считается Аристотель, создавший систему доказательного умозаключения — силлогистику, которая все еще остается непревзойденным интеллектуальным инструментом. Силлогистика диалектична, и в ней нет парадоксов, но она не отобразима в современных логических исчислениях, что стало поводом для подозрений, будто у Аристотеля что-то не так, например, будто он не признавал пустых множеств. На самом деле в силлогистике налицо не только пустые, но и нечеткие множества, открытые Л. Заде в 1965 г . и все еще “не освоенные” современной логикой. Но принципиальное отличие логики Аристотеля от современной “классической” в том, что она не двухзначна, а трехзначна [3]. Вопреки “закону исключенного третьего” у Аристотеля наряду с “необходимо есть” и “необходимо нет”, имеется третье — “возможно, есть и, возможно, нет”. Трехзначность присуща отношению следования, исчерпывающе определенному Аристотелем в “Первой аналитике”:

        “…Когда два [объекта] относятся друг к другу так, что если есть один, необходимо есть и второй, тогда, если нет второго, не будет и первого, однако если второй есть, то не необходимо, чтобы был первый. Но невозможно, чтобы одно и то же было необходимо и когда другое есть и когда его нет ”.

        В силлогистике отношение следования представлено общеутвердительной посылкой Всякое x есть у , сущность которой в том, что всякая x -вещь необходимо есть xy -вещь, а всякая y ? -вещь (не- y -вещь) необходимо есть x?y?-вещь. При этом естественно исключены (невозможны) xy ?-вещи, поскольку x необходимо должно быть у (не может быть у ?). Однако вместе с тем x ? y -вещи не исключены, они возможны , но не необходимы в силу наличия xy — и x ? y ? -вещей. Если же наряду с “Всякое x есть у ” выполняется “Всякое у есть x ”, то будут исключены как xy?-, так и x?y-вещи, т.е. получится отношение эквивалентности — х равнозначно у , выразимое в двухзначной логике: “равнозначно/неравнозначно”. Для отношения же следования требуются три значения: “необходимо есть” / “возможно, но не необходимо” / “невозможно”, поэтому двухзначной импликации для адекватного выражения следования недостаточно. При наличии xy ? -вещей следование невозможно, а если х -вещей нет, то следование не исключено, т.е. возможно, но не необходимо. В случаях же несуществования х -вещей, либо у -вещей, импликация вообще не выражает никакой взаимосвязи между терминами, не составляет двухместного отношения. В этих случаях другой термин волен принимать любое значение независимо.

        Для устранения “парадоксов” импликации достаточно предотвратить эти случаи непеременности (константности) ее терминов. Так, строгая импликация Льюиса, представляющая собой несуществование ху? -вещей, т.е. V ?ху? , парадоксально выполняется при несуществовании х -вещей, а также при несуществовании y?-вещей, т.е. при V?х и при V?у?. Парадоксов не станет, если наряду с V ?ху? потребовать V х и V у? — существования х -вещей и у? -вещей. В результате импликация Льюиса превращается в аристотелево необходимое следование VxV?xy?Vу? [1]. В совершенной дизъюнктной нормальной форме этого отношения — VхуV?хVх? — очевидна его трехзначность: наряду с принадлежностью рассматриваемому подмножеству декартова произведения {х, х?} х {у, y ?} членов ху, х?у? и антипринадлежностью ху? умалчивается член х?у . Умалчиванием выражена третья разновидность принадлежности — привходящая, возможная, но не необходимая. Подмножество, допускающее привходящую принадлежность, нечетко, а представленное им отношение трехзначно.

        0
  • dionisiy
    dionisiy
    Dio Nisiy
    12 января 2010  

    Кстати

    в SQL есть нечто подобное, которое использует NULL в результате

    операторы соединения INNER, LEFT OUTER, RIGHT OUTER, FULL OUTER и CROSS

    0
  • dionisiy
    dionisiy
    Dio Nisiy
    18 января 2010  

    Еще одно наблюдение Если-Иначе-Возможно.

    Если в мозгу животного существует ассоциация между предметом Х — орудием и предметом Y — объектом действия (и, конечно, физическая возможность выполнить действие), то оно окажется способным применить орудие. Если же такой ассоциации нет, то животное «не догадается» сделать это. Собаку можно обучить подтаскивать зубами скамейку Х к забору Y, забираться на скамейку и перепрыгивать с нее через забор, который иначе она преодолеть не может. Но если она не обучена этому, то своим умом ей до этого не дойти. Она прекрасно знает, что скамейку можно передвигать с места на место. Она также знает, какие возможности открываются перед ней, если скамейка стоит около забора. Приставьте скамейку — она тут же вскочит на нее и перепрыгнет через забор (предполагается, что ей это почему-либо нужно). Значит, она умеет предвидеть результат комбинации Х и У. Соответствующая модель есть у нее в мозгу. Но эта модель лежит мертвым грузом, ибо собака не может представить себе комбинацию XY в виде цели, к которой надо стремиться, для этого ей не хватает воображения. Мало знать, что будет, если, надо еще вообразить, что может быть. Суховатую формулу, отождествляющую мышление с управлением ассоциированием, можно перевести на менее точный, но более образный язык как следующее утверждение: человек отличается от животного тем, что он обладает воображением.

    0
    • DR_GNUS
      DR_GNUS
      Василий Алибабаевич
      18 января 2010  

      *

      Не, ну смысл то понятен :)
      Но зобаг ты зря обидел :D
      На моего б барбоса поглядел, ага.
      Тот бы и скамейку припёр, на раз/два.
      Соображалка у него лихо работала.
      Уникальный был барбос, мир его праху :(

      0
      • dionisiy
        dionisiy
        Dio Nisiy
        18 января 2010  

        так конечно

        с тобой пообщаешься и глядишь меня до 80 уровня орка, тьфу DBA, дотянешь )

        0
        • DR_GNUS
          DR_GNUS
          Василий Алибабаевич
          19 января 2010  

          :)

          :D:D:D

          Да не, есть и покруче меня, намного покруче ;)
          Я только примерно до 30-го уровня скилл прокачал :D
          Ещё есть к чему стремится ;)

          0
  • dionisiy
    dionisiy
    Dio Nisiy
    18 января 2010  

    Вот кстати в чем проблема математической логики, двухзначной

    Цитата:
    В математическом изложении это несовершенство “классики” про-явилось, наконец, с очевидностью. Оказалось, что в условиях двухзначности из “Все x суть y“ не следует с необходимостью “Некоторые x есть y“.

    0
  • Айс
    20 января 2010  

    ничё не понял

    о чём вы тут)))

    0
Ответ на тему: Наверное стоит еще раз вспомнить о троичной логике
Введите код с картинки*:  Кликните на картинку, чтобы обновить код
grinning face grinning face with smiling eyes face with tears of joy smiling face with open mouth smiling face with open mouth and smiling eyes smiling face with open mouth and cold sweat smiling face with open mouth and tightly-closed eyes smiling face with halo smiling face with horns winking face smiling face with smiling eyes face savouring delicious food relieved face smiling face with heart-shaped eyes smiling face with sunglasses smirking face neutral face expressionless face unamused face face with cold sweat pensive face confused face confounded face kissing face face throwing a kiss kissing face with smiling eyes kissing face with closed eyes face with stuck-out tongue face with stuck-out tongue and winking eye face with stuck-out tongue and tightly-closed eyes disappointed face angry face pouting face crying face persevering face face with look of triumph disappointed but relieved face frowning face with open mouth anguished face fearful face weary face sleepy face tired face grimacing face loudly crying face face with open mouth face with open mouth and cold sweat face screaming in fear astonished face flushed face sleeping face dizzy face face without mouth face with medical mask face with no good gesture face with ok gesture person bowing deeply person with folded hands raised fist raised hand victory hand white up pointing index fisted hand sign waving hand sign ok hand sign thumbs up sign thumbs down sign clapping hands sign open hands sign flexed biceps
  
Обратная связь
Предложения и замечания