二维数组中指定部分的C++置换

二维数组中指定部分的C++置换,c++,graph-theory,permutation,C++,Graph Theory,Permutation,我有一个简单的两个二维数组,表示为,用1和0填充 | A | B | C | D | sum -------------------------- A | 0 | 1 | 1 | 1 | 3 B | 1 | 0 | 0 | 0 | 1 C | 1 | 0 | 0 | 1 | 2 D | 1 | 0 | 1 | 0 | 1 它是a的表示形式,因此表与主对角线对称,没有成员与其自身相关/没有递归/。 我需要生成指定列/行的排列。 我知道有一个函数,但我不知道如何将它

我有一个简单的两个二维数组,表示为,用1和0填充

    | A | B | C | D | sum
--------------------------
  A | 0 | 1 | 1 | 1 |  3
  B | 1 | 0 | 0 | 0 |  1
  C | 1 | 0 | 0 | 1 |  2
  D | 1 | 0 | 1 | 0 |  1
它是a的表示形式,因此表与主对角线对称,没有成员与其自身相关/没有递归/。 我需要生成指定列/行的排列。 我知道有一个函数,但我不知道如何将它用于表示图形的2D数组,我想我需要编写自己的算法,只返回2列/行的索引以进行切换。我无法意识到,仅仅因为切换了2列/行,我就会重写整个表

最困难的是,当有行时,切换所有行/列是不必要的,行具有唯一的和-在我的例子中,这些列/行可以保留在它们的位置上,因为很清楚它们属于第二个表中的哪个成员=没有更多的成员具有相同数量的关系

在我能够生成A-D表的排列之后,我可以将生成的表与第二个表进行比较,并检查它们是否相同,这是我已经做过的


如何进行排列?

双向图只有64种变体,如您描述的4个顶点。换句话说,图形包含6位信息,因此很容易从数字0到63构建

也许你们应该解释一下你们想得到什么,你们想在4个顶点上列出所有可能的图吗?我需要生成一个表,其中B和D都有一个关系,D有两个关系,你们的数学不起作用。你们所做的可能有些过分,但你们看过Boost.Graph了吗?