Dominator Joint и Reverse Dominator Joint дуги

На Control Flow графе можно все дуги пометить как D(dominating, доминирующие) или как J (joint, сочленяющие >:-)) в зависимости от того, какие отношения между узлами, которые они соединяют. Если у нас существует метод определения, доминирует ли один узел другой, то алгоритм пометки всег дуг следующий

BuildDJNode(node)
{
    edge = foreach_outgoing_edge // для каждой исходящей дуги
    {
        node2 = GetEdgeSucc(); // узел, куда дуга указывает
        if (isDom(node,node2) && 
            (node2 != node )) // исключаем самозамыкающиеся дуги
        {
            setD(edge);
        }    
        else
        {
            setJ(edge);
        }
    };
}

Аналогично строится Reverse-Joint пометки для дуг.

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-Share Alike 2.5 License.