文档章节

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

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

 

© 著作权归作者所有

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

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

小金子 ⋅ 2014/07/07 ⋅ 0

学习人工智能AI需要哪些最基础的知识?

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

qq_32539403 ⋅ 2017/06/20 ⋅ 0

学界 | UCSB提出变分知识图谱推理:在KG中引入变分推理框架

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

机器之心 ⋅ 03/28 ⋅ 0

观点 | 专访贝叶斯网络之父Judea Pearl:我是AI社区的「叛徒」

  选自QuantaMagazine   作者:Kevin Hartnett   机器之心编译   参与:路、王淑婷      人工智能领域的先驱、贝叶斯网络之父 Judea Pearl 认为 AI 深陷于概率关联的泥潭,而忽视...

机器之心 ⋅ 05/16 ⋅ 0

emacs lisp 研究 lisp.h (几何画板开发笔记 四)

由于想为所做的几何画板(类)和几何推理引入一种驱动语言,近期研究了 lisp 语言, 其中 emacs lisp 方言的实现看起来规模大小适合,我基本选择它作为研究对象,以 期待能引入到几何软件中。...

刘军兴 ⋅ 2014/05/11 ⋅ 0

从短句到长文,计算机如何学习阅读理解

在电影《她(HER)》中有这样一幕:主人公是一位信件撰写人,人工智能操作系统萨曼莎在得到他的允许后阅读他的邮件资料,总结出需要保留和删除的邮件,帮助他修改信件草稿中的错字,并且与他...

Major术业 ⋅ 2017/05/12 ⋅ 0

几何画板制作二次函数系的方法

在解析几何中研究函数时通常是研究一个函数系共有的特征。单个的几何画板二次函数可以轻易绘制出来,那能不能绘制一个函数系呢?本文就像向大家介绍怎样用几何画板画二次函数系。 例如y=ax²...

学术研究软件 ⋅ 2016/05/13 ⋅ 0

前Google、Apple、Stanford的顶级地图专家加盟,DeepMap公布了一个超豪华的技术顾问委员会阵容

雷锋网(公众号:雷锋网) · 新智驾 2018年2月22日消息,硅谷高精地图与定位技术提供商DeepMap近日对外公布其技术顾问委员会阵容,其技术委员会成员包括美国顶尖的技术专家Brian McClendon,J...

新智驾 ⋅ 02/22 ⋅ 0

自动「脑补」3D环境!DeepMind最新Science论文提出生成查询网络GQN

  选自DeepMind   作者:S. M. Ali Eslami、Danilo Jimenez Rezende   机器之心编译      给定立方体积木的几个侧面剪影,你能否「脑补」出它的整个 3D 形状?这看起来像是行测中的...

机器之心 ⋅ 06/15 ⋅ 0

机器智能加速器:大数据环境下知识工程的机遇和挑战 | 清华李涓子教授

导读:知识图谱已经成为推动人工智能发展的核心驱动力之一。本文选自清华大学计算机科学与技术系教授、清华-青岛数据科学研究院科技大数据研究中心主任李涓子老师于2017年12月20日在阿里联合...

tmb8z9vdm66wh68vx1 ⋅ 2017/12/28 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

如何使用serverchan微信推送告警

之前实现推送告警信息到微信的方法有如下几种: 1、通过企业公众号实现----收费: 2、通过QQ邮箱,在微信平台上开启收到邮件进行提醒; 3、第三方告警平台API,一般也是收费的; 不过最近看文...

问题终结者 ⋅ 33分钟前 ⋅ 0

TCP的RPC

RPC就是远程方法调用(Remote Process Call ),包含了客户端和服务端,涉及了对象的序列化传输。 1.服务端启动,注册远程调用的类2.客户端发送请求信息包含类、方法、参数的一些信息、序列化传...

Cobbage ⋅ 53分钟前 ⋅ 0

IOS-UI UI初步代码布局添加事件

ISO开发界面,UI是必须学习的一部分,其实很早之前想学来了,一直没有沉下心来学习。看到IOS的代码风格和布局就别扭的不行,跟java代码和android布局比较显得不是那么方便,所以一直到现在。...

京一 ⋅ 今天 ⋅ 0

浅谈OpenDaylight的二次开发

OpenDaylight作为一款开源SDN网络控制器,依托于强大的社区支持以及功能特性,成为了目前主流的SDN网络控制器开发平台。在比较稳定的OpenDaylight Helium版本中,已经为开发者提供了大量的网...

wangxuwei ⋅ 今天 ⋅ 0

API 开发中可选择传递 token 接口遇到的一个坑

在做 API 开发时,不可避免会涉及到登录验证,我使用的是jwt-auth 在登录中会经常遇到一个token过期的问题,在config/jwt.php默认设置中,这个过期时间是一个小时,不过为了安全也可以设置更...

等月人 ⋅ 今天 ⋅ 0

Java NIO之文件处理

程序要操作本地操作系统的一个文件,可以分为以下三个部分: 对文件位置的操作 对文件的操作 对文件内容的操作 其中,对文件内容的操作在 Java NIO之Channel 中已经有了介绍,通过FileChann...

士别三日 ⋅ 今天 ⋅ 0

Maven的pom.xml配置文件详解

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.......

小海bug ⋅ 今天 ⋅ 0

解决httpclient超时设置不生效的问题

最近公司有项目需要通过http调用第三方服务,且第三方服务偶有超时,故需要设置一定的超时时间防止不响应的情况出现。 初始设置如下: [java] view plain copy //超时设置 RequestConfig re...

Mr_Tea伯奕 ⋅ 今天 ⋅ 0

过滤器Filter和拦截器HandlerInterceptor

过滤器 依赖于servlet容器。在实现上基于函数回调,可以对几乎所有请求进行过滤,但是缺点是一个过滤器实例只能在容器初始化时调用一次。使用过滤器的目的是用来做一些过滤操作,获取我们想要...

hutaishi ⋅ 今天 ⋅ 0

Redis入门详解(转)

Redis入门详解 Redis简介 Redis安装 Redis配置 Redis数据类型 Redis功能 持久化 主从复制 事务支持 发布订阅 管道 虚拟内存 Redis性能 Redis部署 Redis应用场景 Redis总结 Redis简介: Redi...

xiaoyaoyoufang ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部