Re: [問題] 請問隨機陣列

看板C_and_CPP (C/C++)作者 (藍影)時間14年前 (2011/07/28 18:37), 編輯推噓4(4010)
留言14則, 4人參與, 最新討論串2/2 (看更多)
: 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

07/28 18:52, , 1F
我不知道算這個order值要做什麼?
07/28 18:52, 1F

07/28 18:54, , 2F
不問原原PO而問你是因為... 覺得比較聽得懂你講的 XD
07/28 18:54, 2F
問題簡化一下,假設一串數列是 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)

07/28 19:06, , 3F
算了當我沒問. 看了原原PO文章兩遍看不出什麼道理.
07/28 19:06, 3F

07/28 19:10, , 4F
兩層已經不是O(n)了
07/28 19:10, 4F

07/28 19:10, , 5F
事實上比較屬於select sort
07/28 19:10, 5F

07/28 19:11, , 6F
對厚.我都忘了它放了二層 loop, 謝謝指正。
07/28 19:11, 6F
※ 編輯: tropical72 來自: 180.177.78.41 (07/28 19:12)

07/28 19:14, , 7F
跟TSP有什麼關係的東西? (倒) (爆炸)
07/28 19:14, 7F

07/28 19:16, , 8F
coord 跟TSP的座標根本沒關係. 再者, 最好是寫一個算距
07/28 19:16, 8F

07/28 19:17, , 9F
這應是第二步驟,第一步驟是「隨機產生數個city座標」
07/28 19:17, 9F

07/28 19:17, , 10F
離的function 去取代 ">". 最後, 記得原點是誰.
07/28 19:17, 10F

07/28 19:17, , 11F
第二步驟再把座標由左到右排序,這段碼是第二步驟.
07/28 19:17, 11F

07/29 19:10, , 12F
謝謝 tropica172大大 您確實回答到我要的問題 超感動
07/29 19:10, 12F

07/29 19:10, , 13F
我卡在這個地方不知道卡多久>"<
07/29 19:10, 13F

07/29 19:11, , 14F
另外 這個 也確實是演算法解TSP的程序 我卡在這裡很久
07/29 19:11, 14F
文章代碼(AID): #1ECJllv7 (C_and_CPP)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
文章代碼(AID): #1ECJllv7 (C_and_CPP)