現在、どのメンバーが 1 であるかどうかを判断するために、ブール式を解析する必要があるため (転写される可能性があるもの)、ご連絡を差し上げております。
トピックを明確にするために、ここに例を示します。私はこの方程式を持っています:
equ = ((((SIPROT:1 INTERACT (((((((ACTIVE_drawing OR ACTIVE_hd) OR ACTIVE_dm) OR PDIFF_drawing) OR NDIFF_drawing) NOT polyact_sign_mkr) NOT ((COPY (NWELL_drawing OR NWELL_hd)) AND (((((ACTIVE_drawing OR ACTIVE_hd) OR ACTIVE_dm) OR PDIFF_drawing) OR NDIFF_drawing) NOT polyact_sign_mkr))) NOT ((COPY (PPLUS_drawing OR PPLUS_hd)) OR (COPY ((NPLUS_drawing OR NPLUS_dm) OR NPLUS_hd))))) INSIDE RHDMY_drawing) INTERACT ((((COPY ((NPLUS_drawing OR NPLUS_dm) OR NPLUS_hd)) AND (((((ACTIVE_drawing OR ACTIVE_hd) OR ACTIVE_dm) OR PDIFF_drawing) OR NDIFF_drawing) NOT polyact_sign_mkr)) INTERACT (N(((((ACTIVE_drawing OR ACTIVE_hd) OR ACTIVE_dm) OR PDIFF_drawing) OR NDIFF_drawing) NOT polyact_sign_mkr) INTERACT ((COPY (PPLUS_drawing OR PPLUS_hd)) AND (((((ACTIVE_drawing OR ACTIVE_hd) OR ACTIVE_dm) OR PDIFF_drawing) OR NDIFF_drawing) NOT polyact_sign_mkr)))) NOT NLDEMOS_FINAL)) OUTSIDE (COPY GO2_25_drawing))
これは、さまざまな「色」で描かれた他のいくつかの描画を含む、形状の方程式を記述しています。
したがって、私の方程式の入力は、ACTIVE_drawing
たとえば「色」です。私の目標は、この式を使用して、どの色が必須、禁止、またはオプションであるかを示すことequ=1
です。それが、私が真理値表について話している理由です。
方程式は実際にはブール値ではありませんが、処理してブール値にすることができます。INTERACT
で置き換えることができ、削除することができ、他の操作が必要になる場合がありますAND
。COPY
したがって、私の質問は、「真のブール値」を得るために方程式を置き換える方法ではなく、ブール式を正しく解析して対応する真理値表を取得するために実装するアルゴリズムについてです。
あなたはそれについていくつかのヒントを持っていますか?私は方程式を生成するために Perl で作業しているので、それを保持したいと思いますが、それを処理するために私の入力を受け取ることができる別のツールを知っているなら、どうしてですか。