ANDとORを含む複雑な条件があります。たとえば、次のようになります。
(c1 OR c2) AND (c3 OR c4 OR c5)
これは次と同等です:
(c1 AND c3) OR (c1 AND c4) OR (c1 AND c5) OR (c2 AND c3) OR (c2 AND c4) OR (c2 AND c5)
この条件は、ANDのみを含む条件のリストに展開できます。
c1 AND c3
c1 AND c4
c1 AND c5
c2 AND c3
c2 AND c4
c2 AND c5
この変換は常に可能ですか?そして、どのアルゴリズムがそれを行うことができますか?
条件はツリーとしてメモリに保存されます。例:
OR
/ \
AND c1
/ ! \
c2 c3 c4
分配法則を使用して、ORをツリーの上方に「移動」する必要があると思います。
(a OR b) AND c = (a AND c) OR (b AND c)
。
それは良いアプローチですか?