假设我们有一个简单的矩阵 3rows x 7cols。
该矩阵仅包含零 (0) 和 (1),例如:

1 0 1 1 1 0 0
0 0 1 1 0 0 0
0 0 1 0 1 1 0

赛纳里奥:
如果我们知道每一行中非零值的总和,

(第一行是4,第二行是2,第三行是3。)(蓝线)

另外,如果我们知道每个 col (1 , 0, 3, 2, 2, 1, 0) 的总和(绿线)

如果我们知道从左上角到右下角的每个对角线的总和(1,0,1,2,3,0,1,1,0)(红线)逆时针

最后我们知道从左下角到右上角的每个对角线的总和 (0,0,2,1,3,2,1,0,0)(黄线)

我的问题是:
将这些值作为输入(以及矩阵 3x7 的长度),
4, 2, 3
1, 0, 3, 2, 2, 1, 0
1, 0, 1, 2, 3, 0, 1, 1, 0
0, 0, 2, 1, 3, 2, 1, 0, 0

我们如何绘制第一个矩阵?
经过一番思考,我得出的结论是,这是一个具有 3x7 未知值和一些方程的线性方程组。
正确的?

我如何用 C 或其他语言编写算法来求解这些方程?
我应该使用像高斯方程这样的方法吗?

任何帮助将不胜感激!

最佳答案

对于 10x15 的 1 和 0 数组,如果您忽略这些值仅限于 1 或 0,您将尝试找到 150 个未知数并有 10+15+2*(10+15-1) = 73 个方程。显然,您无法在此基础上创建具有唯一解决方案的线性系统。

那么这个约束足以给出一个唯一的解决方案吗?

对于具有以下总和的 4x4 矩阵,有两种解决方案:

- 1 1 1 1
| 1 1 1 1
\ 0 1 1 0 1 1 0
/ 0 1 1 0 1 1 0

0   0   1   0
1   0   0   0
0   0   0   1
0   1   0   0

0   1   0   0
0   0   0   1
1   0   0   0
0   0   1   0

所以我不希望对更大的矩阵有一个独特的解决方案 - 在许多地方都会存在相同的对称性:
- 1 1 0 0 1 1
| 1 1 0 0 1 1
\ 0 1 0 0 1 0 1 0 0 1 0
/ 0 1 0 0 1 0 1 0 0 1 0

0   0   0   0   1   0
1   0   0   0   0   0
0   0   0   0   0   0
0   0   0   0   0   0
0   0   0   0   0   1
0   1   0   0   0   0

0   1   0   0   0   0
0   0   0   0   0   1
0   0   0   0   0   0
0   0   0   0   0   0
1   0   0   0   0   0
0   0   0   0   1   0

关于c - 高斯消元 - 线性方程矩阵,算法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9050450/

10-11 23:03
查看更多