Верификация решения математической логической задачи

Aug 17 2020

Вопрос в следующем:

Детектив опросил четырех свидетелей преступления. На основании того, как прошли эти допросы, детектив пришел к следующему выводу:

  1. Если дворецкий говорит правду, значит, повар тоже.
  2. Повар и садовник не могут одновременно говорить правду.
  3. Садовник и разнорабочий не лгут.
  4. Если мастер говорит правду, значит, повар лжет.

Вопрос в том, может ли детектив выяснить, лжет ли каждый из лиц или нет? Объясните причину.


Ответ:

Мы здесь только смотрим, правдив ли кто-то или нет. Итак, мы можем просто взять переменную, которая используется either True or Falseв любом из возможных случаев, и вернуться оттуда обратно. cookявляется одной из таких переменных [True означает, что конкретный человек говорит правду, а False означает прямо противоположное].

Если мы считаем, cookчто это правда, handymanдолжно быть ложь (утверждение № 4). Согласно утверждению № 3, gardenerи handymanоба не могут быть Ложью одновременно, поскольку мы уже знаем, handymanчто Ложь (то есть ложь), gardenerдолжна быть Истиной.

Если gardenerTrue, согласно утверждению № 2, cookдолжно быть False. Это противоречит нашему первому предположению, что cookэто правда, т.е. Что оставляет нас cookЛожь.

Мы не можем прямо сказать, что cookэто Ложь, и дело раскрыто. Это потому, что если cookFalse, то handymanTrue. Но этот оператор №3 разветвляет на два разных пути.

gardenerи handymanоба не являются ложными, что означает, что либо одно из них истинно, либо оба. Так как handymanэто правда, давайте сначала рассмотрим gardenerложь. Теперь мы снова находимся в той же ситуации, когда любой из них ложен или оба. Если cookTrue, мы будем противоречить нашему первоначальному предположению, поэтому cookне может быть True. Что оставляет нас cookложными. Это дает нам первый набор логически правильных предположений. Давайте это запишем.

cook = False
handyman = True
gardener = False
butler = False

Теперь мы будем считать, gardenerчто это правда. Если gardenerTrue, cookдолжно быть False. Итак, теперь у нас есть еще один набор решений

cook = False
handyman = True
gardener = True
butler = False

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


Метод слишком утомительный? Есть ли другой способ добиться того же? Все самоучка, поэтому использование разных терминов мне сейчас чуждо, если кто-нибудь сможет указать мне правильное направление, я буду благодарен.

Ответы

4 WilliamElliot Aug 17 2020 at 11:20

Помещение.
b означает c
not-c или not-g
g или h
h подразумевает not-c

Предположим, что not-g. Таким образом,
h; not-c: not-b.

Assune g. Таким образом,
not-c: not-b.

Заключение.
Врут повар и дворецкий.
Либо повар, либо разнорабочий говорят правду.
Невозможно определить, лгут ли они.

2 PatrickStevens Aug 17 2020 at 15:56

Чтобы получить тот же ответ другим способом:

Если вы просто начинаете сверху и двигаетесь вперед, Butler-true подразумевает Cook-true (на 1) подразумевает Gardener-false (на 2) подразумевает Handyman-true (на 3) подразумевает Cook-false (на 4), противоречие. Значит, дворецкий лжет; более того, противоречие возникло исключительно из-за импликации («Кук-правда») Батлера-правда, так что повар действительно тоже лжет.

Тогда условия 1, 2 и 4 становятся пустыми, и условие 3 остается единственным ограничением.

StinkingBishop Aug 17 2020 at 18:03

Вопрос в том, может ли детектив выяснить, лжет ли каждый из этих людей? Объясните причину

Если единственный вопрос, на который вы должны здесь ответить, - это приведенный выше, тогда, в зависимости от того, какой будет ответ (истинный или ложный), вы должны будете записать другое доказательство.

  • Если ответ - « верно : детектив может решить, кто лжет», то вам необходимо доказать, что условия проблемы предполагают одно конкретное решение. (Это в основном то, что вы делали в своем вопросе.)

  • Однако, если ответ будет « ложным : детектив не может решить, кто лжет», то все, что вам нужно будет записать, - это как минимум два разных списка лжи , которые соответствуют условиям задачи.

Поскольку ответ здесь ложный , все, что вам нужно будет записать в качестве доказательства, будет:

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

Конечно, очень поучительно и полезно записать, как вы пришли к этим трем возможностям. Однако пропуск этой части не делает ваше доказательство менее достоверным (хотя, возможно, и делает его намного уродливее!). Кроме того, в зависимости от того, является ли это задачей конкурса (или экзамена), такое решение может не быть принято в качестве полного решения, так как «рассуждения» в нем не будут полностью объяснены. Хотя математически это был бы правильный ответ.