這似乎是一個簡單的問題,但實際上將它實現到代碼中給我帶來了很多麻煩。我正在尋找在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