计算机科学中,在控制流程图里,如果从起始节点到n的每条路径均经过节点d,那么节点d支配节点n 。使用符号,可以这样表达: d dom n (或有时 d >> n)。根据定义,每个节点支配它自己。
有几个相关的概念:
节点n的支配者由以下数据流方程的最大解给出:
Dom(n0) = {n0}
Dom(n) = {n} .....
其中 n0 是起始节点。
起始节点的支配者就是起始节点本身。任何其他节点n的支配集是n的所有前驱节点p的支配集的交集。节点n也在n的支配集中
一种直接求解的算法如下:
//开始节点的支配者是开始本身 Dom(n0)= {n0} //对于所有其他节点,将所有节点设置为支配者 for each n in N - {n0} Dom(n)= N; //迭代地s删除不是支配者的节点 while changes in any Dom(n) for each n in N - {n0}: 对于pred(n)中的所有p,Dom(p)的相交部分与Dom(n) = {n}做并集操作
直接求解法复杂度是节点数的平方,即0(n2)。 Lengauer 和Tarjan 开发了一种几乎是线性的算法,[7] 在实际应用中,除了一些人造的图外,该算法和其简化版本在所有大小的图上可做到和其他任何已知算法一样快甚至更快,并且它的优势随着图大小的增加而变得更突出。[7]
莱斯大学的基思·库珀(Keith D. Cooper)、蒂莫西·哈维(Timothy J. Harvey)和肯·肯尼迪 (Ken Kennedy)还描述了一种算法,该算法根本上解出了上述数据流方程,但使用了精心设计的数据结构以提高性能。[8]
与前面"支配"的定义相似,如果一个节点n到图结束节点的所有路径皆经过某节点z,那么 z 就后支配节点n 。同样地,节点n的直接后支配者 是n的后支配者节点,并满足不严格后支配任何其他n的严格后支配者节点的条件。
^Prosser, Reese T. (1959). "Applications of Boolean matrices to the analysis of flow diagrams". AFIPS Joint Computer Conferences: Papers Presented at the December 1–3, 1959, Eastern Joint IRE-AIEE-ACM Computer Conference. IRE-AIEE-ACM '59 (Eastern): 133–138. doi:10.1145/1460299.1460314..
^Lowry, Edward S.; Medlock, Cleburne W. (January 1969). "Object code optimization". Communications of the ACM. 12 (1): 13–22. doi:10.1145/362835.362838..
^Cytron, Ron; Hind, Michael; Hsieh, Wilson (1989). "Automatic Generation of DAG Parallelism". Proceedings of the ACM SIGPLAN 89 Conference on Programming Language Design and Implementation: 54–68. CiteSeerX 10.1.1.50.9287..
^"Dominator Tree". eclipse.org. SAP AG and IBM Corporation. 2012 [2008]. Retrieved 21 June 2013..
^Teslenko, Maxim; Dubrova, Elena (2005). An Efficient Algorithm for Finding Double-Vertex Dominators in Circuit Graphs. Proceedings of Design and Test in Europe Conference. Date '05. pp. 406–411. CiteSeerX 10.1.1.598.3053. doi:10.1109/DATE.2005.53. ISBN 9780769522883..
^Dubrova, Elena (2005). Structural Testing Based on Minimum Kernels. Proceedings of Design and Test in Europe Conference. Date '05. pp. 1168–1173. CiteSeerX 10.1.1.583.5547. doi:10.1109/DATE.2005.284. ISBN 9780769522883..
^Lengauer, Thomas; and Tarjan; Robert Endre (July 1979). "A fast algorithm for finding dominators in a flowgraph". ACM Transactions on Programming Languages and Systems. 1 (1): 121–141. CiteSeerX 10.1.1.117.8843. doi:10.1145/357062.357071..
^Cooper, Keith D.; Harvey, Timothy J; Kennedy, Ken (2001). "A Simple, Fast Dominance Algorithm" (PDF)..
暂无