简析逻辑推演--程序设计在现实生活中的应用(3)
作者:佚名; 更新时间:2014-12-03

  过河的对象必须与农夫在河的同一侧,设计函数 withFarmer来判断。如果当前 state下,过河对象与农夫的状态参数一致,则返回真,表示二者在河的同一侧。

  此外,不论农夫每次过河带的东西如何,首先都应该判断这样过河是否安全,即在无人看管的情况下,狼和羊,羊和白菜都没有在河的同侧,函数 is_sMe完成判断。当农夫与羊不在河的同侧时,羊与白菜、或羊与狼在同侧都是不安全的,返回false;其他情况则是安全的,返回true。

  bool issafe(const bitvec&state)

  {

  ,/羊吃白菜

  if((state[cabbage】==state[goat])&&(state[farmer]!=state[goat])) return false;

  ,/狼吃羊

  if((state[goat】==state[~oLq)&&(state[farmer]!=state[wolq)) retum false;

  //其它状态为安全状态

  }

  为了防止发生状态的往复,即农夫将一个东西带过去又带回来的情况发生,也为了记录过河的状态过程,对所有可能的状态进行标定。四位二进制数的所有可能状态为 16,都初始化为一1,表示过河过程中尚未出现过;随着过河过程的不断进行,它被改变为其前一状态二进制数对应的整数值。

  于是,农夫过河问题经过二进制化以后,化为从初始状态 0000出发,经过~系列安全状态后,如果最后状态到达,即path[15]有前驱状态,则表示过河成功。问题求解后得到一系--进制数 ,将这一系列二进制数表示的过河状态转换为实际的过河方案即可。

  三、总结

  程序设计是将人的思维转化为机器语言的过程,程序抽象程度越高,与人的思维方式就越类似。逻辑推演是建立在思维之上的,是有依据的推演,将逻辑推演的思想融人程序,在一定程度上可以实现程序的智能化。随着程序设计语言的发展,逻辑推演的应用一定会越来越广。

  参考文献

  [1]严蔚敏著.数据结构(c语言版)北京:清华大学出版社

  [2]郭福顺著.数据结构与算法基础.辽宁:大连出版社

  [3]李建学,李光元,信捷职称论文写作发表网,吴春芳著.数据结构课程设计案例精编:用C/C++描述.北京:清华大学出版社

  [4]钱能著.c++程序设计教程.北京:清华大学出版社

  [5]c++标准模板库(sTL).http://www.stlchina.org/

核心期刊快速发表
Copyright@2000-2030 论文期刊网 Corporation All Rights Reserved.
《中华人民共和国信息产业部》备案号:ICP备07016076号;《公安部》备案号:33010402003207
本网站专业、正规提供职称论文发表和写作指导服务,并收录了海量免费论文和数百个经国家新闻出版总署审批过的具有国内统一CN刊号与国际标准ISSN刊号的合作期刊,供诸位正确选择和阅读参考,免费论文版权归原作者所有,谨防侵权。联系邮箱:256081@163.com