抽象的问题:
我有一个有向无环图(DAG),其中包含查询时互斥的顶点子集(每个子集只有一个项目应该出现在查询的结果中)。当我查询图结构时,我想获取从给定顶点流出的一组顶点,同时只从图中顶点的已知子集中选择一个项目。
具体问题:
我有一个 DAG,用于存储我的程序集(顶点)及其依赖项(边)。给定一个程序集或一组程序集,我需要查询以获取所有涉及的程序集及其依赖项的集合。困难的部分是每个程序集都有多个版本,并且只能将程序集的一个实例加载到进程中。给定程序集的依赖关系在程序集的各个版本之间发生变化。
这个问题或问题组有名称吗?我可以研究以找到解决方案的标准算法?
可能的解决方案领域:
传递闭包似乎接近一个很好的解决方案,但从子集(程序集版本)中选择的项目将根据通过图的路径(可能通过多个分支)而改变,因此您几乎需要跟踪通过图的路径以生成传递闭包。
图形数据库可能会提供很多帮助,但我们现在希望避免走这条路,除非我们绝对必须这样做。