Дано:
Двойка считает, что Туз в своем уме.
Тройка считает, что Туз не в своем уме.
Валет считает, что Двойка и Тройка в своем уме.
Вопросы:
В своем ли уме Двойка? В своем ли уме Тройка? В своем ли уме Валет?
В прошедшие выходные
_darkus_ предложил общественности похожую задачку. Многие участники предложили очевидное решение: считать утверждения персонажей логическими высказываниями, и для определения разумности Валета смотреть, существует ли такой набор свободных переменных, на котором его утверждение истинно. Вот только на приведенном выше примере такой подход дает парадоксальный набор ответов: Двойка в своем уме, Тройка в своем уме, а Валет, утверждающий именно это, вдруг оказывается не в своем уме.
Это что же, если один мой собеседник считает, что гит лучше меркуриала, а другой - что меркуриал лучше гита, то мне не стоит их обоих считать разумными, иначе я сам окажусь безумен?
На мой взгляд, ключ тут в том, чтобы различать утверждения "Х прав" и "Х в своем уме". Если кто-то в одном высказывании выдает явное противоречие (например, говорит, что Туз в своем уме и что Туз не в своем уме), то он не в своем уме. Если же его утверждение в каких-то случаях может быть правдой, то он разумен. Два персонажа при этом могут быть одновременно в своем уме, при этом делая прямо противоположные заявления. Они не могут быть одновременно правы, но вполне могут быть одновременно разумны. При таком подходе Валет в моем примере в своем уме. Причем реализация этого подхода в программе не требует даже никакого перебора по всем возможным значениям свободных переменных, все решается в один проход.
Upd. Некоторые решавшие задачку в духе исходной книжки Смаллиана, используя чисто булеву логику, считают разумными лишь тех, кто говорит тавтологии, т.е. чьи высказывания истинны при любом наборе свободных переменных. Я же считаю разумными всех, кто не говорит чепухи, т.е. всегда противоречивых утверждений. Если некоторое утверждение истинно при одном наборе значений свободных переменных и ложно при другом, я считаю утверждающего разумным, они же считают, что о его разумности ответить нельзя.
Двойка считает, что Туз в своем уме.
Тройка считает, что Туз не в своем уме.
Валет считает, что Двойка и Тройка в своем уме.
Вопросы:
В своем ли уме Двойка? В своем ли уме Тройка? В своем ли уме Валет?
В прошедшие выходные
Это что же, если один мой собеседник считает, что гит лучше меркуриала, а другой - что меркуриал лучше гита, то мне не стоит их обоих считать разумными, иначе я сам окажусь безумен?
На мой взгляд, ключ тут в том, чтобы различать утверждения "Х прав" и "Х в своем уме". Если кто-то в одном высказывании выдает явное противоречие (например, говорит, что Туз в своем уме и что Туз не в своем уме), то он не в своем уме. Если же его утверждение в каких-то случаях может быть правдой, то он разумен. Два персонажа при этом могут быть одновременно в своем уме, при этом делая прямо противоположные заявления. Они не могут быть одновременно правы, но вполне могут быть одновременно разумны. При таком подходе Валет в моем примере в своем уме. Причем реализация этого подхода в программе не требует даже никакого перебора по всем возможным значениям свободных переменных, все решается в один проход.
Upd. Некоторые решавшие задачку в духе исходной книжки Смаллиана, используя чисто булеву логику, считают разумными лишь тех, кто говорит тавтологии, т.е. чьи высказывания истинны при любом наборе свободных переменных. Я же считаю разумными всех, кто не говорит чепухи, т.е. всегда противоречивых утверждений. Если некоторое утверждение истинно при одном наборе значений свободных переменных и ложно при другом, я считаю утверждающего разумным, они же считают, что о его разумности ответить нельзя.
no subject
Date: 2012-08-20 08:42 am (UTC)no subject
Date: 2012-08-20 08:53 am (UTC)no subject
Date: 2012-08-20 09:10 am (UTC)no subject
Date: 2012-08-20 09:28 am (UTC)no subject
Date: 2012-08-20 09:37 am (UTC)no subject
Date: 2012-08-20 10:11 am (UTC)Покажи как это, я вижу, что такой подход даёт два ответа - либо 2 в своём уме, а 3 нет, либо наоборот. Я интерпретирую "Валет считает, что Двойка и Тройка в своем уме" как
j == (c2 && c3)
no subject
Date: 2012-08-20 10:21 am (UTC)Ряд участников на самом деле имели в виду не exists, а forall, но по исходникам это не очевидно - многие просто выводят допустимые наборы свободных переменных, оставляя свободу интерпретации.
no subject
Date: 2012-08-20 11:10 am (UTC)no subject
Date: 2012-08-20 11:36 am (UTC)http://users.livejournal.com/_darkus_/668794.html?thread=15268218#t15268218
no subject
Date: 2012-08-20 12:02 pm (UTC)no subject
Date: 2012-08-20 04:38 pm (UTC)тучков и попосовпучков и топосов.no subject
Date: 2012-08-20 06:23 pm (UTC)Касаемо онтологий, это либо очень сложная задача, либо никакая...
Куда тут пучки и топосы, я не знаю, но если подумать, "можно и за 5 дней".