这两天调研了下基于图结构的计算方式,并以图结构的方式实现了简单的算式计算,具体过程如下文。

图结构构成

  1. 使用简单的将所有节点通过数组或链表进行管理起来
  2. 使用二维数组将节点之间的关系进行管理。
  3. 简单实现 BFS及DFS
  4. 通过查找依赖关系来构成执行顺序图
    如下图:
数据存储表

其数据结构图如下图:

图结构

因此对于简单图结构来说,通过与节点等数量维度的二维数组能完整的描述图结构的所有关系。

执行图过程

对于计算使用的算式来说,算式中的加减优先级很重要,因此需要通过对优先级进行图的优化,如下为a + b * c 算式的优化过程图:

a + b * c 图优化过程

本文仅对图进行简单介绍及实现,详细请参见代码
上述的基本实现参考 Tanuki(狸)

如下是简单实现的样例代码:

GraphEngine engine = new GraphEngine();
engine.appendField("a", AnyObject.valueOf(2));
engine.appendField("b", AnyObject.valueOf(3));
engine.appendField("c", AnyObject.valueOf(4));
engine.appendField("d", AnyObject.valueOf(5));
engine.dumpFieldList();
String func = "a + b";
System.out.println(String.format("%s = %s", func, engine.exec(func)));
func = "a + b * c";
System.out.println(String.format("%s = %s", func, engine.exec(func)));
func = "( a + b ) * c";
System.out.println(String.format("%s = %s", func, engine.exec(func)));
func = "( ( a + b ) * c ) * d";
System.out.println(String.format("%s = %s", func, engine.exec(func)));

基于图结构的计算分析和实现相关推荐

  1. 【Graph4NLP】阿尔伯塔大学博士毕业论文:基于图结构的自然语言处理

    机器之心发布 机器之心编辑部 自然语言处理(Natural Language Processing)是人工智能的核心问题之一,旨在让计算机理解语言,实现人与计算机之间用自然语言进行通信.阿尔伯塔大学( ...

  2. 阿尔伯塔大学博士毕业论文:基于图结构的自然语言处理

    本文经机器之心(微信公众号:almosthuman2014)授权转载,禁止二次转载 机器之心整理 自然语言处理(Natural Language Processing)是人工智能的核心问题之一,旨在让 ...

  3. python地铁查询系统_基于图结构实现地铁乘坐线路查询

    基于图结构实现地铁乘坐线路查询 github-python算法和flaskapp部分:repo github-android部分:repo flaskapp接口文档:传送门 深度了解Dijkstra优 ...

  4. 基于图结构实现地铁乘坐线路查询

    基于图结构实现地铁乘坐线路查询 github-python算法和flaskapp部分:repo github-android部分:repo flaskapp接口文档:传送门 深度了解Dijkstra优 ...

  5. 基于图结构的图合成与差分隐私【LDPGen】

    <Generating Synthetic Decentralized Social Graphs with Local Differential Privacy> 论文笔记 写在前面的话 ...

  6. 【点云系列】基于图结构的点云快速重采样 翻译

    原文:Fast Resampling of 3D Point Clouds via Graphs 原文链接:arxiv链接 摘要 为了较少存储.处理过程中和大尺度点云的消耗,我们提出了一种随机重采样策 ...

  7. 基于图嵌入的兵棋联合作战态势实体知识表示学习方法

    基于图嵌入的兵棋联合作战态势实体知识表示学习方法 人工智能技术与咨询 来源:<指挥控制与仿真>,作者王保魁等 摘 要:为将基于离散符号的兵棋联合作战态势实体知识表示为机器更加容易学习.处理 ...

  8. windows进程管理器_面向Windows,Linux,Mac ,安卓, 木马,密码破解内存提取基于KPCR结构的技术研究...

    Windows内存分析原理 内存镜像存储的是二进制数据,内存取证分析的任务就是从这些貌似毫无意义的二进制数据中找到系统的运行信息.这些二进制数据从根本上说,其来源都是操作系统的内存分配.为何分配.如何 ...

  9. [论文阅读] (27) AAAI20 Order Matters: 基于图神经网络的二进制代码相似性检测(腾讯科恩实验室)

    <娜璋带你读论文>系列主要是督促自己阅读优秀论文及听取学术讲座,并分享给大家,希望您喜欢.由于作者的英文水平和学术能力不高,需要不断提升,所以还请大家批评指正,非常欢迎大家给我留言评论,学 ...

最新文章

  1. Git之提交项目到远程github
  2. movsb movsw movsd 指令详解
  3. oracle:sql约束
  4. CPU的核心数、线程数的关系和区别
  5. 编程界的“马太效应”,是什么在阻止你变得更加优秀?
  6. AOP概述及实现原理
  7. 一个程序员年近四十岁的一些胡思乱想
  8. 《大数据》致谢审稿专家
  9. 红旗linux apt,红旗 Linux 系统 V11 社区预览版(0122)发布
  10. 乐优商城项目实战系列笔记1-项目搭建
  11. 2017年腾讯笔试题目
  12. 计算机桌面图标有小锁如何去掉,去掉电脑桌面图标小黄锁的两种方法
  13. Java 性能优化之——缓冲区如何让代码加速
  14. 三只松鼠商品评论分析
  15. 【推荐系统】DUPN:Deep User Perception Network
  16. 【Python】Decision on buying cars COROLLA or LEVIN(数据分析技术实现过程之·2 data_analysis①)
  17. 假期最后一天!Go1.16 重磅发布,新版本特性一览
  18. abaqus基于已有模型仿真
  19. python firefly 游戏引擎 教程(二) 程序入口
  20. 时间机器能成为现实么?

热门文章

  1. python怎么安装包-安装python第三方包
  2. python拼音怎么写-Python 中拼音库 PyPinyin 的用法
  3. LeetCode Remove Duplicates from Sorted List
  4. 题目1483:求最大最小数
  5. C#实现局部峰值查找,功能对应Matlab中的findpeaks.m
  6. Android之自定义View以及画一个时钟
  7. linux下获取本机的获取内网和外网地址
  8. Ubuntu 出现apt-get: Package has no installation candidate问题
  9. 重读The C programming Lanuage 笔记三:简单计算器程序
  10. tomcat服务器上https的SSL证书安装配置