Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 如何在纸牌游戏中解决n人在r轮中的组合(仅一次遭遇)_Algorithm_Math_Combinatorics_Playing Cards - Fatal编程技术网

Algorithm 如何在纸牌游戏中解决n人在r轮中的组合(仅一次遭遇)

Algorithm 如何在纸牌游戏中解决n人在r轮中的组合(仅一次遭遇),algorithm,math,combinatorics,playing-cards,Algorithm,Math,Combinatorics,Playing Cards,德国有一种著名的纸牌游戏叫“Doppelkopf”。 通常,您可以与4名玩家一起玩“Doppelkopf”,但您也可以与5名玩家一起玩,其中一名玩家正在观看。 (每个人每轮“有牌”一次,意味着每个人都有权每轮玩一次第一张牌。) 每年,我的家人都会组织一场三回合的“Doppelkopf”锦标赛(r)。 根据我亲戚的情况,每年参加人数都会有所不同。 预计最少有16人参与,本实验中的人数(n)可以无限增加(轮数r)。 当然,我的亲戚们不想和某人结对两次,因为他们想最有效地交流流言蜚语 我们有: n-参

德国有一种著名的纸牌游戏叫“Doppelkopf”。
通常,您可以与4名玩家一起玩“Doppelkopf”,但您也可以与5名玩家一起玩,其中一名玩家正在观看。
(每个人每轮“有牌”一次,意味着每个人都有权每轮玩一次第一张牌。)
每年,我的家人都会组织一场三回合的“Doppelkopf”锦标赛(
r
)。
根据我亲戚的情况,每年参加人数都会有所不同。
预计最少有16人参与,本实验中的人数(
n
)可以无限增加(轮数
r
)。
当然,我的亲戚们不想和某人结对两次,因为他们想最有效地交流流言蜚语
我们有:
n
-参与者
r
-轮

    t_total = n // 4                    # Total Tables (round down of n)
    t_5 = n % 4                         # Tables of 5s
    t_4 = t_total - t_5                 # Tables of 4s
    pos_pair = n * (n - 1) / 2          # possible pairs (n over 2)
    nec_pair = (t_5 * 10 + t_4 * 6) * r # necessary pairs
我的目标是尽量减少遭遇(如果可能的话,为每个人设置遭遇==1)
因为,我不想解决P{n={16,…,32},r=3}的问题(在某些情况下我是这样做的),而是用任何给定的P{n来解决它∈N、 r∈N} ,我的能力与解决方案的要求之间存在差异

因此,我想请社区帮助我解决这个问题,为任何给定的P{n解决它∈N、 r∈N} !
并且证明,如果这个问题对于任何P{n都是不可解的∈N、 r∈N} ,如果pos\U对,则给出“

以下是p{n=20,r=3}的两种解决方案:
这很好地解决了我的“Doppelkopf”锦标赛问题:

(“最佳结果是”、[[1,2,3,4]、[5,6,7,8]、[9,10,11,12]、[13,14,15,16]、[17,18,19,20]、[[16,12,8,18]、[13,1,5,9]、[15,4,17,6]、[2,19,7,10]、[14,9,17,7]、[13,20,8,2]、[5,4,12,19]、[6,16,11,1]、[15,18,10,3])

(“最佳结果是”、[[1,2,3,4]、[5,6,7,8]、[9,10,11,12]、[13,14,15,16]、[17,18,19,20]、[19,11,13,3]、[2,15,9,8]、[1,16,18,6]、[14,7,17,10]、[4,12,20,9,16,7]、[15,11,6,4]、[2,13,10,18,18]、[1,19,14,5])

但是为了用任意的
n
r
来解决这个问题,我没有得出任何结论
在我看来,有三种方法可以通过计算解决或近似解决这个问题。

  • 首先,您可以迭代回合,并将每个玩家分配给 没有碰撞的桌子,记住配对和外观 总计(不超过总轮数)
  • 其次,您可以对表进行迭代,这似乎对参与者很有帮助,它是2的倍数(参见P{n=16,r=5} )
    • 还记得配对和外观,但主要遵循一定的规则 链接中描述的patters,我不知怎的无法缩放到 其他数字
  • 有一种数学方法可以描述这个过程并得出一个解决方案

  • 虽然,这更多的是一个数学问题(我不知道该在哪里问这些问题),但我对算法解决方案感兴趣

    这是一个很难解决的问题,有很深的数学知识,一些约束满足算法,还有很多未知数。关于它的已知内容以关键词“社交高尔夫问题”和变体发布。这就是NP和NP问题,你可以在网上找到大量的文档,也许你会想从一个heuristic@DavidEisenstat谢谢为了找到解决问题的方法,我费了好大的劲才想出这个问题!关键词“社交高尔夫问题”非常有用。