Nhận các mục song song trong độ phân giải phụ thuộc


13

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?


1
Một cách để giải quyết điều này là mô hình hóa các nút trong biểu đồ dưới dạng các tác nhân và để một số thư viện diễn viên đảm nhận việc sắp xếp thứ tự.
Svick

Câu trả lời:


16

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.(bạn,v)bạnv

STôiG= =(V,E)

S0= ={vV|bạnV.(bạn,v)E}STôi+1= ={vV|bạnV.(bạn,v)Ebạnk= =0TôiSk}

k

for i=0 to k
  parallel foreach T in S_k
    execute T

S0 - 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'
}

T.countlà 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.indegsố lượng người tiền nhiệm và T.succbộ người kế nhiệm.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.