3

引理 1:我们知道在左撇子和右撇子哲学家混合在一起的任何桌子上,都不会发生死锁。我很熟悉它的样张。

我最近在面试中遇到了以下问题。

有 5 位哲学家坐在一张圆桌旁。每两个哲学家之间都有一根筷子。每个哲学家都需要两根筷子吃饭。我们有两种哲学家:左撇子和右撇子。左撇子先用左手拿筷子。右手先拿筷子用右手。假设在 5 个哲学家中至少有 1 个左撇子和至少 1 个右撇子。哪一个是真的:

a) 在圆桌会议上独立于放置哲学家的组合,没有僵局。(我确定是真的)

b) 如果所有哲学家同时拿起第一根筷子,就会出现僵局。(我认为这是真的,因为暗示如果我们有 a-->b 并且 a 是假的 a-->b 是真的。在这个选项中,没有办法让所有哲学家同时拿起第一根筷子,所以整个陈述是真实的。)

任何专家都可以帮助我,我的论点是真的吗?

编辑1:我添加了引理1的证明:(但上面提到的问题有一些不同。)

首先观察到,由于围绕桌子获取资源的模式,只有一个可能的等待周期,即涉及所有哲学家的周期。所以假设这样的僵局。每个哲学家都必须在等待,我们的意思是等待另一个人拿着的筷子。因此,所有的筷子都必须握住。如果我们的表混合了左撇子和右撇子哲学家,则必须至少有一对相邻的相反习惯的哲学家。首先假设左撇子哲学家(“Lenny”)坐在右撇子哲学家(“Roger”)的左边。因为所有的筷子都必须握住,所以 Lenny 或 Roger 必须握住他们之间的筷子。如果莱尼拿着它,那就是他的“右筷子”,所以他之前肯定已经拿到了他左边的筷子。于是莱尼拿着两根筷子,并且没有等待获得任何东西(他正在吃东西),所以没有僵局。如果罗杰拿着夹在他们中间的筷子,那就是他的“左筷子”​​,那么他肯定之前已经拿到了他右边的筷子,等等。如果我们把前面的情况称为“外伸”的情况,那么“内伸” ” 案例是一个右手哲学家坐在左撇子哲学家的左边。同样,如果我们陷入僵局,则必须握住所有筷子,因此其中一个人将筷子夹在它们之间。这意味着另一个人没有筷子,因为他们之间的那个是每个人都会尝试获取的第一个筷子(罗杰向右伸手拿到筷子,或者莱尼向左伸手拿到筷子;另一个人在伸手之前等待它向外的方向)。如果有n个哲学家和n根筷子,所有筷子都拿着,但是一个哲学家拿着零个筷子,那么 n-1 个哲学家拿着 n 个筷子。有些哲学家必须拿着两根筷子;那个哲学家没有在等待(他在吃饭),所以没有僵局。

4

1 回答 1

0

这是一个示例案例:

一个左撇子哲学家,四个右撇子哲学家:如果都拿起一根筷子,左撇子哲学家赢得了左手筷子的斗争,他有一根筷子,右手边的那根仍然空闲。在下一次迭代中,他或他的右手邻居将拿起最后一根空闲的筷子。不管怎样,至少有一位哲学家有两根筷子可以吃。--> 没有死锁

假设是,没有哲学家试图拿起“外向”筷子,除非他已经获得了“向内”筷子。

现在让我们剖析问题 b):如果所有哲学家都设法在同一时间点获得一根筷子,那么所有哲学家都必须是左撇子或都必须是右撇子。因为那时没有为一根筷子而奋斗,每个哲学家都拿着一根筷子。但这违反了您的先决条件:至少有一个左撇子和一个右撇子哲学家。

假设除了一位以外的所有人都是右撇子,那么两位哲学家将为一根筷子而奋斗。一个人将失去这场斗争,将无法拿起筷子。因此,不能满足“同时拿起筷子”的条件。正如您正确陈述的那样,蕴涵的前提条件为假,因此,蕴涵的计算结果为真。

所以回答你的问题:是的,你的推理是正确的。

于 2015-03-25T12:21:21.203 回答