Tôi đã triển khai một loại cấu trúc liên kết dựa trên bài viết Wikipedia mà tôi đang sử dụng để phân giải phụ thuộc, nhưng nó trả về một danh sách tuyến tính. Tôi có thể sử dụng loại thuật toán nào để tìm các đường dẫn độc lập?
Tôi đã triển khai một loại cấu trúc liên kết dựa trên bài viết Wikipedia mà tôi đang sử dụng để phân giải phụ thuộc, nhưng nó trả về một danh sách tuyến tính. Tôi có thể sử dụng loại thuật toán nào để tìm các đường dẫn độc lập?
Câu trả lời:
Tôi giả sử rằng một cạnh có nghĩa là bạn phải được thực hiện trước v . Nếu đây không phải là trường hợp, xoay quanh tất cả các cạnh. Hơn nữa, tôi giả định rằng bạn ít quan tâm đến các đường dẫn (những đường dẫn đã được DAG đưa ra) so với một chiến lược thực hiện tốt với các phụ thuộc.
for i=0 to k
parallel foreach T in S_k
execute T
- và đồng bộ hóa / giả mạo trong các nút có một số cạnh đến / đi:
parallel foreach T in S_0
recursive_execute T
Ở đâu
recursive_execute T {
atomic { if T.count++ < T.indeg then return }
execute T
parallel foreach T' in T.succ
recursive_execute T'
}
và T.count
là một bộ đếm đơn giản nắm giữ số lượng người tiền nhiệm T
đã được thực hiện, T.indeg
số lượng người tiền nhiệm và T.succ
bộ người kế nhiệm.