ДзенРу Школа з Другої Логіки практична магія Рішення_задачі_Ейнштейна

  • Від: Олександр Бережний
  • Date: Wed, 24 Oct 2001 16:23:03 +0400 (MSD)
Завдання Ейнштейна: правильне проведення кордонів.

(Цей текст ілюструє проведення кордонів на прикладі завдання Ейнштейна про п'ятьох мешканців. Слово "правильно" тут - "то як я розумію".)

У п'яти будинках мешкають п'ять мешканців. Усі мають різну національність, курять різні цигарки, п'ють різні напої, тримають різних тварин.

Додатково відомо, що:

1) Англієць живе в червоному будинку, 2) Швед тримає собаку, 3) Датчанин п'є чай, 4) Зелений будинок стоїть ліворуч від білого, 5) Житель зеленого будинку п'є каву, 6) Людина, яка палить PallMall, тримає птицю, 7) Житель середнього будинку п'є молоко, 8) Житель з жовтого будинку палить Dunhill, 9) Норвежець живе в першому будинку, 10) Курець Marlboro живе біля того, хто тримає кішку, 11) Людина, яка містить коня, живе біля того, хто курить Dunhill, 12) Курець Winfield п'є пиво, 13) Норвежець живе біля блакитного будинку, 14) Німець курить Rothmans, 15) Курець Marlboro живе по сусідству з людиною, яка п'є воду.

Потрібно визначити, хто тримає вдома рибу.

Для початку наведу своє перше рішення, а потім поясню, чим воно, на мій погляд, погано, незважаючи на правильну відповідь.

Спочатку визначимо, в якому порядку стоять будинки: 9,13 => 2-й будинок блакитний, (*) 5,7 => середній будинок не зелений,

Разом: 2-й будинок блакитний, 4-й будинок зелений, 5-й білий. 1 => 3-й будинок червоний. Отже, 1-й будинок жовтий.

Тепер малюватимемо таблицю. У таблиці 5 стовпців: для п'яти параметрів (національність, колір+номер, сигарети, напій, тварина) Дуже зручно використовуватидля цієї мети електронні таблиці (типу Excel - привіт, Гліб! ;-b)

Переглядаючи умови, додаватимемо нові рядки в таблицю. Наприклад: "1) Англієць живе в червоному домі" Додаємо рядок, і у відповідні графи пишемо "Англієць" і "Червоний(N3)"

"2) Швед тримає собаку" Додаємо рядок, пишемо "Швед", ​​"Собака", "Не червоний (N3)"

У перший рядок пишемо - "Не собака"

І так далі. Перед тим як почати обробляти новий пункт, потрібно вичавити всі наявні. (щоразу будувати "транзитивне замикання" таблиці). Коментарі типу "поруч із кішкою" можна писати в додатковий стовпець, а можна - у відповідну графу: в даному випадку "тварина".

Якщо один рядок логічно випливає з іншого (є підмножиною), то його можна прибрати. Якщо дві графи (крім додаткових) у різних рядках збігаються, рядки можна об'єднати. Будуть моменти, коли шляхом виключення можна заповнити графу. Таким чином, число рядків зменшуватиметься, поки не стане рівним 5.

Вийде, що рибу тримає німець, який живе в зеленому будинку, курить Rothmans і п'є каву.

Отримавши відповідь, я був задоволений, і тепер мені соромно. Рішення вийшло кострубатим, неоднорідним (спочатку визначати порядок, потім малювати таблицю) і надто конкретним: за інших даних вирішувати доведеться по-іншому.

Головне питання: ну, добре, я здогадався впорядкувати кольори. А чому не національності? Чи не тварин? Просто пощастило: вдало спрацював стереотип.

Отже, хоч і отримано відповідь, але завдання як клас не вирішено. Причиною тому – неправильно проведені кордони. Інакше - алгоритм рішення був би відразу очевидний, його б не доводилося витягуватиінтуїцією.

Неправильність полягає в наступному посиланні: "Потрібно розподілити п'ять параметрів за п'ятьма позиціями."

Насправді параметрів 6. Шостий параметр - номер. Саме це в даному випадку і є межі - правильно визначити розподілені аргументи.

Тепер зрозуміло, як ПОТРІБНО вирішувати завдання: стовпців буде 6, а порядок рішення - той самий.