这似乎是一个简单的问题,但实际上将它实现到代码中给我带来了很多麻烦。我正在寻找在Python中编写循环遍历所有可能的长度为L
的不同路径。使用给定的开始点和结束点生成所有路径
该路径中的第一个节点必须为0,最后一个节点必须是整数n - 1
。第一个节点和最后一个节点之间的每个节点可以是[0 , n-1]
中的任何整数,但必须与其之前的一个节点以及其后的一个节点不同。
n
可以是任何[2, 7]
整数,L
可以是任意整数> = 3
例如,如果n = 4
和L = 3
,环路应该通过
[ 0, 1, 3]
[ 0, 2, 3]
迭代对于n = 4
,和L = 4
循环应该迭代通过
[ 0, 1, 0, 3]
[ 0, 1, 2, 3]
[ 0, 2, 0, 3]
[ 0, 2, 1, 3]
[ 0, 3, 0, 3]
[ 0, 3, 1, 3]
[ 0, 3, 2, 3]
我想要生成此路径的过程如下。
- 遍历所有数字0到
(n - 1)^(L-3)
。 - 转换这些数字到基座
n - 1
- 转换回一个字符串,追加0至左侧,直至它是长度
L - 3
的。 - 对于这些数字中的每一个,遍历所有数字
[0, n-2]
并将这些数字追加到右边。把这些我们path_ids
- 先从第一个节点的新路径[0]
- 对于在
path_id
每个数字,但最后创建列表x = range(n)
,删除一个节点,从x
路径,并追加x[ digit]
到您的路径 - 对于路径ID中的最后一位数字创建
x = range(n)
删除路径中的最后一个节点,并从x
中删除n-1
,将x[ digit]
附加到您的路径。 - 将
n-1
附加到路径的末尾。
对于我的问题,这看起来像是一个非常复杂的过程,最终可能导致我的代码变慢,导致它无法使用。我正在寻找一种简单的方法来做到这一点。这个过程将在所有可能的路径长度的迭代之内,并且我将遍历每个生成的路径并检查它是否符合某些条件,如果是,我将存储它。然后,我将遍历每条满足这些条件的路径,并检查其他条件以获取最佳条件。可能会有很多'最好'的路径,所以我必须对它们进行排序。正如你可以想象的那样,低效地编写这个函数会极大地减慢我的整个程序。
对于屠宰格式我很抱歉,我一直在潜伏,但这是我问自己的第一个问题。
你尝试过什么码? – APerson
'但实际上将它实现为代码给我带来了很多麻烦'你试过了什么,你面临什么麻烦?这太宽泛了,没有人会提交你的代码。 –
@greenkraken您是否可以将您的代码/策略编辑到您的问题中,而不是将它放入评论中,因此更容易提供帮助? – APerson