数据流分析中的Distributive Dataflow Problems
2017-11-08 21:23
162 查看
Distributive Data flow Problems
一个数据流问题包括如下几部分:CFG
数据流值的值域
初始的数据流值
交汇运算(用于将前驱或者后继节点的值进行“交汇”)
传输函数
而Distributive Data flow(可分配数据流问题)问题就是关于交汇运算和传输函数的问题,可分配数据流问题有如下等式:
也就是传输函数trans在交汇运算U上是可分配的。判断数据流问题是否可分配很重要,因为可分配的数据流分析可以使用MFP(Maximal Fixed Point)求解,并且此时MFP等同于MOP(Meet Over All paths),其中Gen-Kill问题都是可分配数据流问题。。图灵完备的程序语言有循环,所以MOP通常情况下都是没有有效的解法的。
MFP vs MOP
MFP(Maximal Fixed Point)方法是一种次优的数据流问题解决办法,MFP、MOP以及精确解的关系如下公式所示。MOP(meet over all paths)从字面意思上也能够理解,就是考虑所有的路径,然后在所有的路径上应用传输函数,最后在进行交汇运算,MOP的公式如下所示。
程序的路径有可能是无限的,所有MOP并不一定存在有效的解法,但是MFP是MOP的一种conservatively approximates。
但是要注意的是MOP也是Ideal值的一种conservatively approximates,只要CFG中存在这样一条边,MOP都会将这条边纳入到考虑范围之内。
由于MOP多考虑了不可能执行的路径,所以能够得到更加保守地解。例如对于到达定值来说,多考虑了不可能执行的路径,多出来的路径会交汇(并操作)更多的值,在到达定值的格中,越多的到达定值集合实际“越小”;而对于可用表达式,多考虑了不可能执行的路径,多出来的路径由于交汇运算(交运算)会得到更少的可用表达式,在可用表达式的格中,越少的可用表达式集合“越小”,所以MOP是安全的。
注:上图盗自http://www.cs.cmu.edu/~15745/lectures/L6-Foundations-of-Dataflow.pdf
但是如果数据流问题不是可分配的,那么MFP就不等于MOP,例如下面的问题,
使用MFP算法,过早的进行交汇运算,最后我们并不能得到c的值是多少,但是MOP,先考虑所有路径,得到两条路径c的值为5,再聚合得到c的值就是5。另外关于MFP的收敛速度,可以参照[2],或者参照前面关于后序和逆后序的文章。
参考资料
[1] http://pages.cs.wisc.edu/~horwitz/CS704-NOTES/2.DATAFLOW.html[2] http://www.cs.cmu.edu/~15745/lectures/L6-Foundations-of-Dataflow.pdf
[3] https://www.youtube.com/watch?v=t4MKLiiSk-k&t=341s
相关文章推荐
- 数据挖掘——亲和性分析
- lr:项目 性能测试中的数据解释与分析
- 数据分析处理开源框架杂谈
- [2.0.0]用户session分析模块之需求分析与数据设计
- linux shell数据重定向(输入重定向与输出重定向)详细分析
- Python数据分析之numpy学习(一)
- 数据分析的广阔前景
- MovieLens 1M之python数据分析练习
- 关于数据分析_管理者的4个常规错误
- 用IBM DWE数据仓库建立数据分析(作者:IT168 张光业 2007-12-24)
- 大数据架构开发 挖掘分析 Hadoop HBase Hive Storm Spark Sqoop
- PIXHAWK源码分析之二—Hello Sky(PIXHAWK读取姿态数据并且显示)
- 网站数据分析的维度和指标
- 数据分析学习之路——(六)用数据分析教你如何买基金(1)
- 小白学数据分析----->渠道、运营、数据_I
- js下获取div中的数据的原理分析
- Ogre的mesh和skeleton文件数据格式分析
- python数据分析实践(四)
- 商业公司应该如何配备数据分析团队?
- 如何组建一支优秀的数据分析团队?