Если вы переживаете из-за того, что в очередной
раз попались на кликбейт, типа "Самая сложная логическая задача", то я спешу вас обрадовать.
То, чем мы с вами сегодня будем заниматься, на самом деле имеет формальное название "Самая сложная логическая задача".
Ну, или "Самая сложная логическая головоломка Ever", то бишь вообще.
Меня зовут Артур Шарифов, и в последнее время я занят исключительно разработкой того самого образовательного портала.
Больше месяца не выходило ничего нового, и сейчас я возвращаюсь
с очередным научно-популярным видеороликом, и считайте, что этим роликом я бросаю вам вызов.
То есть вам нужно будет решить эту задачу.
Я буду давать подсказки, и в итоге мы разберемся, что к чему, и как же эта задача всё-таки решается.
Ну давайте начнем с постановки задачи.
Задача такая: у нас есть 3 бога -
Бог А, бог В и бог С
Это, наверное, странно давать такие имена детям,
но давайте спишем это на то, что у них есть 
свой собственный язык.
Наверное, для них там это нормально.
Причём один из богов - это бог правды.
Он всегда говорит правду и никогда не врёт.
Второй бог - это бог лжи, то бишь он всегда врёт.
И нет, это не отсылка к Афоне.
И третий бог - это бог рандома, ну или бог случая.
Он всегда выдаёт совершенно случайные ответы, которые ничем не связаны, и в них
нет никакого смысла.
А это уже серьёзная отсылка к Дмитрию Ларину.
Проблема в том, что мы не знаем, кто есть кто.
И всё, что у нас есть - это три вопроса.
Ровно три вопроса, на которые можно 
ответить только ДА или НЕТ.
Причём мы не знаем их язык. И они
наш язык только понимают.
Отвечать они могут на своём языке.
Есть слово X и слово Y.
Что-то из этого означает ДА, а что-то НЕТ
Ну вот, в общем-то, и вся постановка задачи.
Нам необходимо за три вопроса выяснить, кто является богом правды, кто является богом лжи,
а кто является богом рандома.
1.ПРОЛОГ
В общем-то первое, что я могу вам предложить - это
взять в руку бумагу, ручку и набросать 
первые мысли на этот счёт.
Первые мысли, которые возникли лично у меня - это мысли о рандоме, ведь вопрос должен быть
адресован кому-то из богов.
Мы выбираем бога случайно, и, вполне возможно, это окажется бог рандома.
Тогда его ответ будет неосмысленным и 
ничего нам не даст.
Это означает, что наш первый вопрос должен быть построен таким образом, чтобы обойти этот рандом.
И тут я решил, что есть смысл начать гуглить.
И я нагуглил более простую задачку, которая и натолкнула меня на мысль о том, как же
можно подойти к решению этой.
Это классическая задача из серии
о рыцарях и лжецах.
Она была обыграна в фильме "Лабиринт" 86-го года.
Если вы его смотрели, то вам
будет, конечно же, проще.
Задача такая: у нас есть две двери.
За одной из них находится замок, и у нас
есть ключ от этого замка.
Если мы попадём в эту дверь, то
мы выберемся на волю.
За второй дверью находится животное, которое
нас сожрёт.
Наша задача, разумеется, заключается в том, чтобы понять, в какую дверь нам нужно идти.
При этом у нас есть два стражника.
Один из этих стражников - рыцарь, который всегда говорит правду, а второй - лжец, который
всегда врёт.
У нас есть ровно один вопрос, на который можно ответить ДА или НЕТ.
Ну и как всегда в таких задачах нам нельзя задавать вопросы, которые являются
логическими парадоксами.
Я думаю, вы понимаете, о чём я.
Эта задача выглядит попроще и решается в 1 шаг
Так что сейчас я советую вам
поставить это видео на паузу,
постараться решить, а затем возвращаться сюда.
2.ФЛЕШБЭК
Итак, у нас есть две двери,
за одной из которых находится замок, от которого у нас есть ключ, и там мы выберемся на волю,
а за второй дверью нас съедят.
И у нас есть два стражника, один из которых всегда говорит правду, а другой всегда врёт.
Мы не знаем, кто из них есть кто.
Ну и, разумеется, с тем стражником, что
говорит правду, всё просто.
А вот с тем, кто врёт, придётся немного похимичить.
Возьмём и попробуем повернуть его
ложь против него самого.
Ну и напомню, что у нас есть ровно один
вопрос к одному из стражников.
Таким образом, мы выбираем одного из стражников, которому будем задавать вопрос.
Выбрали, к примеру, вот этого. [Тот, что слева]
И выбираем дверь, на тему которой будем спрашивать, например, вот эта дверь.
[Та, что справа]
Вопрос будет таким:
Если я спрошу у второго стражника, ведёт ли эта дверь на волю, то скажет ли он мне "Да"?
Теперь давайте разбираться.
Если я обращаюсь к охраннику, который
говорит мне правду, и
дверь, на которую я указываю, действительно ведёт на волю, тогда он подумает:
"Окей, я всегда говорю правду, а второй
стражник тогда всегда врёт.
Это означает, что он не скажет мне, что эта дверь ведёт на волю, то есть он скажет мне "Нет" ".
Тогда этот стражник честно мне заявляет: "НЕТ".
Второй стражник [Лжец] не скажет тебе, что
эта дверь ведёт на волю.
Его ответ будет "НЕТ".
Теперь ситуация такая:
Мы всё-таки попали на охранника, который говорит правду, но при этом дверь, которую мы выбрали,
ведёт нас к смерти, а не на волю.
Тогда этот стражник рассуждает: "Второй стражник всегда будет врать. Это означает, что от той двери,
которая ведёт нас к смерти, он скажет, что
она ведёт на волю".
То есть стражник, который врёт, скажет, что дверь, которая ведёт нас к смерти, ведёт нас на волю.
Значит ответ будет "ДА".
Если мы напоролись на стражника, который всегда врёт, а за дверью, на которую мы указали, путь на
волю, тогда он будет рассуждать так: "Окей, я знаю, что второй стражник скажет правду, то есть второй
стражник скажет ему, что дверь действительно ведёт на волю, но я всегда вру, значит сейчас я
должен соврать, т.е. сказать: "Нет, он не 
скажет, что там воля".
И ответ будет "НЕТ".
Ну и получается, что если мы напоролись на охранника, который
всегда лжёт, и показали на дверь, которая 
ведёт нас к смерти,
Тогда он будет рассуждать так: "Второй стражник всегда говорит правду, он скажет ему, что
дверь не ведёт на волю. То есть он скажет "Нет".
Но я должен врать, значит я совру,
я скажу "Да", ведь я должен соврать.
Ответ будет "ДА".
И по этой табличке видно, что неважно,
у какого охранника
мы это спросим (у правдолюба или лжеца).
Если ответ будет "НЕТ", значит дверь, на которую
мы указали, ведёт на волю.
Если ответ "ДА", то указанная нами дверь ведёт к смерти, и идти нужно во вторую дверь.
3.ВОЗВРАЩЕНИЕ
В этой задаче мы пользуемся
тем же самым принципом:
Боги знают всё друг о друге - они
знают, кто кем является.
Усложняет задачу тот факт, что у нас есть бог рандома, который неизвестно что нам ответит
и испортит любой вопрос.
Это означает, что конструкция должна не только обходить возможную ложь, но и
обходить возможный рандом.
Но конструкция строится похожим образом
Ещё сильней усложняет задачу тот факт, что
у нас есть два алфавита:
У нас есть алфавит, в котором Х=ДА, Y=НЕТ
И есть другой алфавит, где Y=ДА, Х=НЕТ
Мы не знаем, каким алфавитом они пользуются, поэтому в этот раз табличек будет чуть побольше, но
принцип будет тот же самый.
Ну вот мы и вернулись к той задаче, которая 
стояла у нас изначально.
У нас есть три бога: бог А, бог В и бог С.
Какой-то из них всегда говорит правду, какой-то - всегда врёт, а третий отвечает на рандоме, и в этом
самая основная проблема этой задачи.
Ведь что бы мы у него не спросили, всегда есть шанс, что он является богом рандома, и что
его ответ будет бессмысленным.
И я напомню, что задачу очень сильно 
усложняет тот факт, что
они не умеют говорить на нашем языке.
У них есть свой язык, где есть слово X и слово Y.
Ну ещё другие слова, возможно.
Какой-то из этих слов обозначает ДА, а 
какой-то НЕТ, то есть мы как бы
работаем в двух разных алфавитах.
В алфавите, где X=ДА, а Y=НЕТ; либо в алфавите, где Y=ДА, а X, в свою очередь, получается НЕТ.
Значит вопрос должен быть универсальным 
для любого из этих алфавитов.
Будем пользоваться вопросом похожим на тот, что мы задавали в задаче про двери, но
немного его модернизируем.
По умолчанию первый вопрос всегда 
будем адресовать богу B.
Он находится посерединке, и для 
наглядности это будет удобно.
И будем отталкиваться от того, что он нам ответит.
Наша задача на первом шаге - выяснить, кто из этих двух А и С не является богом рандома.
Я напомню, что бог рандома только один, то есть как минимум один из них (либо A, либо C)
богом рандома не является.
И нам нужно будет отталкиваться от ответа, который мы получим.
Если же бог B - бог рандома, то нам 
не важно, какой ответ мы получим.
Для того чтобы продолжать решение этой задачи, я для начала построю себе
несколько вспомогательных таблиц.
Я напомню, что мы отдельно работаем в этом алфавите и отдельно в этом алфавите, но
оба из них мы должны просматривать.
Пусть у нас есть некий вопрос Q.
Это может быть любой вопрос, и ответ 
на него может быть
как положительным, так и отрицательным.
И моя конструкция звучит так: я спрашиваю 
у кого-то из богов:
"Если я задам тебе вопрос Q, то 
ответишь ли ты мне X?"
И давайте же попробуем разобраться, что это значит для них для начала вот в первом алфавите.
Итак, у нас есть несколько  раскладов.
Расклад первый, при котором выражение Q является истинным (True),
и тот расклад, при котором Q ложно - это False.
Ну и далее какие расклады еще бывают?
Мы либо обращаемся к богу 
правды, либо к богу лжи.
Итак, мы задаем вопрос богу правды, и 
касается он вопроса Q:
"Если я задам тебе вопрос Q, то ответишь 
ли ты мне на него X?"
При том что ответ на вопрос Q положительный, то есть ДА.
Ну к примеру: "Если я спрошу тебя, является ли Москва столицей России, ответишь ли ты мне X?"
И он начинает рассуждать: "Я всегда говорю правду. На моем языке X=ДА. Отвечу ли я ДА
на вопрос, является ли Москва столицей России, если я бог правды? Конечно же, я отвечу ДА."
Только он отвечает нам не ДА, а X, поскольку он может отвечать только на своем языке.
Он дает нам ответ X.
Далее, если то, о чем мы его спрашиваем ложно, а он является богом правды.
Например, является ли Кострома столицей России.
И он думает: "Ну как бы нет, не является, т.е. я не могу ответить ему X, не могу ответить ему ДА.
Значит я отвечу ему НЕТ."
И он говорит: "Нет, Кострома не 
является столицей России."
Но отвечает это на своем языке.
Мы этого не понимаем, мы получаем на 
выходе только X, либо Y.
Далее, если он является богом лжи, то он 
получает от нас вопрос:
"Ответишь ли ты мне на вопрос, является ли Москва столицей России (то бишь на правдивый вопрос).
Ответишь ли ты мне X, ответишь ли ты мне ДА?"
И он думает: "Окей, ну действительно, Москва является столицей России, но на этот вопрос
я должен ответить ему НЕТ, поскольку 
я же бог лжи всё-таки".
Но он не может дать нам ответ НЕТ, поскольку 
он является богом лжи.
Он должен ещё раз нам солгать.
Он врёт и говорит ДА, т.е. отвечает X.
Мы как бы этим вопросом оборачиваем 
его же ложь против него самого.
Давайте ещё раз пройдёмся.
На вопрос, является ли Москва 
столицей России, ответишь ли ты мне X?
И он такой думает: "Москва - столица России.
Я, конечно же, совру ему, т.е. я отвечу ему НЕТ".
Но затем, отвечая на глобальный вопрос, 
он должен снова нам солгать.
Значит он говорит ДА, что на его языке означает X.
Ну и разумеется, в случае, если мы спрашиваем его про Кострому, то бишь даём ему заранее ложное
утверждение в качестве посылки, 
он ответит нам нет.
И здесь уже прослеживается закономерность: если посылка Q является верной, то
неважно, скажет ли он нам правду или соврёт. 
В ответ мы получим как бы X.
Что же будет в случае, если алфавит у нас другой? То есть что же будет, если Y=ДА, а X=НЕТ.
Если Q - это верное утверждение, 
если Q - это ложное утверждение,
ну и если он говорит правду, или если он лжёт.
Итак, если мы в качестве посылки 
задаём ему верное утверждение.
Спрашиваем: "Ответишь ли ты мне на вопрос, является ли Москва столицей России, X?"
И он думает: "Я же бог правды - значит я должен говорить всегда только лишь правду, а
я не могу сказать, что Москва не является столицей России, т.е. нет, я не скажу ему это".
А нет на его языке означает X. Ну и так далее.
Понятное дело, если он будет богом лжи, то 
ложь будет следующей:
на вопрос, является ли Москва столицей России, ответишь ли ты мне X, он думает:
"Я вру, т.е. я, конечно же, совру ему, что Москва не является столицей России, т.е. я скажу нет
(что на его языке означает X)".
То есть ответ должен быть Y, но он ведь бог лжи, он нам соврёт, он не скажет нам честно о том, что
он в том случае соврёт. Он ещё раз соврёт, и его ответом будет НЕТ, т.е. его ответ будет X.
Ну и понятное дело, что если посылка изначально будет ложной, то мы от одного
и от второго получим ответ Y.
Теперь давайте рассуждать на тему посылки: у нас есть бог B, к которому мы, собственно, обращаемся,
и он может оказаться богом рандома.
Посылка будет такой: является ли бог А богом рандома, то бишь глобальный вопрос будет таким:
На вопрос "Является ли бог А богом рандома?" ответишь ли ты мне X?
Ну и теперь, если мы получаем от него ответ X - это означает, что наша посылка была изначально
правдивой, и неважно, в каком алфавите он
в этот момент работает.
То есть если мы получим ответ X, это будет означать "Да, бог А - это действительно бог рандома",
и неважно, говорит он нам правду или врёт.
Ну или он говорит X, потому что он сам 
является богом рандома.
Но если он сам является богом рандома, то бог C и в помине богом рандома не является, т.е. если мы
получаем ответ X, это гарантирует нам, что бог C не является богом рандома.
Если вам было не понятно, можете перемотать и пересмотреть этот момент сначала.
Далее, снова повторю вопрос:
"Если я спрошу у тебя, является ли бог А богом рандома, ответишь ли ты мне X?"
Если мы получим ответ Y, это будет означать, что посылка является неверной, т.е. что бог А
богом рандома не является, а это ведь и есть то, что нам нужно.
Ну либо ответ Y может нам поступить в связи с тем, что бог B является богом рандома.
Но это и означает, что бог А тогда 
богом рандома не является.
Если мы получили ответ Y, то бог А 
богом рандома не является.
Получается, что мы сделали самое сложное.
Теперь мы можем спокойно задавать вопрос какому-то богу и знать, что
это не бог рандома, и его ответ
будет осмысленным.
Ну давайте ещё раз разберёмся.
Если бог B не является богом рандома, то наш алгоритм гарантирует, что он укажет нам
на того бога, который богом рандома тоже не является.
Если он отвечает X - это значит, что бог C не является богом рандома, и
следующий вопрос мы задаём богу C.
Если он отвечает Y, значит бог А не является богом рандома, и следующий вопрос мы задаём богу А.
Ну а если же вышло так, что бог B является богом рандома, то он рандомно выдаст нам ответ.
Но ведь его ответ будет либо X, либо Y.
Значит, он направит нас либо к богу А, либо к богу C.
Но бог А и бог C не являются богом рандома, т.к. мы предположили, что бог B - есть бог рандома.
Это означает, что он в любом случае направит нас к тому богу, который богом рандома не является.
Следующий вопрос будет осмысленным, как и ответ на него.
И теперь мы можем спокойно переходить ко второму шагу.
Давайте предположим, что на первом шаге мы получили от B ответ X, т.е. мы убедились в том, что
бог C богом рандома не является, а значит следующий наш вопрос направлен к C.
Как вы думаете, (сейчас, я думаю, стоит задуматься) какой вопрос можно задать богу C?
Не знаю как вы, а я предлагаю задать ему тот же самый вопрос, ведь тот вопрос неизменно
ведёт нас к тому, кто богом рандома не является.
То есть мы точно знаем, что бог C не является богом рандома, а далее, задав этот же вопрос, он нас
снова направит к тому, кто богом рандома
тоже не является.
Следовательно, тот, к кому нас не направили, является богом рандома.
Итак, мы задаём C тот же самый вопрос,
к примеру, насчёт А:
"Если я спрошу у тебя, является ли бог А богом рандома, то ответишь ли ты мне X?"
Ну и понятное дело, что если мы получаем в ответ всё-таки X - это означает, что
Да, А является богом рандома, и
тогда мы запоминаем.
Окей, если мы получили ответ X, то
А - это бог рандома.
Если мы получили ответ Y, то тогда это означает, что А не является богом рандома, но
на первом шаге мы уже выяснили, что C тоже
не является богом рандома.
Тогда богом рандома является бог B.
Итак, давайте теперь для наглядности предположим, что мы снова получили ответ X.
Ну, в общем-то, вот и всё.
Ситуация, кажется, проще некуда.
Мы получили два указания на двух разных богов.
При этом мы точно знаем, что ни один из этих богов не является богом рандома.
Следовательно, богом рандома является
третий и первый ответ ДА.
Ситуация теперь такая.
Есть два бога: один всегда говорит правду,
другой всегда врёт.
И есть как бы две двери: та дверь, в которой мы угадываем, кто врёт, а кто говорит правду, и вторая,
где нас съедят - это тот случай, когда 
мы не угадываем их.
Ситуация точно такая же, и вопрос будет построен по тому же самому принципу.
Теперь у нас остались только бог B и бог C.
Кто-то из них является богом правды, а кто-то является богом лжи.
Вопрос адресуем кому угодно (это не столь важно).
По сути мы получаем ту же самую ситуацию, что была у нас с двумя дверями, только теперь
у нас есть факт, неоспоримый факт, от которого
мы можем отталкиваться:
А - бог рандома.
Вопрос будет построен следующим образом.
Если я спрошу у тебя, является ли А богом рандома, то дашь ли ты мне ответ X?
И тут у нас просто колоссальное преимущество, ведь мы точно знаем, что посылка верна, то бишь
что А является богом рандома.
И тут у нас обычная табличка 2x2 получается.
(Пусть мы обращаемся к богу B, да?)
Он либо у нас является богом лжи, либо
является богом правды.
Ну и по столбцам будем расписывать алфавит,
в котором мы работаем.
Либо мы работаем в алфавите, в котором X=ДА, либо мы работаем в алфавите, где Y=ДА.
Итак, если бог B является богом правды, то он думает:
"Окей, А - это бог рандома, отвечу ли я ему ДА на вопрос, является ли А богом рандома?
Конечно, я отвечу ему ДА, я же не стану
ему лгать, я же бог правды".
Ну и если на его языке X=НЕТ, то он думает:
"Скажу ли я ему, что А богом рандома не является, если это факт? Нет, я ему это не скажу".
Но на его языке НЕТ=X, и, опять же, он говорит X.
Ну и бог лжи, естественно, будет выдавать нам совершенно противоположные ответы на такой
вопрос, и, таким образом, мы выясним, что если мы обращаемся к богу B и получаем от него ответ X,
это означает, что он бог правды.
Если мы задаём ему вопрос, а он отвечает нам Y - значит, он бог лжи, и тогда бог C - это бог правды.
Задачка однозначно точно решена!
Это мои методы, некоторые из которых я кое-где подглядел, к примеру, в фильме "Лабиринт".
Там вопрос был построен именно так, как в задачке с дверями, которые решал я.
Если у вас есть свои варианты решения этой задачи, то я приглашаю вас в свою группу ВКонтакте или
ко мне на страничку ВКонтакте,
там открыты комментарии.
Пожалуйста, пишите, показывайте свои решения.
Мы с удовольствием их посмотрим, и если кто-то сможет придумать другое решение,
кардинально другое решение, которое 
также является правильным, то
я обязательно приглашу этого 
человека к себе на стрим.
Ну, в общем-то, вот и всё.
Если вам понравилось это видео, то обязательно отметьте это, поставьте большой палец вверх, и
если вы еще не подписаны на
мой канал и не видели
другие видеоролики, то пройдитесь
по каналу, посмотрите.
Возможно, найдёте для себя
много чего интересного.
Кстати говоря, это видео мы записывали
в парке Сокольники.
Ну и ради эксперимента мы решили сделать
об этом пост в Инстаграмме и ВКонтакте.
Приехало несколько ребят, которые сначала с нами пофоткались, потом помогли нам со съёмками, и,
в общем, эксперимент удался, все были довольны,
и мы хотим продолжать эту тему.
Так что я оставляю ссылочки на свой Инстаграмм
и на свою страничку ВКонтакте.
Можете подписаться, если вам в принципе интересно, как у нас проходят съёмки, как проходит
подготовка к созданию моего 
образовательного портала.
Можете зайти туда, и вся информация будет там.
