看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《yauhh (喲)》之銘言: : 做一個假想,假想你寫了一個函數可以求任兩行或任兩列的黏合度, : 只要兩列或兩行有相同位置都存在非0元素,黏合度就高上一級. : 因此,考慮以下的各行, : : 0.5000 0 0 0 0 0 : : 0 2.0000 0 0 3.0000 2.0000 : : 0 0 2.0000 0 1.0000 0 : : 0 0.3333 0 0 0 0 : : 1.0000 0 0 2.0000 0 0 : (1,4)黏合度1,(2,5)黏合度1,(2,6)黏合度1,(3,5)黏合度1, : 黏合度可以排順序,但在此沒什麼好排. 將可黏合的行貼在一起:(1,4,2,6,5,3). : 如果黏合度較高,應該排比較左邊吧. : 再稍微參考0元素少的排左邊的因素,各行重新調整如下: : : 0.5000 0 0 0 0 0 : : 0 0 0 3.0000 2.0000 2.0000 : : 0 0 2.0000 1.0000 0 0 : : 0 0 0 0 0.3333 0 : : 1.0000 2.0000 0 0 0 0 : 再考慮各列黏合度: : (1,5)黏合度1,(2,3)黏合度1,(2,4)黏合度1. : 重新黏合各列,並稍微參考0元素少的排上面的因素,調整如下: : : 1.0000 2.0000 0 0 0 0 : : 0.5000 0 0 0 0 0 : : 0 0 2.0000 1.0000 0 0 : : 0 0 0 3.0000 2.0000 2.0000 : : 0 0 0 0 0.3333 0 : 此時就調不動了,大概是完成. : 這樣程式會比較好寫吧... 你說的這個想法,我找了幾個例子去驗證,的確是個好方法,雖然移動的結果,跟我所 要求的移動後結果不同,不過在停止的條件上就簡單多了,也不用有迴圈的問題 但,我真的不懂程式,不知道是否有人能用這個想法幫我寫出程式,讓我去測試 順帶一提,是否有辦法跑程式,使在矩陣中,從非0元素的位子上填入數值, 使得矩陣的秩為1,數值是由電腦來填,當然不一定能填出是秩為1的矩陣 就上述矩陣填入的結果為 1.0000 2.0000 0 0 0 0 : : 0.5000 1 0 0 0 0 : : 0 0 2.0000 1.0000 0.6666 0.6666 : : 0 0 6.0000 3.0000 2.0000 2.0000 : : 0 0 1.0000 0.5000 0.3333 0.3333 區塊右方0,與下方0有線性關係,填入值可任意設定,使得該矩陣秩為1 故我就沒填進去了,在程式上有辦法由電腦來跑嗎? 填入的演算法一樣很難,只知道從非0元素最少的那一列或行來填,比較容易 -- -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 210.240.3.58
yauhh:我個人答案跟matlab第一篇一條推文一樣:為什麼你不真不會程 06/22 02:07
yauhh:式,就要有人幫你寫程式? 要研究就該要自己做做看才好 06/22 02:07