3

z3 を使用して整数実数制約を解く場合、(同等の) 制約を記述する次の 2 つの方法のうち、(パフォーマンスの点で) 好ましいのはどれですか?

(アサート (=> (and (<= 0.0009765625 値) (< 値 0.001953125)) (= 新しい値 0.0009765625)))

                                     OR

(アサート (=> (および (<= (/ 1.0 1024.0) 値) (< 値 (/ 1.0 512.0))) (= 新しい値 (/ 1.0 1024.0))))

ここでは 2 の冪乗の逆数があることに注意してください (そして、小さい数と大きい数の両方を含むこのタイプの制約が多数あります)。

4

1 に答える 1

4

内部的に、Z3 は 10 進数表記のすべての数値を分数に変換します。この変換は、数式の解析時に実行されます。とにかく、これら 2 つのエンコーディング間でパフォーマンスに大きな違いが見られるとは考えていません。解析時間は通常、Z3 では重要ではありません (解決時間と比較すると)。

于 2013-07-22T19:27:20.903 に答える