计算具有目标行和的列随机矩阵

数据挖掘 统计数据 算法 图表 社会网络分析
2022-03-08 08:57:22

我想生成一个N×N矩阵A以针对N行和同时所有列和的向量应该总和为 1。除此之外,我有一个前缀数量的元素设置为零。例如,从以下开始:

[011100110]
和行和向量[1.5,0.25,1]T, 我想结束
[0a12a13a2100a31a320]
在以下条件下:

a12+a13=1.5

a21=0.25

a31+a32=1

a21+a31=1

a12+a32=1

a13=1

虽然这很简单,但总的来说,我有2N方程在N2Z未知数,在哪里Z是固定为零的元素数。所以,这个方程组可能是超定或欠定的,但我希望能够生成这样的矩阵,使得所有非零元素都位于(0,1].

1个回答

这个问题更多的是组合而不是统计性质,可以看作是二分网络中的最大流量问题矩阵的每一列对应于二分图左侧的一个“源节点”BP(L,R); 矩阵的每一行对应右侧的一个“目的节点”R. 每个源节点的容量为对应列的总和;同样,通过行总和为目的地定义容量。价值aij矩阵中的质量流描述了来自j'th 来源i'沿着现有边的第一个目的地(ji)BP. 您最初给定的 0-1 矩阵描述了存在哪些边(例如,您的示例中的矩阵规定了边(3,2)与所有自循环一起从网络中消失)。如果你表示F作为所有列总和的总和(或者,所有源的总容量),那么您的问题会缩小到从LRBP并检查发现流的体积是否等于F.

注 1(可行性):在寻找最佳流程之前,您可能需要检查行总和:您的问题有解决方案的必要条件是所有列总和的总和(即N在您的列随机矩阵的特定情况下)应该等于行和的总和,因为两个数字描述的相同 - 目标矩阵的所有元素的总和。(例如,对于N=3和你的例子中的行和向量,这个问题是不可行的。)

注 2(上限):由于aij描述从j'th 源,并且在您的设置中所有源的容量为 1,则每个源不能将超过 1 个单位的质量发送到单个目的地。因此,每个aij不会超过1。

注 3(下限):使aij对于每个现有边(ji)严格来说,您可以通过边缘容量的下限来增加最大流量问题。在一般情况下,边缘容量界限是0+. 您可能希望用某个正数替换下限,该下限小到不会干扰最佳流的发现,并且大到足以满足您的边缘饱和需求。