Bổ đề: Nếu có cạnh V -> Y và Y cũng là một người kế thừa gián tiếp của V, (ví dụ: V -> W -> + Y) thì cạnh V -> Y là bắc cầu và không phải là một phần của gốc chuyển tiếp.
Phương pháp: Theo dõi quá trình đóng bắc cầu của từng đỉnh, làm việc từ đầu đến đỉnh ban đầu theo thứ tự tôpô ngược. Tập hợp những người kế thừa gián tiếp của V là sự kết hợp của sự đóng cửa tạm thời của những người kế vị trực tiếp của V. Sự đóng cửa quá độ của V là sự kết hợp của những người kế thừa gián tiếp và những người kế thừa trực tiếp của nó.
Thuật toán:
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.
Điều này giả định rằng bạn có một số cách hiệu quả để theo dõi các tập hợp đỉnh (ví dụ: bản đồ bit), nhưng tôi nghĩ giả định này cũng được thực hiện trong các thuật toán O (V + E) khác.
Một tác dụng phụ có khả năng hữu ích là nó tìm thấy sự đóng kín quá độ của từng đỉnh G.