舍入矩阵,保留行和列总数

时间:2014-07-06 21:32:14

标签: algorithm matrix

通缉:(伪)代码,用于以保留行和列总数的方式舍入矩阵。

问题始于非负整数的向量XYSum[X]==Sum[Y]。想要在保留行和列总数的同时舍入X×Y/Sum[X]

这是一种婚姻问题。 Xa需要进行一些握手(称之为Xa),XbXc也是如此;还有Ya Yb Yc。无论出于何种原因,所有的握手都在X和Y之间。当然Xa + Xb + Xc == Ya + Yb + Yc。握手应尽可能地按比例进行。因此,希望舍入X×Y/Sum[X],不改变行和列总数。

虽然http://people.mpi-inf.mpg.de/~doerr/papers/unbimatround.pdf 似乎是答案,它既没有算法也没有代码。

请亲切的读者,是否有已发布的代码或伪代码?甚至是算法的清晰解释?

1 个答案:

答案 0 :(得分:1)

你发表的论文说,矩阵的随机舍入,很有可能满足你的约束。在论文中,它可以在O(nml)中计算,其中l是用于对矩阵进行随机化的位数。因此,概率不能取决于矩阵大小或使用的位。

请尝试以下算法:

1. For all x in your matrix do  
      r = random float number in [0,1]
      if r <= x - floor(x) then    
         x := ceil(x);  
      else  
         x := floor(x);  
2. check if the randomized rounded matrix fulfill the constrains.
   if so then end the algorithm
   else try again.

根据该论文,这不应该采取太多的尝试。