我想生成一个矩阵以针对行和同时所有列和的向量应该总和为 1。除此之外,我有一个前缀数量的元素设置为零。例如,从以下开始:
虽然这很简单,但总的来说,我有方程在未知数,在哪里是固定为零的元素数。所以,这个方程组可能是超定或欠定的,但我希望能够生成这样的矩阵,使得所有非零元素都位于.
我想生成一个矩阵以针对行和同时所有列和的向量应该总和为 1。除此之外,我有一个前缀数量的元素设置为零。例如,从以下开始:
虽然这很简单,但总的来说,我有方程在未知数,在哪里是固定为零的元素数。所以,这个方程组可能是超定或欠定的,但我希望能够生成这样的矩阵,使得所有非零元素都位于.
这个问题更多的是组合而不是统计性质,可以看作是二分网络中的最大流量问题。矩阵的每一列对应于二分图左侧的一个“源节点”; 矩阵的每一行对应右侧的一个“目的节点”. 每个源节点的容量为对应列的总和;同样,通过行总和为目的地定义容量。价值矩阵中的质量流描述了来自'th 来源'沿着现有边的第一个目的地的. 您最初给定的 0-1 矩阵描述了存在哪些边(例如,您的示例中的矩阵规定了边与所有自循环一起从网络中消失)。如果你表示作为所有列总和的总和(或者,所有源的总容量),那么您的问题会缩小到从到在并检查发现流的体积是否等于.
注 1(可行性):在寻找最佳流程之前,您可能需要检查行总和:您的问题有解决方案的必要条件是所有列总和的总和(即在您的列随机矩阵的特定情况下)应该等于行和的总和,因为两个数字描述的相同 - 目标矩阵的所有元素的总和。(例如,对于和你的例子中的行和向量,这个问题是不可行的。)
注 2(上限):由于描述从'th 源,并且在您的设置中所有源的容量为 1,则每个源不能将超过 1 个单位的质量发送到单个目的地。因此,每个不会超过1。
注 3(下限):使对于每个现有边严格来说,您可以通过边缘容量的下限来增加最大流量问题。在一般情况下,边缘容量界限是和. 您可能希望用某个正数替换下限,该下限小到不会干扰最佳流的发现,并且大到足以满足您的边缘饱和需求。