看板 C_and_CPP 關於我們 聯絡資訊
: http://www.wretch.cc/album/show.php?i=flyingcop&b=9&f=1707840476&p=0 猜是 AI. algorithm 解 完全連通型tsp 問題, 若真想求知,請先敘述你要做的動作, 及資料儲存之方式,以下為臆測,程式碼恕刪,請對照看。 for(i=0; i<City; ++i){ order=1; /* 這裡建議設 0 ,以後比較方便 */ for(ii=0;ii<City; ++ii) /* 計算第 i 個程式座標序 */ if(i!=ii && S.Coord[ii]<S.Coord[i]) ++order; t[i]=order; /* 設定第 i 個 city 之座標序 */ } 這段碼只是很簡單的比較、排序,但用到的應是 Counting Sort, t 裡面是放 城市的編號, S 裡面放的是第 ii 個程式的座標位置,都是 array。 而排序的原則是:去計算有幾個座標比 S.Coord[i] 還要小, 便可知 t[i] 從左邊掃到右邊,是第幾個 city。 -- YouLoveMe() ? LetItBe() : LetMeFree(); -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 180.177.78.41
ericinttu:我不知道算這個order值要做什麼? 07/28 18:52
ericinttu:不問原原PO而問你是因為... 覺得比較聽得懂你講的 XD 07/28 18:54
問題簡化一下,假設一串數列是 int coord[5]={2,3,1,4,5}; coord[i] 代表第 i 個 city 之座標 再分配一個 int rank[5], rank[i] 代表第 i 個程式,從左掃到右,會是第幾個掃到。 rank[0]=1 ---> 因 coord[0]=2, 是第1小的數; rank[1]=2 ---> 因 coord[1]=3, 是第2小的數; rank[2]=0----> 因 coord[2]=1, 是第0小的數; 依此類推,而 order 就是要算 rand[i] = ???? ( ???? 也就是 order) 在程式碼中,後期要得知第 x 小的程式座標的話 : int tmp_coord = coord[rand[x]]; ※ 編輯: tropical72 來自: 180.177.78.41 (07/28 19:08)
ericinttu:算了當我沒問. 看了原原PO文章兩遍看不出什麼道理. 07/28 19:06
firejox:兩層已經不是O(n)了 07/28 19:10
firejox:事實上比較屬於select sort 07/28 19:10
tropical72:對厚.我都忘了它放了二層 loop, 謝謝指正。 07/28 19:11
※ 編輯: tropical72 來自: 180.177.78.41 (07/28 19:12)
ericinttu:跟TSP有什麼關係的東西? (倒) (爆炸) 07/28 19:14
ericinttu:coord 跟TSP的座標根本沒關係. 再者, 最好是寫一個算距 07/28 19:16
tropical72:這應是第二步驟,第一步驟是「隨機產生數個city座標」 07/28 19:17
ericinttu:離的function 去取代 ">". 最後, 記得原點是誰. 07/28 19:17
tropical72:第二步驟再把座標由左到右排序,這段碼是第二步驟. 07/28 19:17
flyingcop:謝謝 tropica172大大 您確實回答到我要的問題 超感動 07/29 19:10
flyingcop:我卡在這個地方不知道卡多久>"< 07/29 19:10
flyingcop:另外 這個 也確實是演算法解TSP的程序 我卡在這裡很久 07/29 19:11