2017-05-02 51 views
2

我想用所有正整數元素重構一個矩陣,給定每行和列的總和。來自總和的矩陣重構

a0 a1 a2 .. aN | Σa 
b0 b1 b2 .. bN | Σb 
.. . . . .. | .. 
.. . . . .. | .. 
z0 z1 z2 .. zN | Σz 
---------------+---- 
Σ0 Σ1 Σ2 .. ΣN | 

有給出的行和列求和的算法會發現所有可能矩陣元素的組合。

任何參考是非常感謝。

回答

1

是的。你有什麼是system of linear equations,每行一個,每列一個; m * n個變量和m + n個方程。

如何計算(並表示)解決方案集解決這樣一個系統取決於你的環境是什麼。

編輯:我明白了。有關此問題的大量情況,請參閱integer programming

但是,如果您的矩陣和行/列總和很小,則可以通過backtracking找到所有解決方案。非常高級別的僞代碼:

function SOLVE(partially filled M) { 

    if (M has no empty entries) { 

     M is a solution 

    } else { 

     ij <- one empty position of M 
     // in practice, try picking one that reduces the number of 
     // iterations of the following loop 

     for (each possible value v of M[ij], subject to the constraints) { 
      M' <- a copy of M 
      M'[ij] = v 
      SOLVE(M') 
    } 
} 


M0 <- an empty Matrix of correct size 

SOLVE(M0) 
+1

線性方程組的結果系統如何確保矩陣條目是正的(實際上可能是「非負的」)? – Codor

+0

基本上,環境就像輸入行和列的總和並獲得滿足這些總和的所有可能的矩陣集合的輸出。 – user2751130