Directed Acylic Graphs with a single entry vertex and a single exit vertex (st-DAGs) have many applications. For instance, they are frequently used for modelling flow problems or precedence conditions among tasks, work packages, etc.. This paper presents an algorithm for finding special types of subgraphs in such st-DAGs, called clusters. Knowing the clusters of a given st-DAG is very useful during DAG analysis. Clusters are characterized by a kind of synchronizing behaviour at their entry border and at their exit border. In this context, we introduce the notion of syncpoint, a type of synchronisation point within a DAG, and for a given st-DAG we construct a second DAG, called MSP-DAG, whose edges are given by the precedence relation among maximum size syncpoints (MSPs). Our new cluster finding algorithm searches for clusters between potential pairs of enclosing MSPs. The efficiency of the algorithm stems from the fact that it works on the MSP-DAG, which is usually much smaller than the original st-DAG. The paper includes a thorough complexity analysis of the algorithm's runtime, which turns out to be quadratic in the number of DAG vertices and exponential in the number of MSP-DAG vertices. There is also a section reporting on experiments with randomly generated DAGs, which shows the practical applicability of the algorithm and confirm our theoretical findings.
翻译:具有单一入口顶点和单一出口顶点的有向无环图(st-DAGs)具有广泛应用。例如,它们经常被用于建模流问题或任务、工作包等之间的前驱条件。本文提出了一种算法,用于在这些st-DAGs中寻找称为簇的特殊子图类型。在DAG分析过程中,了解给定st-DAG的簇非常有用。簇以其入口边界和出口边界上的同步行为为特征。在此背景下,我们引入了同步点的概念,即DAG内部的一种同步点类型,并针对给定的st-DAG构建了第二个DAG,称为MSP-DAG,其边由最大规模同步点(MSP)之间的前驱关系定义。我们新的簇发现算法在潜在的包围性MSP对之间搜索簇。该算法的高效性源于其在MSP-DAG上运行,而MSP-DAG通常比原始st-DAG小得多。本文对算法运行时的复杂度进行了详尽分析,结果表明其复杂度在DAG顶点数上呈二次关系,在MSP-DAG顶点数上呈指数关系。此外,还包含一节关于随机生成DAG的实验报告,展示了算法的实际适用性,并验证了我们的理论发现。