有向循环图(F#)的数据结构和算法

Ben*_*jol 5 algorithm f# directed-graph data-structures

我正在尝试分析一个应用程序,其中程序集引用应该是有向非循环图,但不是.还有一个相关的问题,即子组件引用了一个子组件的不同版本(想想Escher ......)

我想要做的是分析每个组件 - 子组件对,并建立一个错误的图片.

我需要一些关于什么是良好的数据结构的指导.我不太确定我可以构建一个不可变的那个,但是我不介意在内部将它变为可变,然后在最后转换为不可变的.

问题的另一部分是我应该使用什么样的算法来填充数据结构,然后用于"分析"问题.

Dmi*_*mov 1

你想做的就是所谓的“拓扑排序”。维基百科有一个很好的概述:

http://en.wikipedia.org/wiki/Topological_sort