欢迎来到天天文库
浏览记录
ID:57738201
大小:214.50 KB
页数:8页
时间:2020-09-02
《商人过河模型.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、商人过河摘要本文针对商人安全渡河的问题,采用多步决策的过程建立数学模型,求解得到了在随从没有杀人越货的情况下的渡河方案。对于本题而言,在3名商人、3名随从、船的最大容量为2的情况下,首先定义了渡河前此岸的状态,并设安全渡河条件下的状态集定义为允许状态集合,接着得到渡河方案的允许决策集合,然后得到状态随渡河方案变化的规律,最后利用平面坐标分析法,并利用计算机进行了仿真,得到了一种商人安全渡河的方案。但是,本文不仅仅是为了拼凑出一个可行方案,而是希望能找到求解这类问题的规律性,并建立数学模型,用以解决更为广泛的问题。基于此目的,利用图解法和算法,得
2、到最短路径的最优解。但同时由于该算法遍历计算的节点很多,所以效率低,而且当有多个最短距离时,不能够将所有符合条件的情况逐一列出。最后,从这类问题解得趣味性、合理性进行了深入讨论,得到了“传教士与野蛮人渡河”,“印度夫妻渡河”等问题通用的模型,并将其进行了推广。这也是本文的一大特色。关键词渡河问题状态集合决策集合平面坐标图解法算法一、问题提出问题:三名商人各带一个随从过河,一只小船只能容纳两个人,随从们约定,只要在河的任何一岸,一旦随从人数多于商人人数就杀人越货,但是商人们知道了他们的约定,并且如何过河的大权掌握在商人们手中,商人们该采取怎样的策
3、略才能安全过河呢?二、问题分析这个问题已经理想化了,所以我们无需对模型进行假设,该问题可以看作一个多步决策问题。每一步,船由此岸划到彼岸或者由彼岸划回此岸,都要对船上的人员进行决策(此次渡河船上可以有几名商人和几名随从),在保证安全(两岸的随从都不比商人多)的前提下,在有限次的决策中使得所有人都到对岸去。因此,我们要做的就是要确定每一步的决策,达到渡河的目标。三、模型假设与建立记第次过河前此岸的商人数为,随从数为,,定义状态:将二维向量定义为状态,将安全渡河状态下的状态集合定义为允许状态集合,记为记第次渡河船上的商人数为,随从数为.定义决策:将
4、二维向量定义为决策;允许决策集合记作:因为小船容量为2,所以船上人员不能超过2,而且至少要有一个人划船,由此得到上式。由我们定义的状态和决策,我们可以发现它们之间是存在联系的:为奇数是表示船由此岸划向彼岸,为偶数时表示船由彼岸划回此岸状态是随着决策变化的,规律为:我们把上式称为状态转移律,因此渡河方案可以抽象为如下的多步决策模型:求决策,使状态按照转移率,初始状态经有限步后到达状态。到这里,整个数学模型就已经非常清晰了,接下来要做的就是求解模型得出结果。四、模型求解在这个模型的求解中,我将会使用两种方法,一种是数学图解法,用于解决和当前题目一样
5、的规模比较小的问题,优点是比较简便,但是对于规模比较大的问题就无能为力了,比如说有50个商人携带50个随从过河,第二种方法是通过计算机编程,使用程序来解决该问题,即使问题规模增大,我们也可以利用计算机强大的计算能力来解决。4.1数学图解法我们首先在平面坐标系中画出如下方格,方格中的点表示状态起始状态(下图绿色点),终止状态(下图红色点)允许决策表示的是在方格中的移动,根据允许决策的定义,它每次的移动范围为1~2格,并且为奇数时向左或下方或左下方移动,位偶数时向右或上方或右上方移动。于是,这个问题就变成了,根据允许决策,在方格中在状态(方格点)之
6、间移动,找到一条路径,使得能从起始状态(上图绿色点),到达终止状态(上图图红色点)在下图中,我们给出了一种方案,我们可以很清楚的看到该方案绝对不是最佳方案(渡河次数最少),它只是给出了一种方案,而且我们看来是一种极其不优化的方案,但是可以很清楚地看出图解法是如何工作的。根据上图,我们得出的方案如下:1:两个随从划到对岸2:一个随从划回来3:两个随从划到对岸4:一个随从划回来5:两个商人划到对岸6:一个商人和一个随从划回来7:两个商人划到对岸8:一个随从划回来9:两个随从划到对岸10:一个商人划回来11:一个商人和随从划到对岸最终商人们安全渡河4
7、.2程序求解我们看到上面介绍的图解法对于小规模问题很直观也很简单,但是无法应对大规模的问题,于是我们采用编程的方法来再次解决上述问题,这次我使用的编程语言为.4.2.1创建允许状态集合对于允许状态集合,我们要去使用算法对其进行计算,所谓允许状态无非就是,河岸两边的商人们都是安全的:一种情况是:两岸的商人人数都比随从人数多(对于随从和商人人数相同的情况就是河的任一岸,商人人数等于随从人数)另一情况为:所有商人都在河的任何一岸,此时另一岸没有任何商人,对于随从的人数在河的任一岸的数量不论是多少,此时都是安全的按照以上方法编程如下:'''创建允许状态
8、集合'''():=[](.+1):(.+1):==0:.([,])==.:.([,])(>=((.-)>=(.-))):.([,])4.2.2创建允许
此文档下载收益归作者所有