自动几何推理的研究(一)
自动几何推理的研究(一)
刘军兴 发表于3年前
自动几何推理的研究(一)
  • 发表于 3年前
  • 阅读 15
  • 收藏 0
  • 点赞 0
  • 评论 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)加入到待搜索的数据队列中.

 

共有 人打赏支持
粉丝 55
博文 141
码字总数 220645
×
刘军兴
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: