组合5的最高可能值

2024-10-02 14:21:37 发布

您现在位置:Python中文网/ 问答频道 /正文

根据https://www.heroescounters.com/teampicker,一个英雄与另一个英雄有协同值,风暴英雄有60+个英雄,每个英雄都有协同值,例如:

HeroID  Synergy.With.HeroID      Synergy.Points
1               2                       97
1               3                       95
1               4                       94
45              1                       2
45              2                       11     

《风暴英雄》中的一个团队有5个英雄,团队的全部协同作用通过以下公式计算:

Team_total_synergy = Synergy_Points(Hero1 with Hero2) + 
mean(Synergy_Points(Hero3 + Hero1) + Synergy_Points(Hero3 + Hero2)) + 

mean(Synergy_Points(Hero4 + Hero1) + Synergy_Points(Hero4 + Hero2) + Synergy_Points(Hero4 + Hero3)  

[And so on... till Hero5]

解释公式:英雄1和英雄2协同后的每个协同值都是由该英雄与团队其他成员的平均值计算出来的,当英雄5加起来时,我得到了团队所有值的总和。你知道吗

我的答案是,在给定公式的情况下,如何(使用Python或R)找到具有最大可能协同效应的团队,以及在可能有64位英雄(大约)的情况下,如何编写代码来找到它。你知道吗


Tags: httpswww情况团队mean协同points公式
1条回答
网友
1楼 · 发布于 2024-10-02 14:21:37

最简单的方法是通过计算所有英雄的组合并计算他们的总协同得分来暴力攻击它。然而,在大多数计算机上,这需要几分钟到一个小时。你知道吗

更有效的方法是首先对Synergy.积分列从高到低。然后问题就变成了寻找一条由五位英雄组成的“路径”,使得路径中的最高位置在桌子上的位置尽可能低(即与协同效应最大相关)。你知道吗

路径是一个英雄列表,你可以从一个英雄跳到另一个英雄,直到你有五个唯一的英雄。在下表中,路径为1->;2->;5->;6->;7。表中与此路径相关的位置为1、4、5、2,其中最高点为5。你知道吗

这将保证总的协同效应是最高的。你知道吗

HeroID  Synergy.With.HeroID      Synergy.Points
1               2                       97
6               7                       95
1               4                       94
2               5                       11  
5               6                       2

至于python代码,这有点棘手。。。。我尝试了20分钟,但我意识到有很多并发症。例如,一个路径可能有一个循环,如果你的程序不小心,它可能会创建一个无限循环。你知道吗

如果你想做这个过程一次,找到这个游戏最有效的团队,我会尝试暴力的方法。如果你想一遍又一遍地运行这段代码,我会向计算机科学stackoverflow和get提出这个问题,并用python实现这个问题。你知道吗

我希望这有帮助:)

相关问题 更多 >