Re: [問題]整數陣列中 取n個不重複整數

看板Prob_Solve (計算數學 Problem Solving)作者 (我的血有鐵的味道...)時間15年前 (2009/09/11 00:45), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串3/3 (看更多)
※ 引述《pyrochlore (患得患失)》之銘言: : {我想從一個包含N個Object的陣列中 : 取出n個不重複的Object(n<N) : 每個Object可以簡單地看做是空間中的點 : 且這n個不重複的Object : 兩兩之間的距離必須大於a} : 因此不能像整數一樣排序Object : 剛剛用整數舉例太過簡化sorry 我的作法可能比別人回覆的麻煩而且慢 (因為很直覺的我想到就是這麼做) 1. 假設說明 (0) 假設所有的 Object 有 N組, 第 i 組 Object 記為 Object_i 要求的基本距離記為 a (1) 假設 Object 為4維向量 Object1 = (X1, X2, X3, X4) (二維的話想成是點座標) (2) 假設 Object 符合線性條件,ex: Object1 = (1,2,6,7) Object2 = (4,5,2,1) 進行減法時 Object3 = Object2 - Object1 = (3, 3, 4, 6) 加法亦然 (3) 取得所有 Object X1-X4 的最小值 我記為 X1min, X2min, X3min, X4min 同時 Object_Min = (X1mkn, X2min, X3min, X4min) (4) 我可以額外再開 N 組的實數(可以記錄小數點的)陣列 陣列名稱記為 Distance 同時第i個陣列存的實數以 Distance_i 表示 2. 將所有 Object 透過 Object_Min 進行座標平移, 平移後 Object 得到一組新的座標記為 Object', 故 Object_i' = Object_i - Object_Min 3. 接著計算 Object_i' 至 Object_Min 的距離, 記錄到 Distance_i 裡面去 4. 依 Distance 之大小做 Object' 排序 5. 希望你看得懂虛擬碼... Object temp = Object1; FOR I = 1:N FOR J = I+1:N IF( DISTANCE(Object_I, Object_J) > a) ...... (細節再自己想)... ....... END FOR J END FOR I 6. 取出來的 Object_i' 都應該轉回 Object_i 也就是 Object_i = Object_i' + Object_Min 7. 再次強調,這是很直覺的想法,完全沒有優化過流程 其實是可以不透過 Object_Min 去做, 只是轉換函數要寫好就是了 8. 對於此方法有建議或覺得不可行,也歡迎提出 謝謝指教 -- 我期待 我等待 肩狹骨上的翅膀早些長出來 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 203.68.127.69
文章代碼(AID): #1AgIqlXG (Prob_Solve)
文章代碼(AID): #1AgIqlXG (Prob_Solve)