文档章节

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

刘军兴
 刘军兴
发布于 2015/04/14 17:01
字数 639
阅读 20
收藏 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)加入到待搜索的数据队列中.

 

© 著作权归作者所有

共有 人打赏支持
刘军兴
粉丝 54
博文 184
码字总数 226359
作品 0
昌平
计算机视觉与图像处理、模式识别、机器学习学科之间的关系

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

小金子
2014/07/07
0
0
多位教授牵手FB AI 研究院,机器人实验室毗邻CMU成立

雷锋网 AI 科技评论按:美国时间 2018 年 7 月 17 日,Facebook 首席 AI 科学家 Yann LeCun 在 Facebook 新闻中心发出一篇博文,表示有多位教授将加盟 Facebook AI 研究院,不仅继续提升现有...

杨晓凡
07/18
0
0
想让照片里的美女“回头”?清华MIT谷歌用AI帮你实现了

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

量子位
09/02
0
0
学习人工智能AI需要哪些最基础的知识?

人工智能的定义可以分为两部分,即“人工”和“智能”。“人工”比较好理解,争议性也不大。有时我们会要考虑什么是人力所能及制造的,或着人自身的智能程度有没有高到可以创造人工智能的地步...

qq_32539403
2017/06/20
0
0
学界 | UCSB提出变分知识图谱推理:在KG中引入变分推理框架

  选自arXiv   作者:Wenhu Chen等   机器之心编译   参与:张楚、思源      推理知识图谱中缺失的连接已经吸引了研究界的广泛关注。在本论文中,加州大学圣塔芭芭拉分校的王威廉...

机器之心
03/28
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Redis开发规范

一、键值设计 1.1 key名设计 (1)【建议】: 可读性和可管理性 以业务名(或数据库名)为前缀(防止key冲突),用冒号分隔,比如业务名:表名:id ugc:video:1 (2)【建议】:简洁性 保证语义的前提下...

IT--小哥
6分钟前
0
0
crunch 練習

crunch 10 10 -t 09%%%%%%%% -o tw_mobile_number.lst

BaiyuanLab
22分钟前
0
0
Kafka技术资料总结(不断更新中)

1、Kafka实践:到底该不该把不同类型的消息放在同一个主题中 2、Kafka剖析系列: Kafka剖析(一):Kafka背景及架构介绍 Kafka设计解析(二):Kafka High Availability (上)...

九州暮云
今天
1
0
面向对象设计原则(OOP)

单一职责原则(Single responsibility principle)又称单一功能原则。它规定一个类应该只有一个发生变化的原因。 核心原则:低耦合,高内聚。 一个类,应该只有一个引起它变化的原因,也就是...

gackey
今天
4
0
C++ 锁

C++提供了两种常用的锁,std::lock_guard<Lockable &T>和std::unique_lock<Lockable &T>。通常使用场景下,这两个锁用法一致。即,在构造锁对象时上锁,在析构锁对象时解锁。使用户从上锁/解...

yepanl
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部