我有一组 30 个节点,每个节点一次只能连接一个。此外,一个节点无法连接到另一个特定的节点(例如,带有 and的节点id= id+15
,例如 1-16、2-17...规则不相关,我可以更改关联节点号)。我正在寻找的是一个矩阵,其中每一行都是一组可能的连接,其中所有节点都连接到另一个节点,并且每个节点都连接到所有其他节点(禁止的节点除外)。它看起来像这样(成对阅读)
[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30;
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 1 30;
1 4 2 5 3 6 7 10 8 11 9 12 13 16 14 17 15 18 19 22 20 23 21 24 25 28 26 29 27 30;
4 7 5 8 6 9 10 13 11 14 12 15 16 19 17 20 18 21 22 25 23 26 24 27 28 1 2 29 3 30;
...
]
我试图通过收集所有可能的非重复组合(二项式 30 超过 2 => 435)来开发它,nchoosek
但现在我正在处理将我拥有的所有对放在29 × 15对矩阵中的问题不重复。这将允许我通过从nchoosek
.
我确信这是一个已知的图形问题,但我无法找到任何相关信息。有谁知道实施它?
目的是描述 30 个节点之间点对点连接的时间线。由于每个人都无法连接到特定的其他人,因此可能的连接总数为 420(435 - 15 个禁止连接),总共 28 个时隙(行)包含 15 个对(30 列)。
Edit2:另一种方法可能是生成一个 30x30 矩阵,该矩阵具有从 1 到 30 的所有可能的数字组合作为行,但约束不能重复对(不按顺序)。例如,以下是可能的有效向量(限制为 12 个元素而不是 30 个),但是第二个被丢弃,因为 Couple[2 1]
等同于 Couple [1 2]
。不过,不知道如何处理约束。
[1 2 3 4 5 6 7 8 9 10 11 12]
[2 1 3 4 5 6 7 8 9 10 11 12]