引理 1:我们知道在左撇子和右撇子哲学家混合在一起的任何桌子上,都不会发生死锁。我很熟悉它的样张。
我最近在面试中遇到了以下问题。
有 5 位哲学家坐在一张圆桌旁。每两个哲学家之间都有一根筷子。每个哲学家都需要两根筷子吃饭。我们有两种哲学家:左撇子和右撇子。左撇子先用左手拿筷子。右手先拿筷子用右手。假设在 5 个哲学家中至少有 1 个左撇子和至少 1 个右撇子。哪一个是真的:
a) 在圆桌会议上独立于放置哲学家的组合,没有僵局。(我确定是真的)
b) 如果所有哲学家同时拿起第一根筷子,就会出现僵局。(我认为这是真的,因为暗示如果我们有 a-->b 并且 a 是假的 a-->b 是真的。在这个选项中,没有办法让所有哲学家同时拿起第一根筷子,所以整个陈述是真实的。)
任何专家都可以帮助我,我的论点是真的吗?
编辑1:我添加了引理1的证明:(但上面提到的问题有一些不同。)
首先观察到,由于围绕桌子获取资源的模式,只有一个可能的等待周期,即涉及所有哲学家的周期。所以假设这样的僵局。每个哲学家都必须在等待,我们的意思是等待另一个人拿着的筷子。因此,所有的筷子都必须握住。如果我们的表混合了左撇子和右撇子哲学家,则必须至少有一对相邻的相反习惯的哲学家。首先假设左撇子哲学家(“Lenny”)坐在右撇子哲学家(“Roger”)的左边。因为所有的筷子都必须握住,所以 Lenny 或 Roger 必须握住他们之间的筷子。如果莱尼拿着它,那就是他的“右筷子”,所以他之前肯定已经拿到了他左边的筷子。于是莱尼拿着两根筷子,并且没有等待获得任何东西(他正在吃东西),所以没有僵局。如果罗杰拿着夹在他们中间的筷子,那就是他的“左筷子”,那么他肯定之前已经拿到了他右边的筷子,等等。如果我们把前面的情况称为“外伸”的情况,那么“内伸” ” 案例是一个右手哲学家坐在左撇子哲学家的左边。同样,如果我们陷入僵局,则必须握住所有筷子,因此其中一个人将筷子夹在它们之间。这意味着另一个人没有筷子,因为他们之间的那个是每个人都会尝试获取的第一个筷子(罗杰向右伸手拿到筷子,或者莱尼向左伸手拿到筷子;另一个人在伸手之前等待它向外的方向)。如果有n个哲学家和n根筷子,所有筷子都拿着,但是一个哲学家拿着零个筷子,那么 n-1 个哲学家拿着 n 个筷子。有些哲学家必须拿着两根筷子;那个哲学家没有在等待(他在吃饭),所以没有僵局。