传教士过河问题是一个耳熟能详的问题,也是很多智力游戏中经常出的题目,但是,我从来都没有学到一个解决这类问题的通解。在《人工智能》课程中学到了,当时觉得这个题目很有意思,作为大四的学生,本来已经对上课没有什么兴趣了。不过,恰巧,我去上的那几节课中有这个问题。但是,老师的课件上好像有些问题,我课下想了想,觉得自己的想法应该没有问题,作为复习,就正好拿来演习一下喽!
问题描述:三个野人和三个传教士来到河边,打算乘一条船从左岸到右岸,该船一次最多只能载两个人,在任何时候,如果野人人数超过传教士人数,那么野人就会把传教士吃掉,怎样才能用这条船安全地把所有人都渡过河呢?假设野人听从传教士的安排,并且野人和传教士都会划船。
其中每个状态都是安全的,如果用文字来描述这个过程应该是这样的:
(1)两个野人先划船到对岸,左岸一个野人,三个传教士,右岸两个野人,安全;
(2)一个野人划船回来,左岸两个野人,三个传教士&#