Loading AI tools
来自维基百科,自由的百科全书
在计算机科学中,控制流图的一个节点(基本块) d 支配节点 n,当且仅当从开始节点(可以理解为源)到节点 n的每一条路径均要经过节点d,写作d dom n (一写作d n)。根据上述定义,容易得到每个节点均支配其自身。
1 | dom | 1 | 2 | 3 | 4 | 5 | 6 |
---|---|---|---|---|---|---|---|
2 | dom | 2 | 3 | 4 | 5 | 6 | |
3 | dom | 3 | |||||
4 | dom | 4 | |||||
5 | dom | 5 | |||||
6 | dom | 6 | |||||
支配关系图 | |||||||
灰色节点 表示非严格支配 | |||||||
红色节点 表示直接支配 |
一些相关概念:
一般而言,会使用 Tarjan 算法在 的时间内将其求出
首先来介绍一些这个算法的大概步骤
用 idom[x] 表示点 的直接支配节点,用 semi[x] 表示点 的半必经点。
那什么是半必经点呢?
對於一個節點 ,存在某個點 能夠通過一系列點 (不包含 和 )到達點 且 ,就稱 是 的半必經點,記做 semi[Y]=X
当然一个点的“半必经点” 会有多个,而且这些半必经点一定是搜索树中点 的祖先。
对于每个点,只需要保存其半必经点中最小的一个,下文中用表示点的半必经点中值最小的点的编号。
可以更书面一点的描述这个定理:
计算机科学中支配的概念第一次被提出是在Reese T. Prosser在1959年一篇关于流网络的论文中提出的[1] 而在此论文中,Prosser并未提出一种有效算法以计算支配关系,解决这一问题的有效算法直到十年后才被 Edward S. Lowry and C. W. Medlock[2] 提出。Ron Cytron等人在1989年将其应用于高效计算应用于静态单赋值形式的φ 函数时对其重新燃起了兴趣。[3]
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.