Alenkakiss
|
||||||
1 | ||||||
Поиск в ширину (миссионеры и людоеды) на SWI-Prolog27.12.2009, 13:46. Показов 10782. Ответов 7
Метки нет (Все метки)
Помогите новичку разобраться в логической задаче.
Условие Миссионеры и людоеды (поиск в ширину). Три миссионера и три людоеда находятся по одну сторону реки, через которую они хотят переправиться. В их распоряжении имеется лодка, которая может выдержать вес только двух человек. Кроме того, если в какой-то мо-мент число людоедов станет больше числа миссионеров, миссионеры будут съедены независимо от того, на каком берегу реки это случится. Указания к решению. Различные состояния этой задачи однозначно задаются информацией, на каком берегу находятся лодка и сколько миссионеров и лю-доедов на этом же берегу. Поэтому структура state(ЛокализацияЛодки, ЧислоМиссионеровНаТомБерегуГдеЛодка, ЧислоЛюдоедовНаТомБерегуГдеЛодка) полностью описывает состояние. Допустимые состояния для решения задачи - это те, когда людоеды не могут съесть миссионеров ни на том берегу, где лодка, ни на противоположном, Возможные значение первого аргумента: атомы west (западный берег) и east (восточный берег). Возможные значения остальных аргументов: 0, 1, 2 или 3. Начальное состояние: state(east,3, 3). Конечное состояние: state(west,3,3). 2 людоеда или 1 людоед и 1 миссионер переправляются. 2. миссионер возвращается назад, если посылали 2 людоедов, то возвращается один из людоедов. Итак: на 1-ом берегу 2Л и 3М, на втором 1Л. 3. Посылаем на тот берег 2Л. 4. Возвращаем 1Л. Итак: на 1-ом берегу 1Л и 3М, на втором 2Л. 5. Пускаем 2М на тот берег. 6. Возвращаем 1Л и 1М. Итак: На этом берегу 2Л и 2М, на втором 1Л и 1М 7. Посылаем на тот берег 2М. 8. Возвращаем на 1-ый берег 1Л. Итак: на 1-ом берегу 3Л, на втором 3М. 9. Посылаем на тот берег 2Л. 10. Возвращаем назад 1Л. 11. Переправляем последних голодных и уставших 2Л. Нашла решение этой задачи на VIP7 с помощью поиска в ширину. Оно содержит 11 переправ.
|
27.12.2009, 13:46 | |
Ответы с готовыми решениями:
7
Поиск в глубину или ширину (SWI Prolog) "Миссионеры и людоеды", prolog 5.2 Миссионеры и людоеды Поиск в базе данных SWI-Prolog |
92 / 92 / 6
Регистрация: 04.05.2011
Сообщений: 171
|
||||||
31.05.2011, 18:35 | 2 | |||||
Легче написать всё заново.
2
|
2507 / 1483 / 37
Регистрация: 14.09.2009
Сообщений: 2,740
|
|
31.05.2011, 20:08 | 3 |
emppu2007,
Ведь специально тема создавалась Поиск в пространстве состояний (поиск по графам тоже сюда!). PS И зачем member определять, он же встроенный?
0
|
92 / 92 / 6
Регистрация: 04.05.2011
Сообщений: 171
|
|
31.05.2011, 21:12 | 4 |
Тогда почему эта тема на форуме валяется уже полтора года и никто её не удалил?
Мне модератор rrrFer сказал, что лучше находить всякие старые интересные темы на форуме без ответов и отвечать на них. Я и решил этим немного заняться. Извините уж, что испортил вашу вечеринку и создаю, якобы, бардак на форуме. Ага.
0
|
2507 / 1483 / 37
Регистрация: 14.09.2009
Сообщений: 2,740
|
|
31.05.2011, 21:22 | 5 |
Так ни я, ни rrrFer тогда еще и модераторами то не были. И уж тем более не было той закрепленной темы. А в старом мусоре копаться как-то у меня времени нет, создали бы такую сейчас - точно бы удалила.
0
|
0 / 0 / 0
Регистрация: 05.03.2012
Сообщений: 4
|
|
03.05.2012, 01:40 | 6 |
Кто нибудь может помочь с такой модификацией? На левом берегу реки находятся N миссионеров и N людоедов. Есть лодка, в которую можно посадить P пассажиров (P< 2N). Необходимо найти последовательность действий для перевозки всех на правый берег реки таким образом, чтобы в лодке и на любом из берегов миссионеров всегда было больше, чем людоедов. Спасибо!
0
|
2507 / 1483 / 37
Регистрация: 14.09.2009
Сообщений: 2,740
|
|
03.05.2012, 17:26 | 7 |
Наработки пожалуйста. Хотя бы самостоятельно N впихните. Т.е надо будет передавать еще один параметр, и все 3 заменить на N.
0
|
0 / 0 / 0
Регистрация: 26.11.2009
Сообщений: 9
|
|
14.12.2012, 11:19 | 8 |
"Миссионеры и людоеды". Поиск в ширину.
Три миссионера и три людоеда находятся по одну сторону реки, через которую они хотят переправиться. В их распоряжении имеется лодка, которая может выдержать вес только двух человек. Кроме того, если в какой-то момент число людоедов станет больше числа миссионеров, миссионеры будут съедены независимо от того, на каком берегу реки это случится. Указания к решению. Различные состояния этой задачи однозначно задаются информацией, на каком берегу находятся лодка и сколько миссионеров и людоедов на этом же берегу. Поэтому структура state(ЛокализацияЛодки,ЧислоМиссионеровНаТомБерегу ГдеЛодка, ЧислоЛюдоедовНаТомБерегуГдеЛодка) полностью описывает состояние. Допустимые состояния для решения задачи - это те, когда людоеды не могут съесть миссионеров ни на том берегу, где лодка, ни на противоположном, Возможные значение первого аргумента: атомы west (западный берег) и east (восточный берег). Возможные значения остальных аргументов: 0, 1, 2 или 3. Начальное состояние: state(east,3, 3). Конечное состояние: state(west,3,3). Добавлено через 35 минут как ее решить на swi prologe?
0
|
14.12.2012, 11:19 | |
14.12.2012, 11:19 | |
Помогаю со студенческими работами здесь
8
Поиск подстроки в строке на SWI-Prolog SWI-prolog. Поиск по заданому критерию swi prolog, поиск факториала, вывод результата SWI-Prolog поиск конечных звеньев ломаной Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |