【发布时间】:2022-01-10 03:08:12
【问题描述】:
需要从一个组中随机分配一个人到另一个人。每个人都应该被分配给某人。这背后的图形概念是什么?我需要为此编写一个算法。
例如: -A分配给B,B分配给C,C分配给A(有向图) 要么 -A分配给C,B分配给A,C分配给B
- A、B、C 三者都应分配给某人。
- A、B、C 三个都应该有一个作为作业。
- 没有重复的分配。
- 一个人应该只分配给一个人。
- 一个人可以分配给至少一个人。
【问题讨论】:
-
这不是图形问题。它更像是一种组合学。虽然,您没有提供足够的信息来确定它。如果您只想将每个元素与另一个元素配对,那么您正在寻找 n/2 不相交的组件。这是我能想到的最接近图的问题。
-
首先要澄清的是:如果我们将A分配给B,那么B是否也分配给A?如果是这样,它是一个无向图。不管怎样,你要做的就是找到一个匹配的,你可以在维基百科中查找它。
-
似乎您可以按照自己的意愿对人员进行排序,然后将每个人分配给他们之前的人(第一个人分配给最后一个人)。在任何有用的意义上,这背后并没有真正的概念,因为所述问题本质上是微不足道的,尽管如果有额外的局部约束,人们可以或不能分配给其他人,它可能会找到图的分解进入循环。
-
@Meera 如果没有其他约束,您描述的是一个链表,它将其最后一个条目指向第一个条目。
-
@ThomasJungblut 它应该被洗牌。不按顺序。但你所说的引出了另一个想法。它可以被洗牌。并添加为循环