定义
支配边界是指在支配树中,一个节点的所有非直接支配的子节点集合
具体来说,对于支配树中的一个节点(n),其支配边界(DF(n)) 是这样的节点集合
- 这些节点被(n)支配,但它们有一个或多个子节点不被(n)支配
例子
entry
| \
A B
| \
C D
在这个图中,假设节点(A)和(B)是从入口节点(entry)分支出来的,而(C)和(D)是(A)的子节点,(A) 支配(C) 和 (D)
在这个例子中
-
DF(entry) = {A, B}. 因为 entry 支配 A 和 B,但是 A 和 B 有各自的子节点(C, D),这些子节点不被 entry 支配
-
DF(A) = {C, D}. 因为 A 支配 C 和 D,但 C 和 D 没有子节点,所以它们没有支配边界
-
B、C 和 D 没有支配边界,因为它们没有子节点或者没有其他节点支配它们
代码例子
function calculateDominanceFrontier(node n):
frontier = empty set
for each child c of n:
if c has a descendant that is not dominated by n:
add c to frontier
return frontier