我在Alloy中建模了一个图表转换链。我对任何解决结果的链感兴趣,但有些链完全一样。 它们是相同的,除了签名实例之间的排列,但实例之间的关系形成了从一个解决方案到另一个解决方案的完全相同的图形。
有没有办法避免这些冗余解决方案? 我在A4Option类中看到了一个对称选项,但我真的不明白如何配置它。
/** This option specifies the amount of symmetry breaking to do (when symmetry breaking isn't explicitly disabled).
*
* <p> If a formula is unsatisfiable, then in general, the higher this value,
* the faster you finish the solving. But if this value is too high, it will instead slow down the solving.
*
* <p> If a formula is satisfiable, then in general, the lower this value, the faster you finish the solving.
* Setting this value to 0 usually gives the fastest solve.
*
* <p> Default value is 20.
*/
这是否意味着如果我把它禁用了?如果我把一个更高的值,它会避免对称吗? 如果考虑一组原子和这些原子之间的关系作为图形。 Ans一个邻接矩阵,用于表征矩阵中原子之间的关系。 对称性是指2个具有等效邻接矩阵的实例吗?
为了降低求解复杂度,有没有办法向求解器指定我们对某些特定的签名实例置换或关系置换不感兴趣,但是在它们的架构配置中呢?
提前致谢。
答案 0 :(得分:1)
这是否意味着如果我将0 [对称性破坏]禁用?
是
如果我放一个更高的值,它会避免对称吗?
是的,它是最好的。
对称是否意味着2个具有等效邻接矩阵的实例?
我不知道“邻接矩阵”是什么意思,但无论如何,答案很可能是“不一定”。对称性破坏只是一种启发式方法;它的实现水平低于Alloy AST,这意味着合金分析仪不一定能自动检测和破坏某些在您的域模型高级别有意义的对称性。
为了降低解决方案的复杂性,有没有办法指定 我们对某些特定签名不感兴趣的解算器 实例排列或关系排列,但在他们的 架构配置?
我不认为使用Alloy可以轻松完成。