我正在创建一个简单的网络模型。网络包含节点。每个节点都有一个数据存储。节点将数据从其数据存储发送到其他节点。
sig Node {
data: Data -> Time,
send: Data -> Node -> Time
}
假设节点n在时间段t-t'期间将数据d发送到节点n':
n.send.t' = n.send.t + d -> n'
节点n'的数据存储用d:
更新n'.data.t' = n'.data.t + d
由于节点n已处理数据(即发送数据),因此n 从其数据存储中删除 d:
n.data.t' = n.data.t - d
假设在同一时间段内,另一个节点N向节点n发送了相同的数据d。这导致将 d添加到n的数据存储中:
n.data.t' = n.data.t + d
糟糕!有一个矛盾:
n.data.t' = n.data.t - d
n.data.t' = n.data.t + d
没有令人满意的情况。该怎么办?如何处理从数据存储中删除d的节点,同时将d添加到其数据存储中?
答案 0 :(得分:1)
只需定义n.data.t'在n.data.t和n' .send.t方面,对于所有其他节点n',包括n。