【发布时间】:2013-01-07 03:37:20
【问题描述】:
这里的任何人都可以解释传递闭包运算符如何根据矩阵在合金中工作。我的意思是将闭包运算符转换为实际矩阵运算的转换规则。
【问题讨论】:
标签: alloy
这里的任何人都可以解释传递闭包运算符如何根据矩阵在合金中工作。我的意思是将闭包运算符转换为实际矩阵运算的转换规则。
【问题讨论】:
标签: alloy
为了计算传递闭包,Kodkod 使用迭代平方。
简而言之,如果你有一个二元关系r(直接转换为二维布尔矩阵),r 的传递闭包可以迭代计算为
问题是我们什么时候停止,即n 应该是什么。由于一切都是有界的,Kodkod 静态知道r 中的最大行数,并且应该直观地清楚,如果将n 设置为该行数,则该算法将产生语义正确的翻译。然而,即使n/2 也足够了(因为我们每次都在平方矩阵),这是 Kodkod 使用的实际数字。
【讨论】:
c 在计算 contents 的传递闭包时无关紧要。要求contents是二元关系,然后^contents像我之前描述的那样计算,最后计算c和^contents之间的简单连接。
ceiling(log_2(n))的界限就够了。