这是一个算法问题,我不确定它是否有解决方案。我认为这是一个更通用的计算机科学问题的具体案例,没有解决方案,但我宁愿不披露哪一个避免种植偏见。它来自现实生活中的情况,其中手机没有信用,因此,我们没有远程通信。
两组人,每人2人(但可能适合N人)安排在公园中心见面,但在会议时,公园关闭。现在,他们将不得不在公园周围的其他地方见面。是否有一个算法,每个人都可以遵循以在一个点上收敛所有?
例如,如果每个小组分成两个并四处走动,当他们发现另一个人继续跟那个人走时,他们都会聚集在公园的另一边。但是,如果另一组做同样的事情,那么他们将无法将其他组的成员带到他们身边。这不是一个可能的解决方案。
我不确定我是否解释得很好。我可以尝试绘制图表。
答案 0 :(得分:18)
N > 1, K > 1
N
人K
组。由于问题是基于手机信誉不足的人,因此我们假设每个群组中的每个人都有自己的手机。如果这是不可接受的,那么用电话卡,社会保障,驾驶执照或任何其他具有数字标识的物品替换手机,保证是唯一的。
在每组中,每个人必须记住该组中最高的数字,并且编号最高的人(标记为leader
)必须绕着周边顺时针行进,而其他人保持不变。
在每个小组的leader
遇到下一个小组后,他们会将小组的号码与小组之前的leader
号码进行比较。
如果领导者的号码高于小组前一个领导者的号码,那么领队和小组都将继续沿着公园的周边。如果该组的前一个领导者的数字较高,则他们都会保持原状。
最终,具有最高编号的leader
将在整个周长内完全旋转1圈,收集整个组。
N > 1, K = 1
的确定性解决方案(在一段时间内有一个合理的知识假设)在这种情况下,每个组只包含一个人。让我们假设使用的号码是电话号码,因为有理由认为至少有一对人会相互了解其中一个号码,因此其中一个号码会保持不变。
对于N = 2
,这可以简单地减少为一个人留下来,而另一个人顺时针方向。
对于其他情况,至少两个人最初会彼此了解的数字将有效地将最大K
增加到至少2(因为留下来的人将会继续如果他们认识的人的数量高于出现在他们身上的leader
,那么我们仍然会坚持下去,但我们仍然需要再向该算法引入一步,以确保它会终止。
额外的一步是,如果leader
围绕周长继续进行一次旋转而不向群组添加任何人,那么leader
必须将他们的群组留在后面并重新开始旋转一周在周边。这意味着没有群组的leader
会无限期地继续下去,直到找到其他人为止。
通过这一额外步骤,很容易理解为什么我们必须假设至少有一对人需要提前知道对方的电话号码,因为这样我们才能保证留下来的人put最终会累积整个组。
如果您认为我错过了边缘案例,请随意留下评论或建议以改进我已经列出的算法或挑战我。如果没有,那么我希望你喜欢我的回答。
为了好玩,我决定使用d3
编写一个关于问题解决方案的可视化演示。随意使用参数并在任何初始状态下重新启动模拟。这是链接:
https://jsfiddle.net/patrob10114/c3d478ty/show/
<强>关键强>
请注意,collaboration
出现在每个step
的开头,所以如果在当前步骤中只有两个组合在一起,大多数人都不会知道来自对方组的人员,直到<**>调用下一个step
。
答案 1 :(得分:14)
他们应该朝公园的最北端移动。
答案 2 :(得分:9)
我以随机方向发送两个组。如果他们在没有遇到另一组的情况下进行了半圈,则重新随机化指示。这将使他们在大多数时间内在几轮中相遇,但是他们仍然永远不会遇到的可能性非常小。
答案 3 :(得分:7)
确定性算法
证明:使用确定性算法,我们可以从初始位置推导出最终位置,但是这些组可以围绕周边均匀地间隔开始,在这种情况下问题具有旋转对称性,因此解决方案将在1 / n旋转时保持不变,然而在周长上没有固定点。
假设状态 正如其他人已经观察到各种解决方案一样,放弃各种假设导致:
其他假设可能会被削弱:
我认为这个问题确实属于Computer Science Stack Exchange。
答案 4 :(得分:6)
这个问题在很大程度上取决于我们拥有什么样的操作以及您认为您的环境是什么样的。我问你这个问题没有回复,所以这是我的解释:
公园是一个2d的空间,2组随机,每组都有相同的右/左(都面向公园)。两者都有相同的操作编程完成相同的事情(没有像我走的那样,你走了,因为这使得问题显而易见)。所以操作是:向右/向左/停止x单位时间。他们还可以发现他们通过了原来的位置(他们开始的位置)。它们可以循环编程。
如果你有能力使用随机性 - 一切都很简单。你可以提出很多解决方案。例如:概率为0.5,他们每个人都决定他们要么做3步并等待。或者一步吧,等一下。如果你将在一个循环中进行这个操作,他们会选择不同的选项,那么他们会明显地相遇(一个比另一个快,所以他会达到一个较慢的人)。如果它们都选择相同的操作,那么它们将形成一个圆圈并且两者都达到它们的起始位置。在这种情况下,掷骰子一次。 N圈后,他们将遇到的概率为1 - 0.5 ^ n(非常接近1)
答案 5 :(得分:3)
每个小组派出一名侦察员,其余小组成员保持不动。每个小组都记得他们的侦察员的名字。侦察员顺时针绕圈,每当他遇到一个小组时,他们会比较他们的侦察员名字:
当最低命名的侦察兵回到他的起始位置时,所有没有停在他最初位置的人应该跟随他。
答案 6 :(得分:2)
这里有一些解决方案对我来说是不能令人满意的,因为它们要求两个团队事先商定一个策略,并且都遵循相同的确定性或概率性规则。如果您有机会事先同意您将遵循的规则,那么正如flyx所指出的那样,您可能已经同意了一个备用会面点。在计算机网络的某些问题的背景下,阻止预先选择特定地点或特定领导者的限制是标准的,但对于计划会面的四个朋友来说明显不自然。因此,我将从仅有一个团队的POV制定战略,假设之前没有讨论过两个团队之间的情景。
请注意,面对来自其他团队的任何策略,它不可能是健壮的。另一支球队总是可以通过采用一些确保那两个永远不会再见面的运动模式来强迫僵局。
你们中的一个人在公园里散步。另一个站着,让我们在X位置说。这确保了:(a)你将在X周期性地相遇,让我们说每T秒; (b)对于另一支队伍的每名成员,无论他们如何在公园周边移动,他们必须至少每隔T秒至少遇到一支队员。
现在,您可以在两个群组的所有成员之间进行交流,并且(如果有足够的时间和从一个人传递给另一个人的消息),问题就会解决,就像您的手机正在运行一样。通过随机数选择领导者是解决方法的一种方式,正如其他人所建议的那样。请注意,仍然存在两个问题:第一个是通信问题的两个问题,我想您可能会觉得移动电话会话允许生成常识,而这些中继笔记则不然。第二种是其他团队拒绝合作的可能性,无论如何都无法达成会面点。
尽管存在上述问题,但问题是,如果他们进行了沟通,团体就能够达成一个会面点。你有沟通:同意一个会面点!
至于如何达成一个会面点,我认为这需要对其他团队的理由或善意有所吸引力。如果他们再次见面,那么他们将非常不愿意采取任何行动,导致他们违背对伴侣的承诺。因此,在他们下次会议之后向他们建议,当所有承诺都可以被原谅时,他们会以最短的路线一起前往X.听取他们的反建议并尝试找到一些共同的解决方案。
为了帮助您找到解决方案,您可以事先与自己的队友达成一致意见,为计划做出一些变化,只要它们保持一定的限制,确保您再次与队友见面。例如,如果固定的队友同意他们可以说服他们顺时针开始,并且移动的队友设置逆时针并且同意他们可以被说服做一些不同的事情而不是交叉点X在一个顺时针方向,然后你保证再次见面,所以你可以接受其他团队的某些建议。
举个例子,如果一个遵循这个策略的团队遇到一个团队(不明智地)遵循你的策略,那么我的团队中的一个人会同意与他们遇到的团队一起去,另一个团队会拒绝(因为它需要他们在上面进行禁止运动。这意味着当你的团队聚在一起时,他们会让我的一个团队和他们一起参加一个三人小组。如果你的团队没有做任何不正常的事情,那么我的团队的松散成员将与三人组成一个碰撞课程。
我认为组建任意一组三人都是胜利,因此每个成员都应该尽其所能参加另一支球队的会议,但要受到他们同意的限制,他们将再次与自己的队员见面。一组3人,一旦成立,应该遵循任何协议,以满足松散的成员(如果3中的两人团队拒绝这样做,那么他们是破坏者,他们没有充分的理由拒绝)。在这些限制范围内,任何形式的对称性都将允许团队遵循这些原则来说服/跟随其他团队进入3向然后进行4向会议。
一般来说,如果只是因为两个团队可能都遵循我的策略,因此两个团队在不同的点都有一个固定成员,那么就需要一些对称性破坏。
答案 7 :(得分:1)
假设公园是一个圆圈。 (为了清楚起见)
A组
B组
我们(A组)目前位于圆圈的底部(90度)。我们同意向相反方向走向0度。我是A.1和顺时针方向的人。我发送人A.2。逆时针方向。
在任何可能的情况下(B分裂,B不分裂,B具有相同的方案,B具有一些精心设计的方案),每个组可能具有冲突的信息。因此,除非A组有枪强迫B组提交,否则新组可能会在会议时做出相互矛盾的选择。
比如说,A.1。符合B.1和A.2。遇到B.2。如果B有相同的方案,我们(A.1和B.1)会做什么?由于新的群组无法知道其他群体决定的内容(无论是采用A计划还是B&B的计划),每个群体可能会做出不同的决定。
我们最终会在我们开始的地方......(即两个人在0度,两个人在90度)。让我们称之为检查点&# 34;第一次迭代&#34;。
我们可以解释这一点,并说我们会为第二次迭代&#34;提出一个计划。但是同样的事情又发生了。对于第三次迭代,第四次迭代,无限制。
每次迭代都有50%的可能无法解决。
这意味着在x次迭代之后,您在公共点上不会面的可能性最多为1-(0.5 ^ x)
N.B。我想到了一堆场景,例如A组同意回到他们的初始点,并且彼此沟通B组计划做什么。但是,即使采用非常聪明的方案,也不会出现相互矛盾的信息问题。
答案 8 :(得分:1)
确实是一个有趣的问题。我想建议我的解决方案版本:
0每个小组挑选一名领导 1:领导者和追随者走向相反的方向
2:他们会见其他组长或粉丝
3:它们保持与以前相同的方向,90度
4:到目前为止,所有团体都围绕着周边进行了半圈,并且总是再次遇到领导者,他们或其他人。
5:所有领导者都将下一步的方向改为跟随者的方向,并命令他们遵循。
6:所有小组的单位在某一点相遇。
有关详细说明,请参阅附件。您将需要MS Office Powerpoint 2007或更高版本才能查看它。如果您没有,请使用pptx。查看器(Powerpoint查看器)作为一种免费替代方案。
编辑:我在第一张幻灯片中写了一个拼写错误。它显示“黄色和红色被选中”,而它必须是“蓝色和红色”。答案 9 :(得分:0)
每组将分成两部分,每个部分将绕相反方向(顺时针和逆时针)绕圈。
在他们开始之前,他们选择某种随机数(在一个足够大的范围内,以便两个群体不可能拥有相同的数字......或者计算机科学中的指导:全球唯一标识符)。所以每组一个唯一的数字。
如果同一群体中的人首先会面(两个部分相遇),他们就是孤身一人,所以其他群体(如果有的话)可能会放弃。
如果两个小组见面:他们遵循规则,说最大的数字一路领先。因此,当他们相遇时,他们继续朝着人数最多的方向前进。
最后,最大数字的方向将引导他们全部到一点。
如果他们没有计算机可以选择这个号码,那么每个小组都可以使用合并在一起的小组成员的全名。
编辑:抱歉,我发现这与Patrick Roberts&#39;非常接近。溶液
另一个编辑:如果每个组都有自己的确定性策略怎么办? 在上面的解决方案中,如果所有组都具有相同的策略,则一切正常。但在现实生活中,情况并非如此(因为他们无法沟通)。
如果一个群体具有确定性策略而其他群体没有,则他们可以同意遵循确定性方法,一切正常。
但是如果两个群体都有确定性方法(例如,与上面相同,但是一个群组使用最大数量而另一个群体遵循最低数量)。
有解决方法吗?