我试图形成一个任务链(由数字索引)给定一个任务对列表。你知道吗
在以下列表中:
[[1, 3],
[2, 3],
[3, 4],
[4, 5],
[4, 8],
[5, 6],
[6, 7],
[6, 10],
[7, 11],
[7, 12],
[8, 9],
[8, 11],
[9, 13],
[9, 10],
[11, 13],
[12, 15],
[13, 14],
[14, 16],
[14, 19],
[14, 20],
[15, 17],
[15, 22],
[16, 18],
[17, 18],
[17, 23],
[18, 25],
[19, 22],
[20, 21],
[20, 25],
[21, 22],
[21, 24],
[23, 25]]
数字代表可用的任务(例如任务1、任务2、。。。,任务25)和优先级关系(如任务1后接任务3,任务2后接任务3等)
我希望使用python找到这个列表中所有可能的任务链,我遇到了一些困难。我遇到了问题,我目前的想法是,我从一开始就形成新的任务链列表,并在一个任务有多个后续任务时复制它们。但是,我不确定如何确保每个新复制的列表接收不同的后续列表,以及如何再次迭代运行每个列表。你知道吗
以下代码是我当前的尝试:
> Initial = []; Task_Chain = []
> for i in range(1,26):
> create = 0
> for k in Precedence:
>
> if i != k[1]:
> create += 1
>
> if create == len(Precedence):
> Initial.append([i])
>
> cont = True
> while cont == True:
> count = 0
> successors = []
>
> for i in Initial:
>
> for k in Precedence:
> if i[-1] == k[0]:
> count += 1
> successors.append(k[1])
>
> if count == 1:
> i.append(successors[0])
>
> else:
> for num in range(1,count):
> Initial.append(i)
> ...
我想我应该运行while循环,直到所有任务链都完成并实现“cont=false”。你知道吗
任何帮助都将不胜感激,谢谢。你知道吗
可以使用有向图对任务优先级关系进行建模。你知道吗
每个节点对应一个任务。从节点A到节点B的连接意味着我们可以先执行任务A,然后执行任务B
问题就变成了寻找图中的所有路径。你知道吗
在因特网上,可以很容易地获得代码来建模图形和确定路径。这里我使用https://www.geeksforgeeks.org/find-paths-given-source-destination/
上面是创建有向图和打印节点之间所有路径的基本代码。你知道吗
它稍微修改了一下,允许节点从1开始编号,而不是从0开始编号,以匹配任务的编号。你知道吗
我们用它来:
下一个 我们创建所有可能的任务链 将任务链放在trie树中 (这允许快速识别具有相同路径前缀的链)
使用原始列表测试软件
输出
相关问题 更多 >
编程相关推荐