Prolog語言為一邏輯語言,也是人工智慧領域中常用的語言。其重要性更隨著人工智 慧的蓬勃發展,而益形明顯。為了縮短程式執行的時間,Prolog語言的平行性受到了 廣泛的重視與研究。歸納起來,Prolog的平行性大致可分為四個方面:OR平行性, AND 平行性,STREAM AND平行性和一致化平行性。本篇所討論者為其中之OR平行性部 份。Prolog語言的OR平行性,乃是將尋求問題(query) 的不同答案的不同路徑分開 ,利用多個處理器同時運算,每個處理器各在不同路徑上求解,以縮短求取解集合的 時間。作法上,有些人在共享記憶體系統上製作,也有些是在資料傳遞系統上製作。 其間最主要的困難在於路徑的分配或執行環境(Execution Environment) 的移轉。 Prolog語言在循序機器上執行時,主要的動作是一致化(Unify) 和回溯(Back- track) 。利用大量的堆疊造成不同的環境,以便於一致化之時,不會違反變動只能 被指派一次數值的原則,變數在不同的環境中可以帶有不同的值(Bound Value) 。 在回溯時,則需將變數的狀態還原到前一個環境中此變數所屬之狀態,以便程式能繼 續執行,此舉造成了OR子行程分離上的困難和執行時間的增加。這裡則製作了一個執 行Prolog程式的多機系統,利用多台循序機器共同尋求問題的答案。各機器間以需求 驅動(Demand driving)的方式來完成行程的分配。各行程之間則完全獨立,各個機 器之間則以訊息傳遞(message passing) 為溝通的辦法,並且是唯一的關連。既利 用Prolog的OR平行性,且兼顧了循序機器的特性。
|