【发布时间】:2010-10-21 21:33:35
【问题描述】:
对于一个拥有 1000 万玩家的在线扑克网站,描述合谋检测算法复杂性的最佳方式是什么?
假设(我认为这些假设没有太大区别,因此请随意忽略它们,但只是澄清一下):
- 该网站有 10,000,000 名注册用户。
- 这些玩家总共玩了 50 亿手牌。
- 您获得的唯一信息是该网站的“主手牌历史数据库”,其中包含所有玩家底牌和每手牌的下注动作。
- 换句话说,您不能走捷径,例如检查 IP 地址、寻找不寻常的抽成/利润模式等等。
- 假设您有一个函数,当传递一组正好有 N 个(其中 N 介于 2 到 10 个)玩家时,如果该组中的所有玩家都串通在一起,则返回 TRUE。如果部分但不是所有玩家是共谋者,则该函数返回 FALSE。 TRUE 的返回值是(例如)75% 的置信度。
您的工作是列出所有勾结的玩家的详尽列表,以及与他勾结的玩家的完整列表。我最近听说这个问题被描述为 NP 难,但这准确吗?有时我们称仅是“难”的事物为“NP”或“NP-hard”。
谢谢!
【问题讨论】:
-
我没有答案(还没有?),但还有另一个问题。 :) 如果我调用 haveColluded("Bob", "Jane", "Mary"),并且: 1. Bob 与手上的 Jane 勾结 1. 2. Bob 与手上的 Mary 勾结 2. 3. Jane 与手上的 Mary 勾结3.(假设这些是唯一玩过的游戏)它会返回什么?
-
在这种情况下,假设 Bob、Jane 和 Mary 坐在同一张桌子旁,该函数返回 TRUE。您已经确定了一个 3 人共谋组,并且该组中的每个玩家都不需要在您正在查看的手牌子集期间处于活跃状态。当然,HaveColluded 有点“神奇”,但我觉得有必要限制这个问题。如果可以简化事情,请随意在此处提出您自己对 HaveColluded 的定义! :-)
-
@Coding the Wheel:如果有人问过这个问题,我会告诉他们问你。 :)
-
自从您的帖子以来,我一直在阅读该主题,因为我从未在赌场玩过在线扑克甚至真正的扑克,我不知道从下面的 haveColluded 方法从哪里开始,但我会说研究 David Sklansky 和 Mason Malmuth 的作品,因为他们在我研究这个话题时不断出现。
-
你应该清理数据集并将其发布到某个地方,然后将其转变为 stackoverflow 编码挑战。 ;)
标签: algorithm complexity-theory poker np-hard