ブール式の LENGTH を最小限に抑えることができるコードを書き出そうとしているので、コードは式の要素数をできるだけ少なくする必要があります。今、私は立ち往生していて、助けが必要です =[
ルールは次のとおりです。ブール式には任意の数の要素を含めることができますが、AND 演算子と OR 演算子、および角かっこのみが含まれます。
たとえば、ブール式 ABC+BCD+DE を渡すと、最適な出力は BC(A+D)+DE になり、2 つの BC が 1 つに結合されるため、元のユニット スペースと比較して 2 つのユニット スペースが節約されます。
私の論理は、式の中で最も頻繁に出現する要素を見つけて、それを因数分解しようとするというものです。次に、完全に因数分解されるまで、関数を再帰的に呼び出して、因数分解された式に対して同じことを行います。しかし、元の表現で最も一般的な要素を見つけるにはどうすればよいでしょうか? つまり、上記の例では、BC? 要素のさまざまな組み合わせをすべて試して、各組み合わせが式全体に現れる回数を見つける必要があるようです。しかし、これは本当に素朴に聞こえます。2番
誰かがこれを効率的に行う方法についてヒントを与えることができますか? Googleで検索できるいくつかのキーワードでも十分です。