基于图结构的计算分析和实现

简介: 这两天调研了下基于图结构的计算方式,并以图结构的方式实现了简单的算式计算,具体过程如下文。图结构构成使用简单的将所有节点通过数组或链表进行管理起来使用二维数组将节点之间的关系进行管理。

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

图结构构成

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

其数据结构图如下图:

img_78210aa81cf272b23d83242c313a1923.png
图结构

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

执行图过程

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

img_0fa6a8bf4cf5c47bbb043d1427161cdd.png
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)));
目录
相关文章
|
8月前
|
机器学习/深度学习 数据挖掘 Python
时序数据的分类及质心的计算
时序数据的分类及质心的计算
116 0
|
8月前
|
数据可视化 算法
R语言近似贝叶斯计算MCMC(ABC-MCMC)轨迹图和边缘图可视化
R语言近似贝叶斯计算MCMC(ABC-MCMC)轨迹图和边缘图可视化
|
18天前
|
机器学习/深度学习 数据可视化 数据挖掘
基于Copula分布的合成数据采样:保持多维数据依赖结构的高效建模方法
本文深入探讨了Copula的基础理论、运作机制及其在数据科学领域的应用。Copula作为一种数学框架,能够将随机变量间的依赖关系与其边际分布分离,特别适用于处理非线性依赖关系或异质分布变量。文章通过年龄与收入的关系分析,展示了Copula在多元分析中的独特优势,并介绍了高斯Copula的具体应用实例。此外,还详细讲解了Copula在合成数据生成中的应用,验证了合成数据在训练机器学习模型时的有效性。
79 18
|
2月前
|
机器学习/深度学习 运维 监控
基于特征子空间的高维异常检测:一种高效且可解释的方法
本文探讨了一种替代传统单一检测器的方法,通过构建多个专注于特征子集(子空间)的检测器系统,来提高异常检测的准确性和效率。文章详细介绍了子空间方法在处理高维数据时的优势,包括缓解维度灾难、提高异常检测的可解释性和计算效率。同时,文中还讨论了子空间的选择策略,如基于领域知识、相关性、随机选择等,并介绍了PyOD工具包中实现子空间异常检测的具体方法。通过这些技术,异常检测系统能够更有效地识别数据中的异常记录,尤其是在特征数量众多的情况下。
50 9
基于特征子空间的高维异常检测:一种高效且可解释的方法
|
8月前
|
算法 数据可视化 前端开发
r语言有限正态混合模型EM算法的分层聚类、分类和密度估计及可视化(下)
r语言有限正态混合模型EM算法的分层聚类、分类和密度估计及可视化
|
8月前
|
算法 数据可视化 数据挖掘
r语言有限正态混合模型EM算法的分层聚类、分类和密度估计及可视化(上)
r语言有限正态混合模型EM算法的分层聚类、分类和密度估计及可视化
|
8月前
|
数据可视化
R语言广义相加模型 (GAMs)分析预测CO2时间序列数据
R语言广义相加模型 (GAMs)分析预测CO2时间序列数据
|
8月前
|
运维 算法 C++
时间序列分解和异常检测方法应用案例
时间序列分解和异常检测方法应用案例
|
8月前
|
运维 算法 C++
R语言时间序列分解和异常检测方法应用案例
R语言时间序列分解和异常检测方法应用案例
|
8月前
|
数据可视化 数据挖掘
R语言混合线性模型、多层次模型、回归模型分析学生平均成绩GPA和可视化
R语言混合线性模型、多层次模型、回归模型分析学生平均成绩GPA和可视化