gpt4 book ai didi

java - 如何使用树结构对对象进行分组(使用java)

转载 作者:太空宇宙 更新时间:2023-11-04 08:38:25 25 4
gpt4 key购买 nike

这就是我正在尝试做的事情:

我正在开发一个程序,它应该做的部分工作是把一大群人分成几个组(给定特定数量的参与者/组)。但是,每个人都必须在每个组中只经过一次(顺序无关紧要),并且我想最大程度地减少一起穿过不同组的人数。

到目前为止,我已经能够创建一个树结构,它的根分支为每个组的一个节点,每个分支分支为所有其他组(父组除外)的节点,每个分支为其余组的节点(父级或父级的父级除外,等等)。

这可以在下面可视化(给出 5 组——A、B、C、D、E):

Level 1:    A         B         C           D          E  
Level 2: B C D E A C D E A B D E A B C E A B C D
Level 3 (for node E only) : BCD ACD ABD ABC
etc. (with n levels for n groups)

每个级别代表所有参与者的一组,并且在每个级别,每个参与者都必须属于一个组。

在我的程序中,每个人当前都表示为一个整数,存储在 ArrayList 中。整个 ArrayList 从根开始,然后在每个节点上(随机)分为偶数组(在上面的示例中,第一层 5 个组,第二层 4 个等),直到树的末尾(当每个参与者都遍历每个组一次时)。我目前正在递归地实现这个。

我无法弄清楚如何确保每个级别的每个组中的参与者数量相等(或减少一个)。当参与者的数量等于最后一层的节点总数(或其倍数)时,这很容易,但如果情况并非如此(并且在每个节点上,参与者不会均匀地划分为子节点的数量),则会变得更加棘手。

我并不是在寻找特定的代码来解决这个问题,只是想知道如何确保每个级别的组大小均匀(特别是可以与大量输入的参与者和组一起使用的解决方案)。

提前致谢,如果我完全不清楚(因为我发现很难描述我的问题),请告诉我!

最佳答案

我觉得你的描述很好。如果我理解正确的话,这可能适用于研讨会或在不同站点有许多小组 Activity 的 Activity ,每个人都需要完成每个站点(但最好是与不同的人员组合)。

我认为你可能用树使你的架构变得过于复杂。为什么不首先将人数除以组数以获得每组的适当人数(随机决定谁从哪个组开始),然后让每个组保持有关谁去过那里的状态,然后对于每个“移动”,从剩余的人中随机选择?每组总是有正确的人数,并且不会有任何重叠,并且随机性将确保人们不会只是一起从一个组移动到另一个组。

如果您的人员没有按组数均匀划分,您始终可以只让一个组保持不同的数量,或者应用一些额外的逻辑在每次移动时将奇数人移动到随机组

关于java - 如何使用树结构对对象进行分组(使用java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5876955/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com