thedeemon: (Default)
[personal profile] thedeemon
Дано:
Двойка считает, что Туз в своем уме.
Тройка считает, что Туз не в своем уме.
Валет считает, что Двойка и Тройка в своем уме.
Вопросы:
В своем ли уме Двойка? В своем ли уме Тройка? В своем ли уме Валет?

В прошедшие выходные [livejournal.com profile] _darkus_ предложил общественности похожую задачку. Многие участники предложили очевидное решение: считать утверждения персонажей логическими высказываниями, и для определения разумности Валета смотреть, существует ли такой набор свободных переменных, на котором его утверждение истинно. Вот только на приведенном выше примере такой подход дает парадоксальный набор ответов: Двойка в своем уме, Тройка в своем уме, а Валет, утверждающий именно это, вдруг оказывается не в своем уме.

Это что же, если один мой собеседник считает, что гит лучше меркуриала, а другой - что меркуриал лучше гита, то мне не стоит их обоих считать разумными, иначе я сам окажусь безумен?

На мой взгляд, ключ тут в том, чтобы различать утверждения "Х прав" и "Х в своем уме". Если кто-то в одном высказывании выдает явное противоречие (например, говорит, что Туз в своем уме и что Туз не в своем уме), то он не в своем уме. Если же его утверждение в каких-то случаях может быть правдой, то он разумен. Два персонажа при этом могут быть одновременно в своем уме, при этом делая прямо противоположные заявления. Они не могут быть одновременно правы, но вполне могут быть одновременно разумны. При таком подходе Валет в моем примере в своем уме. Причем реализация этого подхода в программе не требует даже никакого перебора по всем возможным значениям свободных переменных, все решается в один проход.

Upd. Некоторые решавшие задачку в духе исходной книжки Смаллиана, используя чисто булеву логику, считают разумными лишь тех, кто говорит тавтологии, т.е. чьи высказывания истинны при любом наборе свободных переменных. Я же считаю разумными всех, кто не говорит чепухи, т.е. всегда противоречивых утверждений. Если некоторое утверждение истинно при одном наборе значений свободных переменных и ложно при другом, я считаю утверждающего разумным, они же считают, что о его разумности ответить нельзя.

Date: 2012-08-20 08:42 am (UTC)
From: [identity profile] Константин Лихоманов (from livejournal.com)
Правильно ли я понимаю, что Ваша трактовка задачи эквивалентна следующей: заменяем фразу "X считает, что P" на "X утверждает, что существует интерпретация, для которой P верно" и далее используем классическую логику?

Date: 2012-08-20 08:53 am (UTC)
From: [identity profile] thedeemon.livejournal.com
Да. Выражение Р, содержащее свободные переменные, разумно, если существует набор значений свободных переменных (интерпретация), обращающее Р в истину. При этом если некто Х сделал разумное утверждение, то во всех выражениях, упоминающих Х, предикат Разумен(Х) истинен, и это уже от свободных переменных не зависит.

Date: 2012-08-20 09:10 am (UTC)
From: [identity profile] Константин Лихоманов (from livejournal.com)
То есть мы получаем, что в Вашей трактовке сами персонажи оперируют логикой предикатов. В смаллиановской же они ограничиваются логикой высказываний. Я бы всё-таки сказал, что такой подход естественнее.

Date: 2012-08-20 09:28 am (UTC)
From: [identity profile] thedeemon.livejournal.com
Что же в нем естественного? Получается, персонажи оперируют одними правилами и определениями, а отвечающий про них человек - другими (ведь он уже для ответа применяет forall).

Date: 2012-08-20 09:37 am (UTC)
From: [identity profile] Константин Лихоманов (from livejournal.com)
Именно так. Стандартная схема для логических задач. Что-то вроде "есть замкнутый самодостаточный мир и есть решатель, который располагает некой частичной информацией об это мире".

Date: 2012-08-20 10:11 am (UTC)
From: [identity profile] lomeo.livejournal.com
Вот только на приведенном выше примере такой подход дает парадоксальный набор ответов: Двойка в своем уме, Тройка в своем уме, а Валет, утверждающий именно это, вдруг оказывается не в своем уме.

Покажи как это, я вижу, что такой подход даёт два ответа - либо 2 в своём уме, а 3 нет, либо наоборот. Я интерпретирую "Валет считает, что Двойка и Тройка в своем уме" как

j == (c2 && c3)

Date: 2012-08-20 10:21 am (UTC)
From: [identity profile] thedeemon.livejournal.com
Я там некорректно подход проинтерпретировал - "смотреть, существует ли такой набор свободных переменных, на котором его утверждение истинно". Для Двойки и Тройки они существуют.
Ряд участников на самом деле имели в виду не exists, а forall, но по исходникам это не очевидно - многие просто выводят допустимые наборы свободных переменных, оставляя свободу интерпретации.

Date: 2012-08-20 11:10 am (UTC)
From: [identity profile] lomeo.livejournal.com
Да, понял уже, когда у darkus-а почитал. В общем, это спор о термине "разумен", в конкурсе практически все по Смаллиану его интерпретировали.

Date: 2012-08-20 11:36 am (UTC)
From: [identity profile] thedeemon.livejournal.com
С той интерпретацией тоже вопросы есть:
http://users.livejournal.com/_darkus_/668794.html?thread=15268218#t15268218

Date: 2012-08-20 12:02 pm (UTC)
From: [identity profile] nivanych.livejournal.com
Эдак скоро до нестандартных логик доберёшься, а потом и онтологий...
Edited Date: 2012-08-20 12:03 pm (UTC)

Date: 2012-08-20 04:38 pm (UTC)
From: [identity profile] thedeemon.livejournal.com
А можно пример их применения в данной задаче? Еще можно тучков и попосов пучков и топосов.

Date: 2012-08-20 06:23 pm (UTC)
From: [identity profile] nivanych.livejournal.com
В данной задаче самое сложное, это её формализация.
Касаемо онтологий, это либо очень сложная задача, либо никакая...
Куда тут пучки и топосы, я не знаю, но если подумать, "можно и за 5 дней".

Profile

thedeemon: (Default)
Dmitry Popov

December 2025

S M T W T F S
 12 3456
789101112 13
14151617181920
21222324252627
28293031   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 31st, 2026 01:53 pm
Powered by Dreamwidth Studios