両方が同じかどうかを識別するために、特定の論理式を Java の別の論理式と比較する必要があります。たとえば、式 as((a&b)&(c|d)&(e&f))
と other as を考えてみましょう((a&e)&(c|d)&(b&f))
。どちらも同等です。考慮してください(a&(f&(b&e))&(c|d))
:これも同等です。さらに、この式は入れ子にすることができます。これを接頭辞表記に変換しようと思ったのですが、適切な方法が見つかりません。Expressions は、式タイプが AND/OR であり、その子式 ex の配列を持つ再帰的なクラス オブジェクトです。上記の最初の式の場合:
{
type: AND,
expressions: [{
type: AND,
expressions: [{
type: SIMPLE,
expression: [a] <-- this could also be nested if type would have been logical
}, {
type: SIMPLE,
expression: [b]
}]
}, {
type: OR,
expressions: [{
type: SIMPLE,
expression: [c]
}, {
type: SIMPLE,
expression: [d]
}]
}, {
type: AND,
expressions: [{
type: SIMPLE,
expression: [e]
}, {
type: SIMPLE,
expression: [f]
}]
}]
}
式を単純化して比較する方法はありますか?