我正在写信询问Z3 Optimize函数背后的理论/算法,尤其是其maximum
和minimum
函数。对我来说这似乎很神奇。是某种程度上的二进制搜索吗?如何在这里有效地找出最大值/最小值?
我试图搜索相关功能(例如execute_min_max
功能)的源代码,但是如果不深入了解那里的术语,对我来说并没有太大意义。 lex
在这里代表什么?似乎解决方案以某种方式保留在堆栈中。
任何建议都将不胜感激。谢谢。
答案 0 :(得分:2)
请参阅有关该主题的出版物,例如
1。 Nikolaj Bjorner和Anh-Dung Phan。 νZ-对Z3的最大满意度。在Proc国际软件符号计算研讨会中科学,加纳玛特,突尼斯,2014年12月。《计算机易事录》(EPiC)。 [PDF]
2。。 Nikolaj Bjorner,Anh-Dung Phan和Lars Fleckenstein。 Z3-优化的SMT求解器。 TACAS,LNCS的第9035卷。斯普林格(Springer),2015年-而且,如果这些还不够的话,任何其他与“优化模理论”主题相关的出版物。 [Springer] [[PDF]
z3
优化模理论(OMT)求解器具有各种优化过程。其中一些技术比其他技术更有效,但只能处理某些类别的目标函数(即伪布尔/ MaxSMT目标)。对于不能简化为 Pseudo-Boolean / MaxSMT 的 Linear Arithmetic 成本函数,大多数OMT求解程序都采用了最优化搜索的基本方法在 linear-或 binary-search 中。有关这两种方法的比较,请参见
Roberto Sebastiani和Silvia Tomasi 通过LA(Q)成本函数优化SMT。在IJCAR中,LNAI的第7364卷,第484–498页。施普林格,2012年7月。[PDF]
Roberto Sebastiani和Silvia Tomasi 。 具有线性理性成本的优化模理论。 ACM Transactions on Computational Logics,16(2),2015年3月。[PDF]
我不确定如何回答问题“如何有效在此处找出最大/最小值..?” ,因为第一个应该定义什么效率是指在这种情况下。从前两个出版物中可以看出, binary-search 并不总是最佳选择,因为优化中的搜索步骤并不具有相同的“ cost” 。
词典编辑优化的定义可以在整个互联网上找到,这是我最近使用的定义:
定义4.6.4。 (词汇表OMT [BP14,BPF15,ST15b,ST15c]。)假设
<φ,O>
是一个多目标OMT问题,其中φ
是基本SMT公式,O = { obj_1 , ..., obj_N }
是N
个目标函数的排序列表。我们称词典上的OMT问题为问题,该问题是找到满足M
并使每个φ
最小¹的模型obj_i
的问题。¹:实际上不需要将目标全部最小化,这只是为了易于定义
AFAIK ,z3
中实现的词典优化过程在任何公开可得的论文中均未得到详尽描述。但是,lex
的一种简单方法是运行N
单目标(增量)优化,每次固定在上一轮获得的最优值。
如果这还不足以回答您的问题,请查看与 Optimized Modulo Theories (优化模理论)主题相关的其他出版物。