如何有效地确定给定的梯子是否有效?


28

在我当地的壁球俱乐部,有一个梯子的工作原理如下。

  1. 在本赛季开始时,我们会在单独的一行中构建一个表,其中包含俱乐部的每个成员的姓名。
  2. 然后,我们在每个名字旁边写上获胜游戏数和玩游戏数(格式:玩家获胜/游戏)。

因此,在本赛季开始时,表格如下所示:

Carol 0/0
Billy 0/0
Alice 0/0
Daffyd 0/0

任何两名玩家均可参加比赛,其中一名玩家获胜。如果最接近桌面底部的玩家获胜,则将切换玩家的位置。然后,我们重复步骤2,更新每个玩家旁边的获胜次数和比赛数。例如,如果爱丽丝击败比利,我们有

Carol 0/0
Alice 1/1
Billy 0/1
Daffyd 0/0

这些比赛在整个赛季中持续进行,最终导致球员按实力顺序排列。

不幸的是,更新是以相当偶然的方式发生的,因此会出错。以下是无效表格的一些示例,也就是说,对于某些开始顺序(我们忘记了本赛季开始时使用的顺序)以及比赛和结果的顺序,无法正确按照上述步骤操作而无法生成的表格:

Alice 0/1
Billy 1/1
Carol 0/1
Daffyd 0/0

Alice 2/3
Billy 0/1
Carol 0/0
Daffyd 0/0

Alice 1/1
Billy 0/2
Carol 2/2
Daffyd 0/1

给定一个表,我们如何有效地确定它是否有效?我们可以从以下几点开始:

  1. 名称的顺序无关紧要,因为我们忘记了原始的起始顺序。

  2. 获胜总数应为比赛总数的一半。(这表明上面的第一个示例无效。)

  3. 假设该表有效。然后是一个多图 -一个允许多个边但没有循环的图-每个顶点对应一个玩家,每个边对应一个比赛。然后,每个玩家玩的游戏总数与多张图中的玩家顶点程度相对应。因此,如果不存在具有适当顶点度的多重图形,则该表必须无效。例如,不存在一个度数为1的顶点和度数为3的顶点的多重图形,因此第二个示例无效。[我们可以有效地检查这种多重图的存在。]

因此,我们有两次检查可以申请开始,但是这仍然允许使用无效的表,例如第三个示例。要查看该表是否无效,我们可以向后工作,并尽一切可能出现该表。

我想知道是否有人可以考虑多项式时间(以玩家数和游戏数为准)算法来解决此决策问题?


2
也许有一个针对定向多图的Havel Hakimi型定理...
Aryabhata 2012年

为什么第三个示例不可行?如果爱丽丝(Alice)胜过鲍勃(Bob),卡罗尔(Carol)胜过鲍勃(Bob),卡罗尔(Carol)胜过达菲(Daffyd),该怎么办。然后爱丽丝(Alice)赢得了1场比赛中的1场,鲍勃(Bob)赢得了2场比赛中的0场,卡罗尔(Carol)赢得了2场比赛中的2场,而达菲(Daffyd)赢得了1场游戏中的0场?
utdiscant 2012年

注意:每场比赛之后,如果低位玩家获胜,则会切换玩家。为了说明第三个示例是可行的,您需要给出一个初始配置和一系列游戏-即按顺序进行-生成给定的表格。
2012年

aryabhata:谢谢-是的,那将是一个有用的步骤。不幸的是,这听起来很难……
2012年

1
研究/解决这个问题的建议。将其指定为SAT问题。然后尝试许多随机情况。看看对于标准求解器来说有什么困难。如果不是,则可能是P中的一个受约束子集
。– vzn

Answers:


1

这不是一个完整的答案。我对这个问题作了简单的说明,并作了一些说明。

我们从一个顶点标记为的图开始。[n]

我们有一个操作,将从u的有向边添加到图形,并且如果l a b e l v < l a b e l u 切换其标签。vulabel(v)<label(u)

给定有n个顶点和e个边的有向多图,检查是否可以使用上述操作获得。GñË

不难发现问题出在:证书是导致G的一系列操作(多项式大小)。ñPG

观察

一种bËvvv

我认为应该可以将此观察结果与Havel-Hakimi结合起来,以给出多项式时间算法。


你好 谢谢。您介意在梯子的语境中再次陈述您的观察结果吗?我认为第3阶图有一个反例,但也许我读错了。

@Ben,我想是这样:您可以假设梯子上的最后一个人玩了他在比赛开始时赢得的所有游戏,并玩了他在比赛结束时输掉的所有游戏。让我知道是否有对此的反例,我没有仔细检查。
卡夫

不幸的是,有这样的梯子:A 2/2 B 0/1 C 0/1

@Ben,我认为这个例子与我写的东西是一致的,也就是说,它不是观察到的反例。
卡夫

梯子有效。假设最后一场比赛是C的输球。那么在最后一场比赛之前,梯子必须看起来像这样:C 0/0 B 0/1 A 1/1,但是此梯子无效。因此,我们不能假设的最后一场比赛是对C的损失

0

我还没有解决问题,但是有部分结果,下面给出其说明。如果有人感兴趣,我会写出证明。

命题。假设梯子(1)包含一个以上的玩家(2)包含相等数量的获胜和失败;(3)使每个玩家赢得至少一场比赛并输掉至少一场比赛。梯子才有效。

w ^一世一世大号一世一世[R一世

大号一世=0

w ^一世ķ[Rķ>[R一世w ^ķ>0大号ķ-1个++ķ[Rķ<[R一世大号ķ
大号一世w ^一世=0
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.