Matlab 将2xN阵列分成M';完全填充';阵列

Matlab 将2xN阵列分成M';完全填充';阵列,matlab,math,integer,octave,Matlab,Math,Integer,Octave,我使用的是Matlab/Octave,我有一个X/Y索引数组(2xM整数数组)。我需要找到一种方法,根据需要将这个数组分割成尽可能多的其他数组,以便每个数组都是“完整的”“完成”表示数组中存在所有可能的X/Y组合。实际上,我有一个整数晶格,点散布在这个晶格周围,但是以一种相对模式的方式。我已经起草了一些工具来帮助可视化数据。红线是在原始数据中识别的晶格,绿点是数据点。我需要对数据进行分区,这样每个子集将生成一个完全填充的晶格,在“子晶格”的每个交点处都有一个点。以这种方式划分它们意味着原始数据中

我使用的是Matlab/Octave,我有一个X/Y索引数组(2xM整数数组)。我需要找到一种方法,根据需要将这个数组分割成尽可能多的其他数组,以便每个数组都是“完整的”“完成”表示数组中存在所有可能的X/Y组合。实际上,我有一个整数晶格,点散布在这个晶格周围,但是以一种相对模式的方式。我已经起草了一些工具来帮助可视化数据。红线是在原始数据中识别的晶格,绿点是数据点。我需要对数据进行分区,这样每个子集将生成一个完全填充的晶格,在“子晶格”的每个交点处都有一个点。以这种方式划分它们意味着原始数据中的任何空交集实际上是两个基本子格之间的交集

例如:

假设我的输入数组是[11;13;15;22;24;26;31;33;35;42;44;46]

输出应该是两个数组:[1;1 3;1 5;3 1;3 3;3 5]和[2;2 4;2 6;4 2;4 4;4 6]

如果数组中存在X值“1”,则该值应与数组中显示的所有Y值成对出现,反之亦然


我知道并不能保证所有输入都有唯一的解决方案,但找到的任何解决方案(除了做一些琐碎的事情,比如把每个点放在自己的数组中)都是有用的。

我做了更多的研究,认为我可以将其重新表述为一个双液覆盖问题。我仍然不知道如何计算这个数据集的biclique覆盖,所以如果有人有任何见解,请告诉我。我知道我会使每个可能的X索引和每个Y索引成为一个顶点,原始数据中的每个坐标对都是二部图的一条边。如果输入是
[13;34;26]
,那么输出应该是[13;34]和[26],因为[13]和[34]都有一个3。这是正确的吗?不完全正确,第一个和第二个元素是唯一的,因此在您的示例中,它实际上会将其拆分为三个单独的数组。我们需要把你的例子扩大一点,使它更有教育意义。注意我上面的例子。根据输入,可能的X值为1、2、3和4。可能的Y值为1,2,3,4,5,6。该算法将数组拆分为两个数组,其中第一个数组中的x值为1和3,Y值为1和3,并保存这些值的所有可能组合。如果您编辑您的问题,提供更多解释,并提供简单的示例,这会很有帮助谢谢rahnema,我发现了下面这篇文章,它概述了我的确切问题,并在第4节中提出了我需要的算法。