เล็มม่า:หากมีขอบ V -> Y และ Y ก็เป็นตัวสืบทอดทางอ้อมของ V เช่น (V -> W -> + Y) ดังนั้นขอบ V -> Y เป็นสกรรมกริยาและไม่ได้เป็นส่วนหนึ่งของรากสกรรมกริยา
วิธีการ:ติดตามการปิดสกรรมกริยาของแต่ละจุดสุดยอดการทำงานจากขั้วไปยังจุดเริ่มต้นในลำดับทอพอโลยีย้อนกลับ เซตของผู้สืบทอดทางอ้อมของ V คือการรวมตัวกันของการปิดสกรรมกริยาของผู้สืบทอดโดยตรงของ V. การปิดสกรรมกริยาของ V คือการรวมกันของผู้สืบทอดทางอ้อมและผู้สืบทอดที่เป็นปัจจุบัน
ขั้นตอนวิธีการ:
    Initialise Visited as the empty set.
    For each vertex V of G, 
        Invoke Visit(V).
    Visit(V):
        If V is not in Visited,
            Add V to Visited, 
            Initialise Indirect as the empty set,
            For each edge V -> W in G,
                Invoke Visit(W),
                Add Closure(W) to Indirect.
            Set Closure(V) to Indirect.
            For each edge V -> W in G,
                Add W to Closure(V),
                If W is in the set Indirect,
                    Delete the edge V -> W from G.
นี่ถือว่าคุณมีวิธีที่มีประสิทธิภาพในการติดตามชุดของจุดยอด (เช่นแผนที่บิต) แต่ฉันคิดว่าสมมติฐานนี้ทำในอัลกอริทึมO (V + E) อื่น ๆด้วย
ผลข้างเคียงที่มีประโยชน์ที่อาจเป็นประโยชน์คือพบว่าการปิด transitive ของแต่ละจุดยอดของ G