我有一个家庭作业任务来证明哲学家哲学家问题上的特定变体是否遭受了死锁或饥饿。我怀疑这种情况根本没有受到任何影响,但我发现这种棘手的证明,我真的不知道从哪里开始。是否有针对这类问题的一般策略?我如何证明哲学家哲学家是否患有死亡或饥饿的可能性?从哪儿开始?
3
A
回答
2
您可以阅读关于DAG(定向非循环图)的Wait-for graphs(更多详细信息here)并用于检测死锁。
欢呼声
0
首先,我会非常惊讶地听到有一个通用的策略来解决这个问题,这个问题不是那么抽象以至于毫无用处。
现在,显示的变化是安全得多,容易得多比证明它:你的任务是证明的变化是安全的?如果是这样,你可以减少零件的数量(将哲学家的数量减少到两个或三个),并尝试应用一个或多个方法formal verification。
实际上,形式验证非常罕见,我可以用一个例子来说明最好:我曾与在核设施中使用过软件的人们进行过交流(并没有详细介绍),当我问他们是否他们使用形式验证,我得到了“很好,是的,我们应该[正在使用它] ...”
相关问题
- 1. 哲学家蟒蛇
- 2. 餐饮哲学家算法死锁
- 3. 哲学家同步算法
- 4. 如何开始编码“餐饮哲学家”模拟?
- 5. erlang和餐饮哲学家的并发
- 6. 导体解决哲学家晚餐
- 7. 餐饮哲学家使用信号灯
- 8. React CSS哲学
- 9. UITableView NSFetchedResultsController哲学
- 10. 餐饮哲学家(我的实现)过程不沟通
- 11. 餐饮哲学家 - 最后的线程没有正常终止
- 12. SVN合并 - 哲学
- 13. 开发团队的开发哲学
- 14. Java与餐饮哲学家之间的信号量问题
- 15. 用餐哲学家,用他们吃的次数来实现?
- 16. 哲学家就餐,innodb的,选择用于更新
- 17. 关于商业规则的哲学家问题
- 18. 餐饮哲学家的解决方案陷入僵局
- 19. 餐饮哲学家使用二元信号量
- 20. 另一个哲学家就餐并发问题
- 21. 在java中使用信号量使用哲学家
- 22. 滚动条的哲学
- 23. 哲学对象/属性参数查询
- 24. 我的信号量模块工作不正常(餐饮哲学家)
- 25. 我们如何拥有单元测试的哲学?
- 26. 关于我的熟睡理发师和餐饮哲学家算法的正确性的提示(不是答案)?
- 27. Objective-C的面向对象的哲学
- 28. 在餐饮哲学家的算法中将信息传递给多个线程
- 29. 需要关于OOP哲学的建议
- 30. 三路合并 - 不同的哲学?
询问设置作业的人。您直接或间接支付。 – 2010-03-14 18:06:51
你看过http://en.wikipedia.org/wiki/Dining_philosophers_problem#Problem吗?死锁测试非常简单。 – 2010-03-14 18:13:31
@詹姆斯。这取决于变化的性质。它可能对所有哲学家都没有固定的行为。 – 2010-03-14 18:20:16