저는 작업 기반 병렬 컴퓨팅을 연구 중이며 오래된 프로젝트 관리 문제의 변형에 관심이있었습니다 - AOV (critical-activity-on-vertex) 프로젝트 네트워크는 교착 상태 사이클이 없다면 토폴로지 정렬 알고리즘을 사용하여 계산할 수 있습니다. 임계 경로에있는 활동의 총 시간은 프로젝트의 최소 완료 시간을 제공합니다.새로운 프로젝트 관리 알고리즘이 한정된 수의 직원을 필요로했습니다
그러나 이것은 우리가 항상 서로에게 의존하지 않고 활동을 마무리하는 데 충분한 인력을 고용하고 있다고 가정합니다. 사용할 수있는 작업자 (프로세서/코어)의 수가 제한적일 경우 특정 작업은 의존하는 활동이 아직 완료되지 않았기 때문에가 아니라 단순히 모든 작업자가 다른 활동을 수행하기 때문에 바쁠 수 있습니다. 이것은 오늘날의 멀티 코어 병렬 컴퓨팅을위한 단순화 된 모델입니다. 모든 활동을 수행해야하는 직원이 단 한 명이라면 프로젝트 완료 시간은 모든 활동의 총 시간입니다. 우리는 그런 식으로 싱글 코어 직렬 컴퓨팅으로 돌아 왔습니다.
제한된 수의 근로자를 사용할 수있는 경우 AOV 네트워크의 최소 완료 시간을 제공하는 효율적인 알고리즘이 있습니까? 어떻게 할 수있는 활동이 나중에 더 많은 근로자들의 공회전 시간을 최소화 할 수 있도록 근로자의 수보다 많을 때 먼저해야 할 활동을 현명하게 선택해야합니까? 최소 시간은 임계 경로 시간 (무한 작업자)과 모든 활동의 총 시간 (한 명의 작업자) 사이의 어딘가에 있어야합니다. 또한 전체 시간을 근로자 수로 나눈 값 (공회전 없음)보다 커야합니다. 최소 시간을 얻기위한 알고리즘이 있습니까?
나는 유튜브 (YouTube) 동영상을 좀 봤어. 문제는 제한된 리소스 프로젝트 관리의 특별한 경우입니다. 내 문제는 모든 활동이 한 명의 작업자 (프로세서)를 차지한다는 것입니다. 그러나 불행하게도, 그 비디오는 나에게 일반적인 알고리즘을 알려주지 않습니다. 여기서 사용 된 방법은 임계 경로를 변경하지 않고 유동적 인 활동을 이동시켜 일부 제약 조건 하에서 최대 자원 소비율을 줄이는 것입니다. 제약 조건이 매우 낮고 프로젝트를 지연해야하는 경우 항상 가능하지는 않습니다. 어떤 아이디어? –