2012-03-02 15 views
1

我創建了一個WQL查詢表達式,爲了目標,在其擁有軟件的既不是版本1或版本2機軟件部署。OR和AND的區別?

我想出了兩個表達式,這兩個似乎有相同的結果,並希望運行此邏輯對你,看看這些表情是真正等同?如果是的話,我可能會去表達1.

表達式1:

部署Software.version1到機器如果機器處於「組別」及 機器沒有Software.version1並且機器被不Software.version2

表達式2:

部署Software.version1到機器如果機器在 「組別」 爲AND( 機器不是Software.version1或機器不是Software.version2)

我的大腦開始受到傷害。

非常感謝

+0

既不是Version1 **也不是** Version2。考慮一下。 – vulkanino 2012-03-02 13:59:56

回答

2

在表達式1中,所有這三個條件都爲真(在機器1組和不版本1和不是版本2)。在表達式2中,兩個條件必須爲真:機器處於組1而不是版本1或機器是組1而不是版本2.

假設機器不能同時擁有版本1和版本2同時,如果機器處於組1中的第二個表達式總是爲真,如果機器是在第1組和既不具有版本1版本也不2.

在邏輯術語第一表達只會是真,則有:

exp1 = g1 ∧ ~v1 ∧ ~v2 

exp2 = g1 ∧ (~v1 ∨ ~v2) 
    = g1 ∧ ~(v1 ∧ v2) // by DeMorgan's theorem 

因此,答案是沒有,兩人的表情是不等價。如果你不明白爲什麼,寫出所有三個條件和兩個表達式的真值表。

+0

是的。假定一臺機器不具有兩個軟件版本是公平的。 – OdgeUK 2012-03-02 16:20:44

+0

需要將軟件包部署到尚未擁有軟件包(版本1)或更高版本的軟件包(版本2)的機器上。實際上,如果你既沒有,也只能部署它。當我運行邏輯時,兩個表達式都會給我我想要的結果....我認爲....那就是沒有將軟件版本1部署到已具有版本1或版本2的機器的風險? – OdgeUK 2012-03-02 16:32:49

+0

閱讀我再次寫的內容。使用第二個表達式,該軟件包將被部署到每臺不具有*版本1 *和*版本2的組1機器。如果一次只能安裝一個版本,那麼您將*部署將該軟件包分配給第1組機器。如果一臺機器有版本1,那麼它沒有版本2,所以'〜v2'是真的,這意味着'(〜v1∨〜v2)'是真的。出於同樣的原因,如果一臺機器有版本2,'(〜v1∨〜v2)'將再次成立。然而,第一個表達式按照您的描述工作:您將* only *部署到既不具有v1也不具有v2的機器。 – Caleb 2012-03-02 16:40:32

0

我不熟悉的索緒爾,但邏輯似乎很簡單。

如果我理解正確的問題,你想:

  • (1,1) - > 1(既不是版本1還是2)
  • (1,0) - > 0(是版本2)
  • (0,1) - > 0(是版本1)
  • (0,0) - > 0(是版本1和2)

這將通過式1來實現。

表達式2將返回:

  • (1,1) - > 1
  • (1,0) - > 1
  • (0,1) - > 1
  • (0 ,0) - > 0

我強烈建議你測試任何語言將幫助你(我確定有某種打印布爾函數),並且因爲它不是很多測試,真的,只是測試所有的一切ee或四種可能性,並看看它是否會返回你想要的。