2017-03-20 138 views
0

我想寫一個Petrick's method,這是一種技術Quine–McCluskey algorithm擴大產品的總和產品的最小總和

假設我有一個數學方程,它由+*組成。例如:

(K+L)(K+M)(L+N)(M+P)(N+Q)(P+Q) 

我該如何拿出方程來得到所有產品的總和?

K*K*L*M*N*P + K*K*L*M*N*Q + .... (63 terms) 

(你可以看到WolframAlpha的推測結果)

+0

您如何儲存產品? – Charles

+0

我不明白這個問題。你在尋找Mathematica命令嗎?這將簡單地爲'Expand [(K + L)(K + M)(L + N)(M + P)(N + Q)(P + Q)]''。 – Michael

+0

@邁克爾我的意思是我怎麼能得到類似於WolframAlpha的結果。 – MiP

回答

0

我有點懷疑這是你想要的,但獲得的結果作爲字符數組...

w = Expand[(K + L) (K + M) (L + N) (M + P) (N + Q) (P + Q)]; 
x = [email protected][w]; 
z = StringReplace[x, y_ ~~ "^2" :> StringJoin[y, "*", y]] 
K*K*L*M*N*P + K*L*L*M*N*P + K*L*M*M*N*P + ... + L*M*N*P*Q*Q 
DeleteCases[[email protected], " "] 
{K,*,K,*,L,*,M,*,N,*,P,+, ... ,+,L,*,M,*,N,*,P,*,Q,*,Q} 
0

比你預期的我有較少的條件 - 只有五個,而不是63:

enter image description here

由於Boolean表達式:

(k+l) & (l+n) & (k+m) & (m+p) & (n+q) & (p+q) 


knp + lmq + lmnp + klpq + kmnq 

這可能是有趣的,看看後面的代碼this site。這是Petrick的方法的執行JavaScript