繁体   English   中英

在内存中布置有向无环图以最大化数据局部性的算法

[英]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并且BA太远(4)怎么样?如何用数据位置字符串表示它?

我现在不知道你究竟想做什么。 如果要对依赖关系进行liniarize以按正确顺序执行任务,请执行拓扑排序。

这是改善地方的略有不同的方法:

http://ceur-ws.org/Vol-733/paper_pacher.pdf

所描述的算法似乎更接近于力导向图绘制算法而不是拓扑排序。

您还应阅读有关内存图数据库(如imGraph)的论文

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM