의존성 해결에서 병렬 항목 가져 오기


13

의존성 해결에 사용 하는 Wikipedia 기사 를 기반으로 토폴로지 정렬을 구현 했지만 선형 목록을 반환합니다. 독립 경로를 찾기 위해 어떤 종류의 알고리즘을 사용할 수 있습니까?


1
이를 해결하는 한 가지 방법은 그래프에서 노드를 액터 로 모델링하고 일부 액터 라이브러리가 순서를 처리하도록하는 것입니다.
svick 2016 년

답변:


16

edge v 보다 먼저 u 가 실행되어야 한다고 가정합니다 . 그렇지 않은 경우 모든 모서리를 돌립니다. 또한 종속성이있는 좋은 실행 전략보다 경로에 관심이 덜하다고 가정합니다 (DAG가 이미 제공 한 경로).(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

어디

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

T.count전임자 수 들고 간단한 카운터이며 T, 이는 이미 실행 된 T.indegpredeccessors 수와 T.succ후속의 세트.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.