Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 安排可以并行完成的任务_Algorithm_Sorting - Fatal编程技术网

Algorithm 安排可以并行完成的任务

Algorithm 安排可以并行完成的任务,algorithm,sorting,Algorithm,Sorting,我有一个任务列表,每个任务都有一个依赖于此任务的任务列表,以及完成任务所需的时间 我有n个处理器,正在努力争取最快的时间完成所有任务 例如: 任务1->任务2和任务3取决于此,需要10秒 任务2->无相关任务,耗时5秒 任务3->无相关任务,耗时10秒 任务4->无相关任务,耗时12秒 我有两个处理器 最快完成的时间是20秒。任务1和任务4并行运行。任务1完成时运行任务3,任务4完成时运行任务2 我考虑过首先使用拓扑排序来获得需要首先完成的任务的列表,然后比较所有可以运行的任务的时间,选择时间最

我有一个任务列表,每个任务都有一个依赖于此任务的任务列表,以及完成任务所需的时间

我有n个处理器,正在努力争取最快的时间完成所有任务

例如:

任务1->任务2和任务3取决于此,需要10秒

任务2->无相关任务,耗时5秒

任务3->无相关任务,耗时10秒

任务4->无相关任务,耗时12秒

我有两个处理器

最快完成的时间是20秒。任务1和任务4并行运行。任务1完成时运行任务3,任务4完成时运行任务2

我考虑过首先使用拓扑排序来获得需要首先完成的任务的列表,然后比较所有可以运行的任务的时间,选择时间最长的任务并首先执行这些任务


有什么想法吗?

可能重复@EyalShulman:这个问题是相关的,但既不是特例,也不是这个问题的概括:与这个问题不同,它限制了哪些任务可以分配给哪些处理器,但它也假设每个任务占用相同的时间。如果你假装有无限多个处理器,最短完成时间由关键路径给出,对于m边DAG,可以很容易地在O(m)时间内计算出关键路径。(顺便说一句,这为您提供了一个很好的下限。)对于单个处理器,拓扑排序(很容易)为您提供了最佳解决方案。我似乎记得读过这样一篇文章:2处理器变量可以在多项式时间内得到最优解,但对于3个或更多处理器,问题是NP难的:(这回答了你的问题吗?@EyalShulman的可能重复:这个问题是相关的,但既不是特例,也不是这个问题的概括:与这个问题不同,它限制了哪些任务可以分配给哪些处理器,但它也假设每个任务占用相同的时间。如果你假装你有无限多的pro最短完成时间由关键路径给出,对于m边DAG,可以很容易地在O(m)时间内计算出关键路径。(顺便说一句,这给了您一个很好的下界。)对于单处理器,拓扑排序(很容易)给你一个最优的解决方案。我似乎记得读过这样一篇文章:2处理器的变体可以在多项式时间内得到最优解,但对于3个或更多处理器,这个问题是NP难的:(这回答了你的问题吗?