[英]Algorithm for laying out a directed acyclic graph in memory to maxmise data locality
说我有优势
A -> C
A -> D
A -> E
B -> D
B -> E
为了最大化数据局部性,我会安排将DAG按此顺序存储在内存中(作为数组),以最小化节点与其依赖关系之间的距离。
C, A, D, E, B
这样A的距离为1到C,1到D,2到E.
并且B的距离为1到E,2到D.
是否存在执行此操作的算法的名称? 如果没有,那么如何实现呢?
看起来你想要线性化DAG。 我不知道你是否用它来进行依赖性解析。 Topological_sorting
看起来很熟悉您的问题。 程序tsort
也是非常类似的东西。
然而,它是依赖线性化。
neel@gentoo:~$ tsort
C A
D A
E A
D B
E B
C
D
E
B
A
其中打印了必须执行任务的顺序。 如果有一个循环,它可能无法工作。 它的相关性,如你提到它的非循环。
我不知道是否有任何这样的算法用于data locality ordering string
或任何类似但是看起来你的数据位置字符串有一些问题。
如果C
接近(1)到A
并且接近(1)到B
并且B
离A
太远(4)怎么样?如何用数据位置字符串表示它?
我现在不知道你究竟想做什么。 如果要对依赖关系进行liniarize以按正确顺序执行任务,请执行拓扑排序。
这是改善地方的略有不同的方法:
http://ceur-ws.org/Vol-733/paper_pacher.pdf
所描述的算法似乎更接近于力导向图绘制算法而不是拓扑排序。
您还应阅读有关内存图数据库(如imGraph)的论文
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.