【发布时间】:2014-03-21 00:07:43
【问题描述】:
过去几天我一直在思考一个问题,但由于我是 MATLAB 的初学者,我不知道如何解决它。这是背景。假设您有一个对称的N×N 矩阵,其中每个元素是0 或1,以及N = (1,2,...,n)。
例如:
A =
0 1 1 0
1 0 0 1
1 0 0 0
0 1 0 0
如果A(i,j) == 1,则可以形成(i,j),如果A(i,j)==0,则不可能形成(i,j)。例如,(1,2) 是可能的对,如 A(1,2)==A(2,1)==1,但 (3,4) 不是可能的对,如 A(3,4)==A(4,3)==0。
这就是问题所在。假设集合N 的一个成员最多只能与集合N 的另一个不同成员配对(即,如果 1 与 2 形成配对,则 1 不能与 3 形成配对)。我怎样才能找到可能对的所有可能“列表”?在上面的示例中,一个“列表”将仅包含 (1,2) 对。如果形成了这一对,则不可能形成任何其他对。另一个“列表”是:((1,3),(2,4))。我搜索了论坛,发现后一个“列表”是可以找到的最大匹配,例如,通过使用二分图方法。但是,我不一定只对找到最大匹配感兴趣;我有兴趣找到所有可能的配对“列表”。
另一个例子:
A =
0 1 1 1
1 0 0 1
1 0 0 0
1 1 0 0
在这个例子中,有三个可能的列表:
(1,2)
((1,3),(2,4))
(1,4)
希望您能理解我的问题,如果不清楚,我深表歉意。我感谢我能得到的所有帮助。非常感谢!
【问题讨论】:
标签: matlab