欢迎光临112期刊网!
网站首页 > 论文范文 > 经济论文 > 工业经济 > 简析逻辑推演--程序设计在现实生活中的应用

简析逻辑推演--程序设计在现实生活中的应用

日期:2023-01-24 阅读量:0 所属栏目:工业经济


论文关键词:逻辑推演程序设计数据结构
  论文摘要:“逻辑推演”是指利用已知信息,通过分析和判断,得出未知信息的过程。计算机解决逻辑推演问题要依靠逻辑表达式。本文结合逻辑推演,剖析了程序设计在现实生活中的应用。[
  一、经典逻辑推演问题的引入
  问题1:从前,一个农夫带一只狼,一只羊和一颗白菜过河(注意该狼已被农夫驯服,但还是会吃羊)。他要将所有东西安全的带到河的对岸。不幸的是河边只有一条小船,只能装下农夫和他的一样东西,并且农夫必须每次都随船过河,因为只有他能撑船。在无人看管的情况下狼要吃羊,羊要吃白菜,因此,农夫不能在河的某边岸上单独留下狼和羊,也不能单独留下羊和白菜。问农夫如何才能使三样东西平安过河。——农夫过河
  问题2:公安人员审问四名嫌疑犯。已知四人中仅有一名是窃贼还知道这四个人中每人要么是诚实的,要么总是说谎的。在回答公安人员的问题时:
  甲说:“乙没有偷,是丁偷的。”
  乙说:“我没有偷,是丙偷的。”
  丙说:“甲没有偷,是乙偷的。”
  丁说:“我没有偷。”
  请根据这四人的答话判别谁是盗窃者。——窃贼说谎要解决上面两个问题需通过合理假设与逻辑推演将问题简化,通过正确的表达逻辑关系来驾驭程序设计。
  二、逻辑推演在程序设计中的运用
  1、委派任务问题
  某任务需要在a,b,c,d,e这五人中物色人员去完成,但派人受限于下列条件:
  (1)若a去,则b跟去;(2)d,e两人中必有人去;(3)b,c两人中必有人去,但只去一人;(4)c,d两人要么都去,要么都不去;(5)若e去,则a,b都去。问这五个条件如何表示?
  分析:求一个逻辑判断类问题的关键是写出正确的逻辑表达式。c语言中提供了丰富的算术和逻辑操作符,可以借助它们将问题化繁为简。将题设条件用程序语言描述清楚后计算机就可以依此穷举。
  第一种方法
  用0和1表示执行任务的状态:1(去),0(不去),则
  a==o或a+b=:2’
  d-4-e>1
  b+c==l
  c+d:=0或c+d==2
  e==0或a+b+e=3
  各表达式之间是“与”的关系。穷举每个人去或不去的各种可能,代入表达式中进行推理运算,使上述各表达式值均为真的情况就是正确结果。
  第二种方法
  用位操作。令a,b,c,d,e都为逻辑型值true或false。则:
  条件1可以表示为:a—b,它等价于!attb。
  条件2可以表示为:diie。
  条件3可以表示为:(b&&!c)b&&c),推演为!b:c。
  条件4可以表示为:(!ciid)&&(clid!),更简单的形式是c==d。
  条件5可以表示为:!eii(a&&b)。
  如果将每个人的去与不去看成是5位整数的其中1位,其中a对应最高位,e对应最低位,那么所有可能的调派方案为从全部不派的00000到全部派去的11111之间变化。显然,共有32种方案。全部遍历的循环为:for(inti_0;i<32;i++)。其中每个i对应一个二进制数,为一种调派方案。在某一种调派方案i中:
  a为最高位(i&16)>>4或者i>>4(将低位都挤掉)
  b为次高位(i&8)>>3
  c为中间位(i&4)>>2
  d为次低位(i&2)>>l
  e为最低位(i&1)
  根据求解模式,把这五个条件表示成否定的形式:否定条件1为(!aiib)=a&&b,否定条件2为!(djie),否定条件3为b==c,否定条件4为c!=d,否定条件5为e&&!fa&&b)。在将a——e的式子代入条件表达式,即可编程求解。
  2、窃贼说谎问题
  来看文章开始时提到的问题2:用a,b,c,d分别代表四人,变量的值为1代表该人是窃贼。已知:四人中仅有一名窃贼,且这四个人中的每个人要么说真话,要么说假话,而由于甲乙丙三人都说了两句话:××没偷,××偷了”,故不论该人是否说谎,他提到的两人之中必有人是小偷。故在列条件表达式时,可以不关心谁说谎,谁说实话。这样,可以列出下列条件表达式:

  甲说:“乙没有偷,是丁偷的。”b+d=i
  乙说:“我没有偷,是丙偷的。”b+c=i
  丙说:“甲没有偷,是乙偷的。”a+b=i
  丁说:“我没有偷。”a+b+c+d=i
  其中丁只说了一句话,无法判定真假,表达式反映了四个人中仅有一名是窃贼的条件。有了条件表达式,运用程序设计中的穷举法就可以轻松求解。
  3、农夫过河问题(逻辑推演方法与bfs、dfs相结合的实例)
  用一个四位二进制数来分别表示白菜、羊、狼、和农夫的过河状态0表示在原始岸边,即尚未过河;1表示在目的岸边,已经过河。将过河对象定义为枚举enum类型,bitset<4>类型定义为bitvee(这里用到了c++标准函数库stl)。枚举类型定义过河者时,是按照白菜、羊、狼、和农夫的次序分别定义的。这种次序中前三者的顺序可以随意,但农夫farmer必须在最后,目的是便于在试探随农夫过河的对象时逐序进行所有的东西都不能带过河时,最后才选择让农夫单独过河。
  enumwader
  {
  cabbage,//默认为1
  goat,//默认为2
  wolf,//默认为3
  farmer,//默认为4j;
  typedefbitset<4>bitvec;
  过河的对象必须与农夫在河的同一侧,设计函数withfarmer来判断。如果当前state下,过河对象与农夫的状态参数一致,则返回真,表示二者在河的同一侧。
  此外,不论农夫每次过河带的东西如何,首先都应该判断这样过河是否安全,即在无人看管的情况下,狼和羊,羊和白菜都没有在河的同侧,函数is_sme完成判断。当农夫与羊不在河的同侧时,羊与白菜、或羊与狼在同侧都是不安全的,返回false;其他情况则是安全的,返回true。
  boolissafe(constbitvec&state)
  {
  ,/羊吃白菜
  if((state[cabbage】==state[goat])&&(state[farmer]!=state[goat]))returnfalse;
  ,/狼吃羊
  if((state[goat】==state[~olq)&&(state[farmer]!=state[wolq))retumfalse;
  //其它状态为安全状态
  }
  为了防止发生状态的往复,即农夫将一个东西带过去又带回来的情况发生,也为了记录过河的状态过程,对所有可能的状态进行标定。四位二进制数的所有可能状态为16,都初始化为一1,表示过河过程中尚未出现过;随着过河过程的不断进行,它被改变为其前一状态二进制数对应的整数值。
  于是,农夫过河问题经过二进制化以后,化为从初始状态0000出发,经过~系列安全状态后,如果最后状态到达,即path[15]有前驱状态,则表示过河成功。问题求解后得到一系--进制数,将这一系列二进制数表示的过河状态转换为实际的过河方案即可。
  三、总结
  程序设计是将人的思维转化为机器语言的过程,程序抽象程度越高,与人的思维方式就越类似。逻辑推演是建立在思维之上的,是有依据的推演,将逻辑推演的思想融人程序,在一定程度上可以实现程序的智能化。随着程序设计语言的发展,逻辑推演的应用一定会越来越广。
  参考文献
  [1]严蔚敏著.数据结构(c语言版)北京:清华大学出版社
  [2]郭福顺著.数据结构与算法基础.辽宁:大连出版社
  [3]李建学,李光元,吴春芳著.数据结构课程设计案例精编:用c/c++描述.北京:清华大学出版社
  [4]钱能著.c++程序设计教程.北京:清华大学出版社
  [5]c++标准模板库(stl).http://www.stlchina.or 本文链接:http://www.qk112.com/lwfw/jingjilunwen/gongyejingji/260051.html

论文中心更多

发表指导
期刊知识
职称指导
论文百科
写作指导
论文指导
论文格式 论文题目 论文开题 参考文献 论文致谢 论文前言
教育论文
美术教育 小学教育 学前教育 高等教育 职业教育 体育教育 英语教育 数学教育 初等教育 音乐教育 幼儿园教育 中教教育 教育理论 教育管理 中等教育 教育教学 成人教育 艺术教育 影视教育 特殊教育 心理学教育 师范教育 语文教育 研究生论文 化学教育 图书馆论文 文教资料 其他教育
医学论文
医学护理 医学检验 药学论文 畜牧兽医 中医学 临床医学 外科学 内科学 生物制药 基础医学 预防卫生 肿瘤论文 儿科学论文 妇产科 遗传学 其他医学
经济论文
国际贸易 市场营销 财政金融 农业经济 工业经济 财务审计 产业经济 交通运输 房地产经济 微观经济学 政治经济学 宏观经济学 西方经济学 其他经济 发展战略论文 国际经济 行业经济 证券投资论文 保险经济论文
法学论文
民法 国际法 刑法 行政法 经济法 宪法 司法制度 法学理论 其他法学
计算机论文
计算机网络 软件技术 计算机应用 信息安全 信息管理 智能科技 应用电子技术 通讯论文
会计论文
预算会计 财务会计 成本会计 会计电算化 管理会计 国际会计 会计理论 会计控制 审计会计
文学论文
中国哲学 艺术理论 心理学 伦理学 新闻 美学 逻辑学 音乐舞蹈 喜剧表演 广告学 电视电影 哲学理论 世界哲学 文史论文 美术论文
管理论文
行政管理论文 工商管理论文 市场营销论文 企业管理论文 成本管理论文 人力资源论文 项目管理论文 旅游管理论文 电子商务管理论文 公共管理论文 质量管理论文 物流管理论文 经济管理论文 财务管理论文 管理学论文 秘书文秘 档案管理
社科论文
三农问题 环境保护 伦理道德 城镇建设 人口生育 资本主义 科技论文 社会论文 工程论文 环境科学