Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从R中的矩阵中找出最小的不感兴趣的行数_R_Math_Matrix - Fatal编程技术网

从R中的矩阵中找出最小的不感兴趣的行数

从R中的矩阵中找出最小的不感兴趣的行数,r,math,matrix,R,Math,Matrix,我有一组线,其中一些相互相交。我可以生成一个截距矩阵 1 2 3 4 5 6 1 0 1 0 1 0 0 2 1 0 1 1 0 0 3 0 1 0 0 1 0 4 1 1 0 0 0 1 5 0 0 1 0 0 0 6 0 0 0 1 0 0 其中1=相交,0=不相交 例如,直线1与直线2和4相交 我想产生最小数量的线集合

我有一组线,其中一些相互相交。我可以生成一个截距矩阵

    1   2   3   4   5   6
1   0   1   0   1   0   0
2   1   0   1   1   0   0
3   0   1   0   0   1   0
4   1   1   0   0   0   1
5   0   0   1   0   0   0
6   0   0   0   1   0   0
其中1=相交,0=不相交

例如,直线1与直线2和4相交

我想产生最小数量的线集合,其中集合内没有线相交

在这个例子中,我能想到的最好的方法是三个集合,其中包含:

第2、5、6行

第1、3行

第4行


< P >我在R中编程,但是我确实需要对这个问题进行数学/概念性的回答。

如果你把线看成是图中的结点,把交叉关系当作边(即你的矩阵是邻接矩阵),那么你要把每个顶点分配给一个组,这样两个相邻的顶点就不在同一个组中。


这相当于顶点着色问题。关于这个问题的许多算法可以在上找到。寻找最优着色的问题是NP难的。如果你对一个近似值很好,你可以使用贪婪方法,它具有O(V D)的时间复杂度,其中V是顶点的数目,D是最大顶点度。

< P>如果你把线看成是图中的结点,而交叉关系是边(即你的矩阵是邻接矩阵),然后要将每个顶点指定给一个组,以便两个相邻顶点不在同一组中


这相当于顶点着色问题。关于这个问题的许多算法可以在上找到。寻找最优着色的问题是NP难的。如果您擅长近似,可以使用时间复杂度为O(vd)的贪婪方法,其中V是顶点数,D是最大顶点度。

您可以将diag元素更改为默认值。然后应用(df,1,函数(x)(x==0))。为什么在您的解决方案中没有任何其他单例集(4除外)?例如,只有第1行的集合在集合内也没有相交的线。此外,矩阵为0的任何一对线也是解决方案的一部分。还有,(1,5,6)。@aichao我给出的解决方案只是一个例子,我肯定还有其他的,但我找不到少于3组的解决方案。对于我的任务,集合的组成并不重要,只要集合不相交且尽可能少。您可以将diag元素更改为默认值。然后应用(df,1,函数(x)(x==0))。为什么在您的解决方案中没有任何其他单例集(4除外)?例如,只有第1行的集合在集合内也没有相交的线。此外,矩阵为0的任何一对线也是解决方案的一部分。还有,(1,5,6)。@aichao我给出的解决方案只是一个例子,我肯定还有其他的,但我找不到少于3组的解决方案。对于我的任务,集合的组成并不重要,只要集合不相交并且集合尽可能少。