人工智能的M-C问题

    xiaoxiao2021-03-25  73

                    关于M-C问题,即是missionaries and cannibals问题。题目条件是N个传教士和N个野人(N=5)准备渡河。河岸边有一条船每次最多载K人(K=3)渡河;限制条件是河

    的左右两岸或者船上的传教士人数均要大于或者等于野人数目(防止传教士被吃掉,所以人多打架力量大)。

                    初始有两种情况讨论:1.船在左岸;2.船在右岸;

                    待用条件:M(传教士人数),C(野人数);B=0(船在右岸),B=1(船在左岸)

                    1.船在左岸。因为船每次最多运送3人,所以按照最多运送的人数目进行。当船载3人(划船的1人,乘客2人)从左岸出发到右岸,送下2名乘客后,划船的人将船再次

    驶向左岸接剩下的3人(5-2);所以实际上这一次只运送过去了2人。 此时船从左岸出发又回到左岸,为一个来回即是2次;

                     由此可得一个式子:((M+C-3)/2)*2+1;分析:M+C-3:出去最后一次之前,岸边剩下的3个人。(M+C-3)/2:  "/2"的原因是每一个来回可以 运行2个人;"*2"是因为一个来回为2次渡河。“+1”是代表着最后一次渡河;

                     2船在右岸。

                     岸边的状态可以用来表示(M,C,B);  B=1代表着船在左岸,B=0代表着船在右岸;

                     船在右岸的时候是需要一个人将船驶往左岸的,所以此刻存在两种可能性,划船的人是野人或者传教士。此刻可以用状态的来表示(M+1,C,1),(M,C+1,1)。左岸原有M个传教士,C个野人。(M+C+1)-2+1 。其中(M+C+1)的”+1”表示送船回到左岸的那个人,而最后边的”+1”,表示送船到左岸时的一次摆渡。

                最终综合可以得到两个式子:M+C

                                                            M+C-2

                推论可得:M+C-2B:是满足A*算法的要求的。B为1或者为0,取决船在左岸还是右岸。

                有不准确或者错误的地方,恳请各位斧正。

    转载请注明原文地址: https://ju.6miu.com/read-18171.html

    最新回复(0)