【发布时间】:2013-10-06 00:01:31
【问题描述】:
我正在尝试找到一种算法来识别结果的有序组合,如下所示:
- 有 N 场比赛,每场比赛有 3 种互斥结果(赢、输或平),总共 3N 种结果和 3^N 种组合
- 3N 个可能的结果中的每一个都被分配了一个唯一的等级,最优选的结果的等级为 1,最不优选的结果的等级为 3N
- 找出每场比赛的前 M 个结果组合,从包含排名最高的结果的组合开始。
例如,假设 N = 3,结果排名如下:
Contest 1 Win = 1
Contest 1 Tie = 4
Contest 1 Loss = 7
Contest 2 Win = 2
Contest 2 Tie = 5
Contest 2 Loss = 8
Contest 3 Win = 3
Contest 3 Tie = 6
Contest 3 Loss = 9
鉴于这些排名,组合应按以下顺序排列:
Contest 1 Win (1), Contest 2 Win (2), Contest 3 Win (3)
Contest 1 Win (1), Contest 2 Win (2), Contest 3 Tie (6)
Contest 1 Win (1), Contest 2 Win (2), Contest 3 Loss (9)
Contest 1 Win (1), Contest 2 Tie (5), Contest 3 Win (3)
Contest 1 Win (1), Contest 2 Loss (8), Contest 3 Win (3)
Contest 1 Win (1), Contest 2 Tie (5), Contest 3 Tie (6)
Contest 1 Win (1), Contest 2 Tie (5), Contest 3 Loss (9)
Contest 1 Win (1), Contest 2 Loss (8), Contest 3 Win (6)
Contest 1 Win (1), Contest 2 Loss (8), Contest 3 Loss (9)
Contest 1 Tie (4), Contest 2 Win (2), Contest 3 Win (3)
Contest 1 Loss (7), Contest 2 Win (2), Contest 3 Win (3)
Contest 1 Tie (4), Contest 2 Win (2), Contest 3 Tie (6)
Contest 1 Tie (4), Contest 2 Win (2), Contest 3 Loss (9)
Contest 1 Loss (7), Contest 2 Win (2), Contest 3 Tie (6)
Contest 1 Loss (7), Contest 2 Win (2), Contest 3 Loss (9)
Contest 1 Tie (4), Contest 2 Tie (5), Contest 3 Win (3)
Contest 1 Tie (4), Contest 2 Loss (8), Contest 3 Win (3)
Contest 1 Loss (7), Contest 2 Tie (5), Contest 3 Win (3)
Contest 1 Loss (7), Contest 2 Loss (8), Contest 3 Win (3)
Contest 1 Tie (4), Contest 2 Tie (5), Contest 3 Tie (6)
Contest 1 Tie (4), Contest 2 Tie (5), Contest 3 Loss (9)
Contest 1 Tie (4), Contest 2 Loss (8), Contest 3 Tie (6)
Contest 1 Tie (4), Contest 2 Loss (8), Contest 3 Loss (9)
Contest 1 Loss (7), Contest 2 Tie (5), Contest 3 Tie (6)
Contest 1 Loss (7), Contest 2 Tie (5), Contest 3 Loss (9)
Contest 1 Loss (7), Contest 2 Loss (8), Contest 3 Tie (6)
Contest 1 Loss (7), Contest 2 Loss (8), Contest 3 Loss (9)
我正在寻找一种方法来生成这些组合,以便获得任意大的 N 值,尽管我不希望得到所有组合。例如,对于 N=256 和总共 3^256 个组合,我希望找到前 500 个组合。
【问题讨论】:
-
7,2,3不应该在4,5,3之前吗?因为第一个中最高的是 2,第二个是 3 和 2 -
@Dukeling - 你是对的。我想我现在明白了。很明显,我无法像可以将其放入算法一样有效地在脑海中弄清楚这一点;)
-
执行 base-3 中的所有操作,通过将每对位视为三进制数字,从标准二进制表示中模拟 base-3 表示,具有三个可接受的值:01、10 , 和 11.
-
@PieterGeerkens - 好的,我可以用这种方式模拟 base-3 表示,但这如何帮助我获得按等级排序的组合?
-
@PieterGeerkens(阅读问题的最后一句)生成多达 3^256 个组合将永远耗时,无论您的效率如何。
标签: algorithm