首页 > 解决方案 > 从关联的二分遍历访问矩阵

问题描述

晚上好,

我需要一点帮助才能看透一些东西。情况如下:

我有一个元素矩阵,例如:

在此处输入图像描述

每个条目都可以被视为一个节点(这些节点没有关联的 ID,为了简单起见,我只是标记了它们)。然后元素“6”可以作为矩阵[1][2]等访问。

现在,我将其转换为以下二分图结构:

在此处输入图像描述

现在,在从左到右添加边缘时,我有以下嵌套循环:

for (int i = 1; i <= 8; i++) {
    for (int j = 1; j <= 8; j++) {
        capacityGraph[i][j + 8] = 1; //First layer to second layer
    }
}

现在,我的问题是:

有没有办法从二分遍历中访问矩阵元素(不必在同一个循环中)?我认为解决方案应该很简单,我只是无法完全考虑清楚。但是,例如,如果 i=6,那么我知道我正在查看第 10 个节点。如何将其转换为矩阵 [2] [2]?对于第 j 个索引也是如此。

我看过一些参考资料,我真的认为答案就在这里:

如何将矩阵的索引映射到一维数组(C++)?

但无论出于何种原因,我都无法将这些点完全联系起来。任何帮助是极大的赞赏!谢谢。

标签: matrixindexingbipartite

解决方案


好吧,我想我真的想通了。

我知道左侧由所有偶数节点组成,右侧由所有奇数节点组成。然后我可以分别通过左侧和右侧的 2(i-1) 或 2(j-1) + 1 获得关联的节点值。

现在,给定节点值/位置 K,我想我可以将其转换为 XY 坐标,这样对于(nxn 矩阵),该列是 K%n。该行是地板(K / n)。

然后矩阵由 Matrix[ K/n ][ K%n ] 访问它似乎适用于这个例子,但如果我发现任何新的东西我会更新。


推荐阅读