我的數據結構是路徑由城市列表表示。如果,例如,城市如何比較兩條路徑
A, B, C, D
的可能配置可以是:A, B, D, C
或D, C, A, B
。
我需要兩條比較兩條路徑才能找到這兩條路徑之間的差異,以這種方式輸出此過程時將返回將第二條路徑轉換爲第一條路徑所需的交換操作集合。
例如,給定以下路徑:
X = {A, B, D, C}
Y = {D, C, A, B}
indexes = {0, 1, 2, 3}
一種可能的方式將路徑Y
轉變成X
將是該組中的以下互換:{0-2, 1-3}
。
{D, C, A, B} --> [0-2] --> {A, C, D, B} --> [1-3] --> {A, B, D, C}
是否有任何已知(且快速)的算法可以計算這個集合?
路徑有多長? BFS(或A *搜索算法)可以做到這一點,但它會花費指數的時間。 – amit
@amit的數量級爲2,因此少於1000個元素。 – gliderkite
如果結果存在,可以使用自定義鍵功能的排序算法來解決(快速)。 – SashaMN