QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 1322|回复: 0
打印 上一主题 下一主题

[代码资源] 让计算机通过“模仿学习”学会解一类小学推理题的代码程序

[复制链接]
字体大小: 正常 放大
madio        

3万

主题

1307

听众

5万

积分

  • TA的每日心情
    奋斗
    2021-5-1 20:26
  • 签到天数: 2013 天

    [LV.Master]伴坛终老

    自我介绍
    数学中国站长

    社区QQ达人 邮箱绑定达人 优秀斑竹奖 发帖功臣 风雨历程奖 新人进步奖 最具活力勋章

    群组数学建模培训课堂1

    群组数学中国美赛辅助报名

    群组Matlab讨论组

    群组2013认证赛A题讨论群组

    群组2013认证赛C题讨论群组

    跳转到指定楼层
    1#
    发表于 2020-3-11 09:26 |只看该作者 |倒序浏览
    |招呼Ta 关注Ta |邮箱已经成功绑定
    编程实验:让计算机通过“模仿学习”学会解一类小学推理题

    $ Y+ O& L3 V* U" x! `
    让我们来看一下这道推理题:
    赵小亮、潘芸叶昭君三人,一个是北京人,一个是上海人,一个是香港人。现在下面三句话中只有一句是真的:
    1. 赵小亮是上海人
    2. 潘芸不是上海人
    3. 叶昭君不是香港人
    求:赵小亮、潘芸叶昭君分别是哪里人。
    这道题目有两种解法:
    1. 假设赵、潘、叶三人的籍贯分别为{上海、北京、香港}{上海、香港、北京}{北京、上海、香港}……穷举出所有的情况。每次都要检验三句话中有多少句是符合事实的,如果只有一句话是对的,则是正确答案。
    2. 假设三句话中的某一句话是对的,然后检验另外两句话的正确性。如果另外两句话都是错误的,则这个假设是正确答案。
    为了编程的方便,我采用第一种方法。
    本程序的目的不是解决这一道“北上广”推理题,而是让程序能够通过学习解决这道“北上广”,从而能够解决所有同类的推理题目。
    程序运行步骤及原理:
    先输入题目中的所有对象名(即上题中的人名,句子中做主语),以空格分隔,如:黑 黄。
    再输入所有的谓词(即待判定的事实),如:是中国人 是日本人 是北欧人。
    接下来输入一个表示否定的词,如:不。
    然后告诉程序总共有多少个命题,我输入:4
    最后按照以下格式输入所有的命题:
    1 银 是北欧人
    2 黄 是日本人
    3 黑 不 是中国人
    4 黑 是中国人
    程序询问:以上命题中有多少个是真命题?
    我输入:3
    题设条件的输入过程到此为止,接下来的便是程序的“模仿学习”过程了。
    我输入:枚举所有可能情况
    这时候程序就会开始进行枚举。当然它不会把所有可能的假设情况一次性列举出来,而是每次显示一种情况,等待用户来确认(这个假设是否正确)。输出内容如下:
    黑是中国人
    银是日本人
    黄是北欧人
    这是正确结果吗?(Y/N)
    我输入N
    程序要求我输入一段推理过程,证明这个假设为什么是错误的(如果我前面输入的是Y”,它就会要求我证明该假设为什么正确)。我输入:统计真命题数
    程序显示:
    黑是中国人
    根据当前假设,以上1个命题为真命题。
    我再输入:与题设条件相比较
    程序输出如下4行文字:
    按照你的设定条件,所有命题中,真命题数目为:3
    按照当前的假设,真命题数目为1
    当前假设不成立的原因是? 设定的真命题数_____按照当前假设推出的真命题数
    请在划线处填上:大于、小于、等于、不等于。要强行退出训练,请输:结束训练
    我输入:不等于
    按下回车以后,我没有再输入任何内容,程序便开始自动执行我刚才输入的第一步命令——枚举所有可能情况。程序开始输出第二个假设:
    黑是中国人
    银是北欧人
    黄是日本人
    这是正确结果吗?(Y/N)
    由此可以看出,程序已经记忆下了我刚才输入的三步命令:枚举所有可能情况、统计真命题数、与题设条件相比较。但是程序还没有完全学会判断一个假设是正确的还是错误的,于是我输入Y,告诉程序这个假设是正确的(题目是我出的,我当然知道答案)。
    程序执行它保存的第二步、第三步指令:统计真命题数、与题设条件相比较。
    程序输出如下:
    银是北欧人
    黄是日本人
    黑是中国人
    根据当前假设,以上3个命题为真命题。
    按照你的设定条件,所有命题中,真命题数目为:3
    按照当前的假设,真命题数目为3
    当前假设成立的原因是? 设定的真命题数_____按照当前假设推出的真命题数
    请在划线处填上:大于、小于、等于、不等于。要强行退出训练,请输:结束训练
    我输入“等于”,告诉程序:按照假设,如果推出的真命题数与我题设条件中要求的真命题数是相等的,这个假设就是正确的。
    到此处,学习过程就已经完成了。虽然程序接下来还会显示第三个假设,但是后面我只要输入N告诉它此假设错误,然后一步再打入“结束训练”,就可以了。

    / c+ z1 ~6 `  r5 y! Q6 ]! W- E. H4 L  r, m; U) q" g# h  q

    模仿学习简单推理.rar

    3.98 MB, 下载次数: 2, 下载积分: 体力 -2 点

    售价: 10 点体力  [记录]

    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
    数学建模社会化
    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2024-4-20 03:06 , Processed in 0.466335 second(s), 54 queries .

    回顶部