Một số Trực giác về những cái Tarjan Thuật toán:
Trong DFS, khi chúng ta gặp phải một lợi thế cạnh trở lại từ đỉnh v, chúng tôi cập nhật tổ tiên có thể truy cập thấp nhất tức là chúng tôi cập nhật giá trị của thấp [v]
Bây giờ khi tất cả các cạnh đi của đỉnh được xử lý tức là chúng ta sắp thoát lệnh DFS cho đỉnh v, chúng ta kiểm tra giá trị của [v] thấp, dù thấp [v] == v (Giải thích dưới đây) . Nếu không có nghĩa là v không phải là gốc của SCC và bây giờ chúng tôi cung cấp lợi ích cho cha mẹ của v.đến tổ tiên có thể truy cập thấp nhất của cha mẹ [v] bây giờ đã được thay đổi thành [v] thấp.
này nghe có vẻ logic như thể mặc dù không có lợi thế cạnh lại trực tiếp từ cha mẹ [v] để tổ tiên của v, nhưng có một con đường (cạnh sau của v + cạnh đối v) qua đó phụ huynh [v] vẫn có thể tiếp cận tổ tiên của v. Vì vậy, chúng tôi cũng đã cập nhật [parent [v]] thấp ở đây. Vì vậy, chúng tôi sẽ tiếp tục cập nhật chuỗi này và [v] thấp cho tất cả v sẽ tiếp tục cập nhật cho đến khi chúng tôi tiếp cận với tổ tiên (thông qua backtracking). Đối với tổ tiên này thấp [v] sẽ bằng v. Và do đó điều này sẽ hoạt động như là gốc của SCC.
Hy vọng điều này sẽ giúp
Nguồn
2014-05-17 05:55:28
Xin lỗi vì liên kết bị hỏng, không biết cách làm cho nó hoạt động. Vui lòng chỉ sao chép toàn bộ liên kết. –
Cố định liên kết bị hỏng; sử dụng biểu tượng "Quả cầu" để sử dụng URL cụ thể trên văn bản đã chọn. :) – Akarun
Lưu ý. Cảm ơn bạn :) –