• 并發約束邏輯編程

    編輯
    本詞條由“匿名用戶” 建檔。

    并發約束邏輯編程

    編輯

    并發約束邏輯編程約束邏輯編程的一個版本,主要目的是對并發過程進行編程,而不是解決約束滿足問題(或除此之外)。約束邏輯編程中的目標被并發地評估;因此,一個并發過程被編程為解釋器對一個目標的評估。從語法上看,并發約束邏輯程序與非并發程序相似,xxx的例外是,子句中包括守護,即在某些條件下可能阻止子句的適用性的約束。在語義上,并發約束邏輯程序與其非并發版本不同,因為目標評估的目的是實現一個并發的過程,而不是尋找問題的解決方案。最值得注意的是,這種差異影響了解釋器在多個條款適用時的行為:非并發約束邏輯編程遞歸地嘗試所有條款;并發約束邏輯編程只選擇一個條款。這是解釋器的預期方向性的最明顯的影響,解釋器永遠不會修改它之前的選擇。這方面的其他影響是,在語義上有可能出現一個無法證明的目標,而整個評估并沒有失敗,還有一種特殊的方式來等同于目標和句首。約束處理規則可以被看作是并發約束邏輯編程的一種形式,但用于約束簡化器或求解器的編程,而不是并發過程。

    并發約束邏輯編程的描述

    編輯

    在約束邏輯編程中,當前目標中的目標是按順序評估的,通常以后進先出的順序進行,較新的目標先被評估。邏輯編程的并發版本允許并行地評估目標:每個目標都由一個進程來評估,而且進程是并發運行的。這些進程通過約束存儲進行交互:一個進程可以向約束存儲添加一個約束,而另一個進程則檢查約束是否被存儲所包含。向存儲空間添加約束的過程與常規約束邏輯編程一樣。檢查約束的包含性是通過子句的防護措施來完成的。守護需要一個語法擴展:并發約束邏輯編程的一個子句被寫成H:-G|B,其中G是一個約束,稱為子句的守護。這個規則的精確定義比較復雜,下面將給出。非并發和并發約束邏輯編程的主要區別在于,前者是針對搜索的,而后者是針對實現并發過程的。這種差異影響到選擇是否可以被撤銷,是否允許進程不終止,以及目標和子句頭如何被等同。常規約束邏輯編程和并發約束邏輯編程之間的xxx個語義差異是關于當一個以上的子句可以用來證明一個目標的條件。非并發邏輯編程重寫一個目標時,會嘗試所有可能的子句:如果目標不能被證明,同時用一個子句的新變體替換它,則證明另一個子句,如果有的話。這是因為我們的目的是證明目標:所有可能證明目標的方法都被嘗試了。另一方面,并發約束邏輯編程的目的是對并行進程進行編程。

    并發編程

    在一般的并發編程中,如果一個進程做出了選擇,這個選擇就不能被撤銷。并發版本的約束邏輯編程通過允許進程做出選擇來實現,但一旦做出選擇就會承諾。從技術上講,如果有一個以上的子句可以用來重寫目標中的文字,非并發版本會依次嘗試所有的子句,而并發版本會選擇一個任意的子句:與非并發版本相反,其他子句將永遠不會被嘗試。這兩種處理多重選擇的不同方式通常被稱為不知道非決定性和不關心非決定性。當重寫目標中的字詞時,xxx被考慮的子句是那些由約束存儲和字詞與子句頭的等式的結合所帶來的防護。

    內容由匿名用戶提供,本內容不代表www.gelinmeiz.com立場,內容投訴舉報請聯系www.gelinmeiz.com客服。如若轉載,請注明出處:http://www.gelinmeiz.com/170939/

    (4)
    詞條目錄
    1. 并發約束邏輯編程
    2. 并發約束邏輯編程的描述

    輕觸這里

    關閉目錄

    目錄
    91麻精品国产91久久久久