文档章节

自动几何推理的研究(一)

刘军兴
 刘军兴
发布于 2015/04/14 17:01
字数 639
阅读 24
收藏 0

继续研究几何学.

网页画板中, 老师们提出需求, 能否更加智能化一些, 如检查学生绘制的图形是否正确, 检查学生的推理是否正确,
为此, 能够让计算机自动的推导出几何图形中的关系, 则是这些应用的实现引擎(之一).

从网上找资料和软件, 一般有吴文俊,张景中院士提出的机器证明方法, 另有一个不错的开源软件 GExpert, 里面
有几何推理的功能. 需要深入学习该软件, 所以自己动手做了一个 javascript 版和一个 c# 版的几何推理引擎,
下面是 js 版的测试地址:

    http://gpad.chinaflc.com/test_jgx.html

由于几何推理比较复杂, 虽然有一个测试程序, 但还是有很多很多疑问, 因此写一些文章和思考下来.

分析方法:
    从底层的数据结构开始, 逐步构建更高一层的结构和算法. 具体理论可参见 GExpert 的文档. 

推理的核心类为 Gdd, 其内部有多个几何对象的容器(如 Point_Container, Line_Container 等), 以及一组
用于推理的函数, 这些函数一般叫 Searcher 函数, 为方便组织为一种几何对象一组(如 Line_Searcher 等).
今按照顺序 几何对象 -> 对象管理容器 -> 搜索算法.

推理中最低层的对象是点, 用 G_Point 类实现(表示), 一个点的信息当前包括:
   name: 点的名字, 如 A,B, 每个点都有唯一名字, 一般是一个大写字母.
   idx: 点的唯一编号. 也是点在管理容器类中的索引, 一般用于比较点的顺序.
   x,y: 点的坐标, 用双精度浮点数表示. 某些推理过程需要数值计算做辅助检查.
   其它属性: 可能以后添加 xactive, name_html 等属性.

点的容器类是 Point_Container, 在别处引用此容器一般用变量名 all_pt, 主要功能有:
   fd_pt(name): 根据指定名字查找点, 如果没有则返回 null
   fadd_pt(name): 查找指定名字的点, 如果没有则创建并返回新点对象.
   set_xy(name, x, y): 设置指定点的 x,y 坐标.

某两三个搜索程序中需要遍历所有的点, 点在容器中用数组存放, 也即 all_pt.pt[] 数组, 点的数量为 all_pt.count 个.

点没有对应的搜索函数, 不作为谓词(pred)加入到待搜索的数据队列中.

 

© 著作权归作者所有

共有 人打赏支持
刘军兴
粉丝 57
博文 192
码字总数 233937
作品 0
昌平
私信 提问
预见未来 | 图像识别的未来:机遇与挑战并存

     编者按:自1998年成立以来,微软亚洲研究院一直致力于推动计算机科学领域的前沿技术发展。在建院20周年之际,我们特别邀请微软亚洲研究院不同领域的专家共同撰写“预见未来”系列文...

微软亚洲研究院
2018/11/16
0
0
MSRA20周年研究趋势文章|图像识别的未来:机遇与挑战并存

文/微软亚洲研究院 代季峰 林思德 郭百宁 识别图像对人类来说是件极容易的事情,但是对机器而言,这也经历了漫长岁月。 在计算机视觉领域,图像识别这几年的发展突飞猛进。例如,在 PASCAL...

人工智能学家
2018/11/16
0
0
SIGGRAPH Asia 2018:微软亚洲研究院入选论文解读

     编者按:2018年的SIGGRAPH Asia大会于12月4日-7日在日本东京召开,在本届大会上,微软亚洲研究院共有5篇论文被接收,论文内容涵盖利用深度学习来实现从人像照片到肖像漫画的风格迁移...

微软亚洲研究院
2018/12/06
0
0
想让照片里的美女“回头”?清华MIT谷歌用AI帮你实现了

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yH0VLDe8VG8ep9VGe/article/details/82322470 伊瓢 发自 凹非寺 量子位 报道 | 公众号 QbitAI  “麻烦帮我...

量子位
2018/09/02
0
0
计算机视觉与图像处理、模式识别、机器学习学科之间的关系

在我的理解里,要实现计算机视觉必须有图像处理的帮助,而图像处理倚仗与模式识别的有效运用,而模式识别是人工智能领域的一个重要分支,人工智能与机器学习密不可分。纵观一切关系,发现计算...

小金子
2014/07/07
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周五乱弹 —— 姑娘馋的口水都留下来了。

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @且无需多言 :分享Fall Out Boy的单曲《Disloyal Order Of Water Buffaloes》 《Disloyal Order Of Water Buffaloes》- Fall Out Boy 手机党...

小小编辑
35分钟前
9
4
vue 对对象的属性进行修改时,不能渲染页面 vue.$set()

我在vue里的方法里给一个对象添加某个属性时,我console.log出来的是已经更改的object ,但是页面始终没有变化 原因如下: **受现代 JavaScript 的限制 (而且 Object.observe 也已经被废弃),...

Js_Mei
今天
2
0
开始看《Java学习笔记》

虽然书买了很久,但一直没看。这其中也写过一些Java程序,但都是基于IDE的帮助和对C#的理解来写的,感觉不踏实。 林信良的书写得蛮好的,能够帮助打好基础,看得出作者是比较用心的。 第1章概...

max佩恩
昨天
12
0
Redux 三大原则

1.单一数据源 在传统的MVC架构中,我们可以根据需要创建无数个Model,而Model之间可以互相监听、触发事件甚至循环或嵌套触发事件,这些在Redux中都是不被允许的。 因为在Redux的思想里,一个...

wenxingjun
昨天
8
0
跟我学Spring Cloud(Finchley版)-12-微服务容错三板斧

至此,我们已实现服务发现、负载均衡,同时,使用Feign也实现了良好的远程调用——我们的代码是可读、可维护的。理论上,我们现在已经能构建一个不错的分布式应用了,但微服务之间是通过网络...

周立_ITMuch
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部