PAGE

PAGE 12

人猫鸡米渡河问题的数学模型

摘要:人带着猫、鸡、米过河,从左岸到右岸,船除了需要人划之外(船除了要载人外),只能载猫、鸡、米三者之一,而当人不在场时猫要吃鸡、鸡要吃米。本文将设计一个安全过河方案,使渡河次数尽量地少。模仿“商人过河”的模型设计出新的数学模型。

关键字:穷举法,Matlab运算求解。

一、问题的提出

课本P19.T5: 模仿“商人过河”模型,做下面游戏:人带着猫、鸡、米过河,船除需要人划之外,至多能载猫、鸡、米三者之一,而当人不在场时猫要吃鸡、鸡要吃米。设计一个过河方案,建立数学模型,并使渡河次数尽量地少。?

二、问题的分析

因为这是个简单问题,研究对象少,所以可以用穷举法,简单运算即可解题。

此问题是从状态向量A(1,1,1,1)经过奇数次运算向量B变为状态向量A(0,0,0,0)的状态。转移过程为什么是奇数次?我们注意到过河有两种,奇数次的为从左岸到右岸,而偶数的为右岸回到左岸,因此得到下述转移过程,所以最后应该是过河完成时状态转移数为奇数次。

三、问题的假设

1.1:假设船除了载人之外,至多只能载猫、鸡、米三者之一。

1.2:当人不在场时,猫一定会吃鸡、鸡一定会吃米。

四、定义符号说明:

我们将人,猫,鸡,米依次用四维向量中的分量表示,当一物在左岸时,相应的分量记为1,在右岸时记为0.如向量(1,0,1,0)表示人和鸡在左岸,猫和米在右岸,并将这些向量称为状态向量。例如(1,1,1,1)表示它们都在左岸,(0,1,1,0)表示猫,鸡在左岸,人,米在右岸;由于问题中的限制条件,有些状态是允许的,有些状态是不允许的。凡问题可以允许存在的状态称为可取状态。A向量定义为状态变量。比如是一个可取状态向量,但是一个不可取状态向量。此外,B向量定义为运载变量。把每运载一次也用一个四维向量来表示。如表示人和猫在船上,而鸡和米不在船上,这自然是可取的运载,因为船可载两物,而则是不可取运载,依此规律类推。

五、模型的建立

对于这个问题我们用穷举的方法来解决,首先将此问题化为状态转移问题来解决。对本问题来说:

可取状态向量共有10个,可以用穷举法列出来:

右边5个正好是左边5个的相反状态。

可取运载共有4个:

5.3、可取运算:规定与相加时对每一分量按二进制法则(异或运算)进行。这样,一次渡河就是一个可取状态向量与一个可取运载向量相加,可取状态经过加法运算仍是一个可取状态,这种运算称为可取运算。

在上述规定下,问题转化为:从初始状态至少经过多少次(奇数次)可取运算才能转化为状态。

六、模型的求解

如果一个状态是可取的就打,否则就打,虽然可取但已重复就打,于是问题可用穷举法解答如下:

1)(2)

(3)

(4) (4)

(5) (5)

(6) (7)

第7步已经出现了状态,说明经7次运载即可,其过程为:

因此,该问题的最优方案有2种:

1、人先带鸡过河,然后人再回来,把米带过河,然后把鸡运回河岸,人再把猫带过河,最后人回来把鸡带过去。

2、人先带鸡过河,然后人再回来,把猫带过河,然后把鸡运回河岸,人再把米带过河,最后人回来把鸡带过去。

七、模型的评价

7.1、优点:

本算法将研究对象用四维向量中的分量用0,1表示,运用穷举法找出所有可取状态向量再用一些基础可取运算方法将结果列出来再以图形表示出来。模型简单,切合实际,易于理解,整个过程易懂合理。

7.2、缺点:

由于问题的求解没有使用LINGO,LINDO或MATLAB软件,当状态和决策过多时,采用上述方法求解显得繁琐,容易出错,所以下面给出此问题的matlab求解过程。

7.3、推广:

正如课本上的商人们安全过河问题,当商人和随从人数增加或小船的容量加大时,靠逻辑思考就有些困难了,而适当地设置状态和决策,确定状态转移率,建立多步决策模型,仍可方便有效地求解此类型问题。

八、mathlab求解过程

模型假设与建立:

8.1.1、由上可知,可取状态向量共有10个,即:

可取运载B有4个 :

(1,1,0,0)、 (1,0,1,0)、 (1,0,0,1)、 (1,0,0,0)。

8.2、算法设计:

8.2.1、规定A和B的每一分量相加时按二进制法则进行,这样一次渡河就是一个可取状态和一个可取运载相加,在判断和向量是否属于可取状态即可。

8.2.2、可以将可取状态及可取运载分别编成矩阵。共分为五个m文件,一个主文件xduhe.m数,四个子文件分别为:

8.2.2.1、duhe(L,B,M,s)函数:

用来实现渡河总思路。

猫鸡米问题java_人猫鸡米渡河问题的数学模型.doc相关推荐

  1. 猫鸡米问题java_人猫鸡米渡河问题的数学模型

    人猫鸡米渡河问题的数学模型 摘要:人带着猫.鸡.米过河,从左岸到右岸,船除了需要人划之外(船除了要载 人外),只能载猫.鸡.米三者之一,而当人不在场时猫要吃鸡.鸡要吃米.本文将设计一个安全过河方案,使 ...

  2. 猫鸡米问题java_人猫鸡米渡河问题地数学模型.doc

    实用标准文案 PAGE 文档 人猫鸡米渡河问题的数学模型 摘要:人带着猫.鸡.米过河,从左岸到右岸,船除了需要人划之外(船除了要载人外),只能载猫.鸡.米三者之一,而当人不在场时猫要吃鸡.鸡要吃米.本 ...

  3. 最小公倍数Java描述,甲每秒跑3米,乙每秒跑4米,丙每秒跑2米, 三人沿600米的环形跑道从同一地点同时同方向跑步, 经过多少时间三人又同时从出发点出发?

    最小公倍数 甲每秒跑3米,乙每秒跑4米,丙每秒跑2米, 三人沿600米的环形跑道从同一地点同时同方向跑步, 经过多少时间三人又同时从出发点出发? //数学思维: //600/3=200秒 //600/ ...

  4. 人猫鸡米过河c语言算法,人猫鸡米过河问题.doc

    重 庆 交 通 大 学 学 生 实 验 报 告 实验课程名称 数学 开课实验室 学 院 院 级 专业班 班 学 生 姓 名 学 号 开 课 时 间 201 至 201 学年第 学期 综合评分依据实验到 ...

  5. 人狗鸡米安全过河matlab程序,人狗鸡米过河

    1.学校代码: 10128学 号: 6选修课结业论文(题 目:人狗鸡米过河问题学生姓名:武彩学 院:理学院系 别:数学系专 业:信息与计算科学班 级:信计08-1二 一二 年 5月人狗鸡米过河问题一. ...

  6. 人狗鸡米过河问题matlab代码

    这个还是笔者好久之前写的matlab代码,写的不是很好,还请大家多多在指正 clear;clc South(1,:) = [1,1,1,1]; %南岸 North(1,:) = [0,0,0,0]; ...

  7. c/c++语言编程实现人狗鸡和白菜过河问题的求解过程.,【算法编程】过河问题

    今天偶尔想到了过河问题.记得读小学六年级的时候第一次接触到这个问题--六个老虎过河问题(百度上有详细介绍,本文解决的是一个简单的问题,下一篇文章中将讨论该问题),当时都是从逻辑思维的方法得到正确的解决 ...

  8. linux吃鸡游戏下载,沙雕糖豆人吃鸡战场

    沙雕糖豆人吃鸡战场是一款趣味十足的休闲闯关手游,该游戏画面色彩绚丽,关卡丰富有趣,玩家在游戏中需要控制小人不断的跳跃进行闯关,在闯关过程中还要注意躲避障碍物,比较考验玩家的手速和反应能力,快来下载体验 ...

  9. matlab失明的小猫,从小失明的小猫,手术后第一次见到猫妈妈,场面让人泪崩!...

    原标题:从小失明的小猫,手术后第一次见到猫妈妈,场面让人泪崩! Hello,我是爱分享故事的喵君, 昨晚看了一个非常感人 温暖的救助视频, 泪点被狠狠戳中了,忍不住分享给你. 感受猫和猫之间,猫和人之 ...

最新文章

  1. 乐在其中设计模式(C#) - 抽象工厂模式(Abstract Factory Pattern)
  2. 不要一棍子打翻所有黑盒模型,其实可以让它们发挥作用
  3. 一招教你掌握肌肉发力的感觉
  4. camx模型_【推荐】基于CAMx的空气质量模拟及污染来源解析技术
  5. Codeforces 508E Arthur and Brackets 区间dp
  6. Android笔记之模拟器
  7. 【折腾】斐讯N1 安装 Docker + GUI
  8. 用pyinstaller把python脚本编译成可执行程序(windows系统)
  9. PDF文件编辑密码解除
  10. Killer网卡驱动导致蓝屏修复方法
  11. Google好用插件推荐(一)
  12. 手机开热点但是电脑一直连接不上_电脑无法连接手机开的热点怎么解决
  13. Oracle AutoVue 文件查看器Server服务器版安装及要求
  14. Javascript(十三)javascript BOM详解
  15. WPF嵌入技术1_嵌入WPF到cad(MFC,win32窗体),Win32API嵌入WPF位置跳走的解决方案
  16. Cornerstone清除缓存
  17. python数据写入csv、csv转excel、用Pandas把数据写入excel简单总结
  18. Java、JSP基于Web停车场管理系统毕业设计论文
  19. 用程序员计算机算进制,一文带你读懂计算机进制
  20. Java中apple导入那个包_在Java中,由Java编泽器自动导入而无需在程序中用import导入的包是()。A.java.appletB.java.awtC.j...

热门文章

  1. 算法基础复盘笔记Day12【贪心算法】—— 区间问题、Huffman树、排序不等式、绝对值不等式、推公式
  2. LOL如何对一个英雄的技能进行测试 对一个英雄技能测试需要测试什么?
  3. Python 3 字符串 strip( ) 方法
  4. 从零开始学Redis之自在地境
  5. 微信小程序讲解ppt(内附ppt资源及网易云api案例)
  6. 南京烽火星空——企业移动信息化的“大白”
  7. ata计算机考试第一套,计算机ATA考试中级第一套试题配套素材.doc
  8. 高一下册计算机教案,高一下册数学必修二教案
  9. Oracle索引梳理系列(八)- 索引扫描类型及分析(高效索引必备知识)
  10. Python爬虫入门教程31:爬取猫咪交易网站数据并作数据分析