Bağımlılık çözünürlüğünde paralel öğeler elde etme


13

Bağımlılık çözümü için kullandığım Wikipedia makalesine dayalı bir topolojik sıralama uyguladım , ancak doğrusal bir liste döndürür. Bağımsız yolları bulmak için ne tür bir algoritma kullanabilirim?


1
Bunu çözmenin bir yolu, grafikteki düğümleri aktörler olarak modellemek ve bazı aktör kütüphanelerinin sıralamayı halletmesine izin vermektir.
svick

Yanıtlar:


16

Bir kenar varsayalım bu araçlar u sahip önce çalıştırılacak v . Durum böyle değilse, tüm kenarları çevirin. Ayrıca, bağımlılık göz önüne alındığında iyi bir yürütme stratejisine kıyasla yollarla (zaten DAG tarafından verilenler) daha az ilgilendiğinizi varsayıyorum.(u,v)uv

SiG=(V,E)

S0={vVuV.(u,v)E}Si+1={vVuV.(u,v)Euk=0iSk}

k

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

S0

parallel foreach T in S_0
  recursive_execute T

nerede

recursive_execute T {
  atomic { if T.count++ < T.indeg then return }
  execute T
  parallel foreach T' in T.succ
    recursive_execute T'
}

ve daha önce yapılmış olanların sayısı, önceden gelenlerin sayısı ve halefler kümesini T.counttutan basit bir sayaçtır .TT.indegT.succ

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.