MATLAB:如何在M * M矩阵内生成所有可能的联盟形式

时间:2015-12-24 11:29:28

标签: matlab matrix binary

假设有“M”个对象旨在一起形成联盟。我需要知道如何使用M * M二元矩阵穷尽地生成所有可能的联盟形式,并给出以下属性:

1-主对角线的元素设置为1(每个对象与其自身在同一个联盟中)

2-矩阵是对称的(两个对象在同一联盟中是相互关系)

3-如果对象(i,j)属于同一联盟,并且(j,k)属于同一联盟,那么(i,k)也属于同一联盟。

这个例子给出了一个简单形成有4个物体的联盟:

example1

1 个答案:

答案 0 :(得分:0)

您可以使用更容易生成的其他数据结构,然后将其转换为您想要的矩阵。使用具有联盟ID的列表,其中联盟ID是所有对象ID的最小值。对于您的示例,这将是[1 2 1 1]。使用此数据结构,可以更轻松地描述生成器。

对于每个对象,您可以选择加入由身份较小的对象打开的现有联盟之一,或者打开一个新的联盟。

可能没有vectrorized解决方案,实现这个使用递归或动态编程。