1. 程式人生 > >Chapter 2 Constraint Satisfaction: An Emerging Paradigm

Chapter 2 Constraint Satisfaction: An Emerging Paradigm

本章重點論述了在1965年至1985年期間,作為人工智慧和電腦科學領域新正規化的約束語言,包含語言的滿意度。 本手冊的其餘部分將更詳細地介紹這裡介紹的大部分內容,當然還有1986年至2006年。

2.1 The early days

約束滿足以其基本形式涉及為一組問題變數中的每一個找到一個值,其中約束指定某些值的子集不能一起使用。 作為約束滿足的一個簡單例子,考慮選擇元件部分的任務,這些元件可以是相互相容的三輪車,車架,車輪,制動器,鏈輪和鏈條。

與大多數人工智慧領域一樣,約束滿足可以被分為representation和reasoning兩個方面。 前者可分為通用generic和特定應用application-specific型,後者可分為搜尋search和推理inference。

雖然約束滿足通常作為一種搜尋形式,但它的真正重要性在於其廣泛的代表性範圍:它可以有效地用於模擬許多其他形式的推理(例如時間推理temporal reasoning)並應用於許多問題域(例如排程)。 由於這個原因,有時會在應用程式中遇到約束滿足問題,但是,學術界已經多年來一直在研究這個問題:這是一本手冊重要性的一個原因。此外,雖然啟發式研究方法是一個主要關注點,但作為人工智慧的一個分支,約束滿足的區別特徵可以說是強調推理,以約束傳播的形式,而不是搜尋。

約束滿足問題已經被一系列令人眼花繚亂的方法所解決,從自動機理論到螞蟻演算法,並且是許多電腦科學領域和其他領域感興趣的主題。 這些聯絡增加了主題的豐富性,但在很大程度上超出了本章的範圍。 在這裡,我們將重點關注將約束滿足度作為人工智慧分支的基本方法。 這個新的人工智慧分支,以及我們只能在這裡觸及的程式語言和系統的相關工作,為1985年後對約束程式語言的興趣奠定了基礎。

約束滿足當然是在1965年之前。我們現在認為是約束滿足問題的現實世界問題,如勞動力排程,自然總是伴隨著我們。八皇后問題,在人工智慧中佔據了很多早期約束滿足感的問題,據說是由國際象棋選手馬克斯·巴澤爾在1848年提出的。神話認為,一種形式的回溯搜尋,一種強大的搜尋正規化,已成為約束滿足的核心工具,被忒修斯在克里特島的迷宮中使用。 Backtracksearch用於19世紀的休閒數學[51],並且是電腦科學和運籌學在第二次世界大戰後作為學術學科出現的早期研究課題。 BitnerandReingold [2]認為Lehmer在1950年代首次使用了“回溯”一詞[50]。在1960年代[16,15,34,75]的電腦科學文獻中出現了各種形式的約束滿足和傳播。(八皇后問題,回溯的提出)

在人工智慧中,對約束滿足的興趣在兩個流中形成。 在某種意義上,兩個流的共同祖先是伊萬·薩瑟蘭(Ivan Sutherland)1963年開創性的麻省理工學院博士學位。 論文,“畫板:人機圖形通訊系統”[73]。

在一個流中,約束的多功能性導致應用程式在各種領域以及相關的程式語言和系統中。這個流我們可以呼叫語言流。 1964年,威爾克斯提出允許代數方程作為程式性Algol類程式語言中的約束語句,其中鬆弛用於滿足約束[80]。大約在1967年,Elcock基於對等式約束的操縱開發了一種宣告性語言Absys [22]。 Burstall早在1969年就採用了一種約束操作形式來解決密碼算術難題[9]。在1970年的第一個社會智慧研究中,Fikes描述了REF-ARF,其中REF語言構成了一個將約束滿足和傳播作為其方法之一的一般問題解決系統的一部分[23]。 Kowalski使用約束傳播的形式進行定理證明[48]。麻省理工學院的Sussman和其他人將一種約束傳播應用於電路的分析,綜合和故障定位[6,17,18,67,71],而斯蒂爾的Sussman開發了CONSTRAINTS語言[72]。 Borning在他的ThingLab模擬實驗室中使用了約束[4,5],其核心是Smalltalk語言的擴充套件; Lauriere在Alice中使用約束,這是一種解決組合問題的語言[49]。在規劃領域,伊士曼用GSP進行“約束結構化”空間規劃,通用空間規劃師[21],Ste fi k在MOLGEN中使用“約束髮布”,計劃在分子遺傳學中進行基因克隆實驗[68,69]和Descotte和Latombe的GARI系統,它產生了機械零件的加工計劃,嵌入了一個在“對抗約束”之間做出妥協的計劃者[20]。 Fox,AllenandStrohm開發了ISIS-II [25]用於工廠車間排程的約束導向排程系統。

在另一個流中,對約束求解演算法的興趣源於機器視覺社群;我們引用一些早期的工作。我們將此流稱為演算法流。具有里程碑意義的'華爾茲濾波'(弧一致性)約束傳播演算法出現在博士學位。關於場景標籤的論文[79],建立在霍夫曼[41]和Clowes [10]的工作基礎之上。 Montanari開發了路徑一致性,並在一篇題為“約束網路:影象處理的基本屬性和應用”的開創性論文中建立了表示和推理約束的一般框架[60]。 Mackworth利用機器視覺約束[52],然後提供了“Consistencyinnetworks ofrelations”的年齡框架和弧與路徑一致性的新演算法[53]。在完成博士學位後不久,Freuder將弧和路徑一致性推廣到k-一致性[26]。關於“主動視野”的論文。 Barrow和Tenenbaum,MSYS [1]和IGS [74],也是影象解釋約束的早期使用者。 Rosenfeld,HummelandZucker,在“Scenelabelingbyrelaxationoperations”中,探討了“連續標記問題”,其中約束不是“硬”,指出這些值可以或不能一起使用,而是“軟”指定相容程度[65]。哈拉克,戴維斯,羅森菲爾德和米爾格拉姆討論了“減少操作以獲得滿意度”[38],哈拉克和夏皮羅在兩篇關於“一致標籤問題”的論文中概括了這些結果[36,37]。與J.R.Ullman一起,他們在[76]中討論了用於約束傳播和並行搜尋計算的特殊硬體。

語言和演算法流有分歧,兩者都與特定的應用領域脫節。 雖然應用和商業開發確實激增,但學術界更多地關注一般方法。 雖然約束規劃的一般性和科學性嚴謹性是其優勢之一,但我們仍然面臨著將這些流與其語義問題解決根源更加完全重新連線的持續挑戰。

語言流受到邏輯程式設計的嚴重影響,以約束邏輯程式設計的形式出現,並專注於程式語言和庫的開發。休伊特的Planner語言[40]及其作為MicroPlanner [70]的部分實現可以被視為早期的邏輯程式語言[3]。然而,主要的早期里程碑是Colmerauer和其他人在1972年左右開發的Prolog [14]以及程式語言運動的記錄[39,47]。 Prologcanbeframedas使用單一演算法作為約束求解器來解決程式語言,解決方案問題的變換(包括變數)。 Colmerauer在1982年對Prolog II的介紹中進一步推動了這一觀點[13,12]。 Mackworth [53]提出了將約束傳播演算法整合到類似Planner的語言的直譯器中。 Van Hentenryck開發並實現了CHIP(Prolog中的約束處理)作為一種全面的約束邏輯程式語言[77]。在並行開發中,Jaffar等人。開發了CLP(X)系列約束邏輯程式語言[42],包括CLP(R)[44]。有關語言流中這些發展的更多資訊,請參閱本手冊[11,43]和其他章節中的調查。

演算法流受到人工智慧作為搜尋正規化的影響,如Nilsson早期教科書[61]中的例證,以及演算法科學的發展,如Knuth的計算機程式設計藝術[45]所示,側重於演算法(algorithms)和啟發式(heuristic)。 第二股流更加完美地存在於人工智慧中,發展成為圍繞推理正規化構建的人工智慧社群之一:基於約束的推理[29],基於案例的推理等。 它還越來越多地關注簡單但強大且一般的約束滿足問題(CSP)公式及其變體。 在本章中,我們將主要關注這個流,以及CSP範例的發展。

然後,挑戰變為將語言和演算法流以及相關學科(例如數學規劃和約束資料庫)重新整合到單個約束程式設計社群中。 這個過程始於20世紀90年代,當時巴黎Kanellakis,Jean-Louis Lassez和Vijay Saraswat主持了一個研討會,很快就形成了一年一度的約束規劃原則和實踐國際會議,並在Zs'的慫恿下 作為Ruttkay,Gene Freuder建立了Constraints期刊,該期刊“為許多對約束規劃和約束滿足和優化感興趣的學科以及使用約束技術的許多應用領域提供了一個共同的論壇”。