我的老师已指派我们在Promela中编程Dijkstra的令牌终止算法。这是算法:
“每个节点都维护一个计数器c。发送消息会使c增加1;消息的接收减少c。所有计数器的总和因此等于网络中待处理的消息数。 当节点0启动检测探测时,它将值为0的令牌发送到节点N-1。我保留令牌的每个节点,直到它变为被动;然后,它将令牌转发到节点i-1,将令牌值增加c。 每个节点以及令牌都有一种颜色(最初都是白色)。当节点收到消息时,该节点变黑。当节点转发令牌时,节点变为白色。如果黑色机器转发令牌,则令牌变黑;否则令牌保持其颜色。 当节点0再次接收令牌时,它可以结束终止,如果 节点0是被动和白色的, 令牌是白色的,和 令牌值和c的总和为0。 否则,节点0可能会启动新探测。“
我有点理解,但我真的很难理解发生了什么。如果有人能够帮助解释算法正在逐步完成的工作,那就太棒了。此外,虽然我不希望任何人为我编写代码,但任何有关如何入门的提示都会有所帮助。