gpt4 book ai didi

java - 以较少迭代次数获得组合的算法

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:49:54 24 4
gpt4 key购买 nike

我正在编写一个逻辑来根据以下条件获取迭代的组合。我有处理它的工作代码。我想知道我是否可以减少它的迭代次数

A,B,C,D,E,F,G 是下例中的节点集

enter image description here

标准:

获取元素列表。
1、里面不能有重复的节点。例如.. AB 可以在那里 BA 不应该在那里 2. 不应该有对角线元素 eg.. AA,BB...

完成逻辑后,我们得到所有彩色的(不是黑色/灰色的)AB,AC,AD,AE,AF,AG,BC,BD,BE,BF,BG,CD,CE,CF,CG,DE,DF,DG,EF,EG,FG

获取迭代中的元素组必须根据以下规则对元素进行分组以进行迭代

第一次迭代1. 选择一个元素。让我们说AB2. 将被拾取的元素不应该有 A 或 B 。因此可以选择CD。3. 完成上述 2 个步骤后,我们将获得第一次迭代的元素

在第一次迭代结束时,我们会收集 AB、CD、EF

  1. 现在重复第 1 步到第 3 步以获取第 2 次迭代的元素

在第 2 次迭代结束时,我们将收集 AC、BD、EG

像这样迭代次数将完成以获得每次迭代的元素。

问题:由于我预计元素将在 100 左右,我想知道是否有减少迭代次数的最佳方法。我希望不会有办法。但由于我们这里有算法专家,所以我需要这里的建议。

最佳答案

您可以使用 round-robin tournament algorithm

将项目放在两行中(如果数字是奇数,则空位),这里我为您的 AB/CD/EF 示例配对

A  C  E  G     
B D F .
pairs AB CD EF

固定第一个元素 (A) 并在每一步循环旋转其他项目(顺序与您的顺序不同)。最后你会得到 N-1N/2

A  B  C  E
D F G .
pairs AD BF CG
and so on
A D B C
F G E .

A F D B
G E C .

A G F D
E C B .

A E G F
C B D .

关于java - 以较少迭代次数获得组合的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56106497/

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