近幾十年來,數字計算機效率的進步和用于數值計算的可靠軟件的發展,導致了數值優化理論、方法和算法的快速發展。這一知識體系促進了優化方法在許多學科(例如,工程、商業和科學)的廣泛應用,并隨后導致了不久之前被認為是棘手的問題解決方案。
//link.springer.com/book/10.1007/978-1-0716-0843-2 這一獨特的和全面的教科書提供了一個廣泛的和實際的處理的主題優化。本書的每半部分都包含了一個完整學期的補充,但獨立的材料。在這個大大增強的第二版中,作者增加了關于最近的創新、技術、方法和許多問題和例子的章節。這些特點使本書適合在一年級研究生課程或高級本科課程的一兩個學期使用。
主要特點:
證明和廣泛的類測試內容 提出了無約束優化和有約束優化的統一處理方法,使其成為一本兩用教科書 介紹了凸規劃、序列二次規劃、乘法器的交替方向法(ADMM)和凸-凹過程等方面的新材料 包括半定和二階錐規劃等方法 為無約束優化和有約束優化的最先進的應用添加新材料 提供一個完整的教學包與許多MATLAB示例和在線解決方案的章節結束的問題 使用一種實用的、可訪問的優化處理方法 提供兩個涵蓋背景理論的附錄,以便非專家可以理解基本理論 憑借其強大而實用的優化處理,這一經典教科書的顯著增強修訂版將是大學和大學生學習不可或缺的,也將成為科學家和行業專業人士有用的參考卷。
在過去的三十年中,數字計算機效率的快速提高和可靠的數值計算軟件的發展導致了數值優化的理論、方法和算法的驚人增長。這一知識體系反過來促進了優化方法在許多學科的廣泛應用,如工程、商業和科學,并導致了不久之前被認為是棘手的問題的解決方案。盡管有許多優秀的書籍以數學的嚴謹性和精確性來處理優化問題,但似乎仍需要一本書來提供針對從大學生到科學家和行業專業人員等更廣泛受眾的該主題的實用處理方法。這本書就是為了滿足這種需要而寫的。它統一對待無約束優化和有約束優化,特別關注優化的算法方面,使讀者能夠將各種算法和方法應用到感興趣的具體問題。為了促進這一過程,本書提供了許多解決的例子,說明所涉及的原則,并包括,另外,兩章專門處理無約束和有約束優化方法在模式識別、控制系統、機器人、通信系統和數字濾波器設計等領域的應用。對于每個應用程序,都提供了足夠的背景信息,以促進對用于獲得所需解決方案的優化算法的理解。
第一章簡要介紹了優化和優化算法的一般結構。第2章到第9章涉及無約束優化方法。第二章介紹了局部極小化的一階和二階必要條件、二階充分條件和凸函數的優化。第三章討論了算法的一般性質,如下降函數、全局收斂和收斂速度的概念。第四章介紹了一維優化的幾種方法,通常稱為直線搜索。本章還討論了在許多優化算法中提高效率的非精確直線搜索方法。第五章介紹了幾種基本的梯度方法,包括最陡下降法、牛頓法和高斯-牛頓法。第六章給出了一類基于共軛方向概念的方法,如共軛梯度法、Fletcher-Reeves法、Powell法和Partan法。第7章介紹了一類重要的無約束優化方法,即擬牛頓方法。研究了該類的代表性方法Davidon-Fletcher-Powell和Broydon-Fletcher-Goldfarb-Shanno方法及其性質。本章還包括一個實用、高效、可靠的準牛頓算法,它消除了與基本準牛頓法相關的一些問題。第8章介紹了在許多應用中使用的極小極大方法,包括數字濾波器的設計。第9章給出了3個案例研究,將第4章到第8章中描述的幾種無約束優化方法應用于點模式匹配、機器人機械手逆運動學和數字濾波器的設計。
第10章到第16章涉及約束優化方法。第10章介紹了約束優化的基本原理。本文詳細討論了拉格朗日乘子的概念、稱為Karush-Kuhn-Tucker條件的一階必要條件以及凸規劃的對偶性原理,并通過許多例子加以說明。第11章和第12章涉及線性規劃(LP)問題。第11章討論了LP的一般性質和標準LP問題的單純形方法。第12章介紹了幾種內點方法,包括原始仿射尺度法、原始牛頓勢壘法和原始對偶路徑跟蹤法。第十三章討論二次凸規劃和一般凸規劃。研究凸二次規劃的所謂活動集方法和幾種內點方法。本章還包括一般凸規劃問題的所謂切割平面和橢球算法。第14章介紹了兩類特殊的凸規劃,即半定錐規劃和二階錐規劃,它們在許多學科中都有有趣的應用。第15章討論了不屬于凸規劃一類的一般約束優化問題;特別強調了幾種序列二次規劃方法,這些方法通過使用高效的線搜索和有關的Hessian矩陣的近似來增強。本書的第16章總結了約束優化在數字濾波器設計、動態系統控制、機器人系統力分布評估和無線通信系統多用戶檢測方面的幾種應用。
很久以前,我在讀博士期間寫了《全局優化算法-理論和應用》[203],現在我想寫一本更實用的優化和元啟發式指南。目前,這本書處于開發和制作的早期階段,因此預計會有很多變化。本文試圖介紹優化以一種無障礙的方式為觀眾的本科生和研究生沒有背景的領域。它試圖提供關于優化算法在實踐中如何工作的直覺,解決問題時要尋找什么東西,以及如何從簡單、有效的“概念證明”方法獲得給定問題的有效解決方案。我們遵循“邊做邊學”的方法,通過嘗試解決一個實際的優化問題作為貫穿全書的示例主題。所有的算法在引入后都直接實現并應用于該問題。這讓我們可以根據實際結果討論他們的優勢和劣勢。我們學習如何比較不同算法的性能。我們嘗試逐步改進算法,從非常簡單的、效果不佳的方法轉向高效的元啟發式方法。
我們使用了用Python編寫的具體示例和算法實現。它們可以在2007年6月29日GNU通用公共許可證版本3下的庫thomasWeise/moptipy中免費獲得。每個源代碼列表在標題中都附有一個(src)鏈接,鏈接到存儲庫中文件的完整版本。清單通常是刪節的節選。這意味著我們將忽略很多對理解算法不必要的細節,比如類型提示、健全檢查,甚至是完整的方法。這些代碼將會以完整的代碼版本出現在GitHub存儲庫中。因此,這個完整的代碼版本可能與書中插圖的刪節代碼看起來不同。為了完全理解代碼示例,我們建議讀者熟悉Python、numpy和matplotlib。當然,如果您讀這本書只是為了學習算法,您可以忽略源代碼示例。 如今,算法對我們日常私生活和工作生活的影響越來越大。他們建議我們看有趣的電影或購買的產品。當我們開車時,它們幫助我們找到有效的路線,或者幫我們匹配附近下一輛可用的出租車。他們控制廣告活動,并提出產品定價政策[151]。他們通過在工程、時間表和調度、產品設計和物流規劃等多個領域提出良好的決策來支持我們。它們將是我們行業向智能制造和智能生產轉型的最重要元素,它們可以自動化各種任務,如圖1.1所示。
優化和運籌學為我們提供算法,為非常廣泛的問題提出良好的解決方案。這些解決方案實現了預定義的目標,同時最小化(至少)一項資源需求,包括成本、能源消耗、空間、時間需求等等。除了節省直接成本外,減少資源消耗對環境也有好處。因此,優化可以幫助我們在經濟和生態方面變得更高效。因此,我們可以列出三個明顯的原因,為什么優化將成為下個世紀的關鍵技術:
本書為數學、工程、計算機科學和其他應用科學的高年級本科生和研究生提供了廣泛的數學優化課程工具。介紹了優化的基本原理,重點介紹了基于梯度的數值優化策略和算法,可用于求解光滑和有噪聲的不連續優化問題。還注意到函數求值的困難和存在多個最小值,這往往不必要地抑制了基于梯度的方法的使用。這第二版介紹了僅梯度優化策略的進一步改進,以處理目標函數中的不連續。新的章節討論了代理模型的構造,以及新的僅限梯度解決方案策略和使用Python的數值優化。一個特殊的Python模塊以電子方式提供(通過springerlink),它使文本中的新算法易于訪問并直接適用。數值例子和練習包括鼓勵高級到研究生水平的學生計劃,執行,并反映數值調查。通過對概念材料的深入理解,學生、科學家和工程師將能夠發展系統和科學的數字調研技能。
數學優化通常也被稱為非線性規劃、數學規劃或數值優化。在更一般的術語中,數學優化可以被描述為確定數學定義的問題的最佳解決方案的科學,這些問題可能是物理現實或制造和管理系統的模型。在第一種情況下,所尋求的解決方案通常對應于從分子到懸索橋的一般結構的最小能量配置,因此對科學和工程很有興趣。在第二種情況下,對社會和工業具有經濟重要性的商業和財務考慮開始發揮作用,并要求作出決定,例如確保最大的利潤或最低的成本。
本書的重點幾乎完全集中在基于梯度的方法上。這有兩個原因。(i)作者認為,引入數學優化的主題最好通過經典的基于梯度的方法來完成,(ii)與目前流行的使用非梯度方法的趨勢相反,如遺傳算法(GA),模擬退火,粒子群優化和其他進化方法,作者認為,在許多情況下,這些搜索方法在計算上過于昂貴,不可行。關于數值噪聲和多重最小值的存在不適合使用基于梯度的方法,以及在這種情況下唯一的解決方法是使用上述非梯度搜索技術的論點,不一定是正確的。根據作者的經驗,通過明智地使用基于梯度的方法,可以解決帶有數值噪聲和多重最小值的問題,而且只需要花費遺傳算法等搜索技術的一小部分計算成本。在此背景下,第六章討論了第一作者開發的新的基于梯度的方法和第八章作者開發的純梯度方法,這是特別重要的。材料的呈現不太嚴格,但希望是正確的,應該提供必要的信息,讓科學家和工程師選擇適當的優化算法,并成功地將它們應用到各自感興趣的領域。
在當今自動化、云計算、算法、人工智能和大數據的世界中,很少有話題像數據科學和機器學習那樣相關。它們最近之所以受歡迎,不僅是因為它們適用于現實生活中的問題,還因為它們自然地融合了許多不同的學科,包括數學、統計學、計算機科學、工程學、科學和金融學。對于開始學習這些主題的人來說,大量的計算技術和數學思想似乎是壓倒性的。有些人可能只滿足于學習如何使用現成的方法來應用于實際情況。這本書的目的是提供一個可訪問的,但全面的數據科學和機器學習的概述。它是為任何有興趣獲得更好的理解數學和統計,支持豐富的各種想法和機器學習算法的數據科學。我們的觀點是,計算機語言來來去去,但潛在的關鍵思想和算法將永遠存在,并將形成未來發展的基礎。
數據科學為理解和處理數據提供了必要的語言和技術。它涉及數值數據的設計、收集、分析和解釋,目的是提取模式和其他有用的信息。機器學習與數據科學密切相關,涉及從數據中學習的算法和計算機資源的設計。本書的組織大致遵循數據科學項目的典型步驟:收集數據以獲得關于研究問題的信息;數據的清理、匯總和可視化;數據建模和分析;將關于模型的決策轉化為關于研究問題的決策和預測。由于這是一本以數學和統計為導向的書,大部分重點將放在建模和分析上。
我們從第一章開始,使用Python中的數據操作包、結構化、總結和可視化數據。雖然本章中涉及的材料不需要數學知識,但它為數據科學形成了一個明顯的起點:更好地理解可用數據的性質。在第二章中,我們介紹統計學習的主要成分。我們區分監督和非監督學習技術,并討論我們如何評估(非)監督學習方法的預測性能。統計學習的一個重要部分是數據建模。我們介紹了數據科學中各種有用的模型,包括線性、多元高斯和貝葉斯模型。機器學習和數據科學中的許多算法使用蒙特卡洛技術,這是第3章的主題。蒙特卡洛可以用于模擬、估計和優化。第四章討論了無監督學習,其中我們討論了密度估計、聚類和主成分分析等技術。然后我們將注意力轉向監督式學習然后,我們將在第5章中把注意力轉向監督學習,并解釋一大類回歸模型背后的思想。在其中,我們還描述了如何使用Python的statmodels包來定義和分析線性模型。第6章建立在前一章回歸的基礎上,發展了核方法和正則化的強大概念,這使得第5章的基本思想可以以優雅的方式得到擴展,使用重建核希爾伯特空間的理論。在第7章中,我們繼續進行分類任務,它也屬于監督學習框架,并考慮了各種分類方法,包括貝葉斯分類、線性和二次判別分析、k近鄰和支持向量機。在第8章,我們考慮回歸和分類的通用方法,利用樹結構。最后,在第9章,我們考慮了神經網絡和深度學習的工作方式,并表明這些學習算法有一個簡單的數學解釋。在每一章的末尾都提供了廣泛的練習。
這本書是為那些對解決優化問題感興趣的人準備的。由于優化在科學、工程、經濟學和工業領域的廣泛(和不斷增長的)應用,對于學生和實踐者來說,發展對優化算法的理解是至關重要的。了解這些算法的能力和局限性有助于更好地理解它們對各種應用的影響,并為改進和擴展優化算法和軟件的未來研究指明了方向。在這本書中,我們的目標是對解決連續優化問題的最強大、最先進的技術進行全面描述。通過展示每個算法的激勵思想,我們試圖激發讀者的直覺,使技術細節更容易遵循。
優化是決策科學和物理系統分析中的一個重要工具。為了使用這個工具,我們必須首先確定一些目標,一個對所研究系統性能的定量度量。這個目標可以是利潤、時間、勢能,或者任何可以用單個數字表示的量或量的組合。目標取決于系統的某些特征,稱為變量或未知數。我們的目標是找到優化目標的變量值。在某些方面,變量通常是受限制的。例如,分子中的電子密度和貸款利率等物理量不能是負的。
圖論和組合優化之間的融合已經導致了理論深刻和實際有用的算法,但目前沒有一本書同時涵蓋這兩個領域。《圖論、組合優化和算法手冊》是第一本對圖論和組合優化進行統一、全面處理的書。
地址:
分為11個章節,集中在圖論,組合優化和算法問題。本書為讀者提供了算法和理論基礎:
理解由圖結構形成的現象 為圖結構的研究開發所需的算法和優化工具 設計和規劃導致某些理想行為的圖形結構
有來自40多個世界各地的專家的貢獻,這本手冊配備讀者必要的技術和工具,以解決各種應用中的問題。讀者可以接觸到圖論和組合優化的廣泛主題的理論和算法基礎,使他們能夠識別(并因此解決)在不同學科中遇到的問題,如電氣、通信、計算機、社會、交通、生物和其他網絡。
圖論和組合優化的研究在過去的三十年左右經歷了爆炸性的增長。電信網絡、大規模集成電路設計等技術突飛猛進;網絡科學等新領域的出現強調了在社會網絡和生物網絡中的應用;理論計算機科學的進步都促進了圖論、組合優化和相關算法問題的興趣和知識的爆炸。因此,毫不奇怪,這些學科已經成為工程和計算機科學課程的中心角色。現在有幾本關于圖論或組合優化的優秀教科書。這些書大致可以分為兩類。第一類是處理圖論或組合優化中所有基本主題的書籍。這些書是供大四本科生和初學研究生使用的教科書。第二類是對某些特定主題進行深入探討的書籍。它們適合那些打算從事圖論或組合優化研究的學生。由于這些學科已經達到了一定的成熟水平,我們認為需要一本對圖論和組合優化提供更廣泛和綜合處理的書。這樣的一本書將幫助學生和研究人員裝備自己的技術和工具,將加強他們的能力,看到機會應用圖論和組合優化解決他們在應用中遇到的問題。我們多年來在教學和應用圖論和組合優化方面的經驗使我們相信,雖然工具和技術能提高一個人解決問題的能力,但更廣泛地接觸它們也能幫助個人看到其他情況下看不到的問題。
W. Keith Nicholson的《線性代數與應用》,傳統上出版多年,現在作為開放教育資源和Lyryx的一部分發布與開放文本!支持今天的學生和教師需要更多的教科書,這就是為什么尼克爾森博士選擇與Lyryx學習工作。
總的來說,教材的目標是在計算技能,理論和線性代數的應用之間達到平衡。它是線性代數的思想和技術的一個相對先進的介紹,目標是科學和工程學生,他們不僅需要理解如何使用這些方法,而且還需要深入了解為什么他們工作。
它介紹了線性代數的一般思想遠早于競爭保持與線性代數相同的嚴格和簡潔的方法。隨著許多圖表和例子,幫助學生形象化,它也保持與概念的不斷介紹。
課程內容有足夠的靈活性,可以呈現一個傳統的主題介紹,或者允許一個更實用的課程。第1-4章為初學者開設了一學期的課程,而第5-9章為第二學期的課程。這本教科書主要是關于實數線性代數的,在適當的時候提到了復數(在附錄A中回顧)。
利用Python及其標準庫中的數值和數學模塊,以及流行的開源數值Python包,如NumPy、SciPy、FiPy、matplotlib等。這個完全修訂的版本,更新了每個包的最新細節和更改Jupyter項目,演示了如何在大數據,云計算,金融工程,商業管理和更多的數字計算解決方案和數學模型應用。
Numerical Python,第二版,提供了許多使用Python在數據科學和統計中應用的全新案例研究示例,以及對以前的許多示例的擴展。由于Python的語法簡單而高級,以及數據分析的多種選項,因此它們都展示了Python在快速開發和探索性計算方面的強大功能。
閱讀本書后,讀者將熟悉許多計算技術,包括基于數組和符號計算,可視化和數字文件I/O,方程求解,優化,插值和積分,以及領域特定的計算問題,如微分方程求解,數據分析,統計建模和機器學習。
科學和數值計算是研究、工程和分析領域的一個蓬勃發展的領域。在過去的幾十年里,計算機行業的革命為計算機從業者提供了新的和強大的工具。這使得前所未有的規模和復雜性的計算工作成為可能。結果,整個領域和行業如雨后春筍般涌現出來。這種發展仍在繼續,隨著硬件、軟件和算法的不斷改進,它正在創造新的機會。最終,實現這一運動的技術是近幾十年來發展起來的強大的計算硬件。然而,對于計算從業者來說,用于計算工作的軟件環境與執行計算的硬件同等重要(如果不是更重要的話)。這本書是關于一個流行的快速增長的數值計算環境:Python編程語言及其用于計算工作的庫和擴展的充滿活力的生態系統。
計算是一項跨學科的活動,需要理論和實踐學科的經驗和專業知識:對數學和科學思維的牢固理解是有效計算工作的基本要求。同樣重要的是在計算機編程和計算機科學方面的扎實訓練。這本書的作用是通過介紹如何使用Python編程語言和圍繞該語言出現的計算環境來完成科學計算,從而將這兩個主題連接起來。在這本書中,假定讀者先前有一些數學和數值方法的訓練,以及Python編程的基本知識。這本書的重點是介紹用Python解決計算問題的實用方法。簡要介紹的理論涵蓋的主題給出在每一章,以介紹符號和提醒讀者的基本方法和算法。然而,這本書并不是對數值方法的自洽處理。為了幫助讀者以前不熟悉這本書的一些主題,進一步閱讀的參考文獻在每一章的結尾。同樣,沒有Python編程經驗的讀者可能會發現,將這本書和一本專注于Python編程語言本身的書一起閱讀會很有用
//www.programmer-books.com/wp-content/uploads/2019/02/Numerical-Python-2nd-Edition.pdf
凸優化研究在凸集上最小化凸函數的問題。凸性,連同它的許多含義,已經被用來為許多類凸程序提出有效的算法。因此,凸優化已經廣泛地影響了科學和工程的幾個學科。
過去幾年,凸優化算法徹底改變了離散和連續優化問題的算法設計。對于圖的最大流、二部圖的最大匹配和子模函數最小化等問題,已知的最快算法涉及到對凸優化算法的基本和重要使用,如梯度下降、鏡像下降、內點方法和切割平面方法。令人驚訝的是,凸優化算法也被用于設計離散對象(如擬陣)的計數問題。同時,凸優化算法已經成為許多現代機器學習應用的中心。由于輸入實例越來越大、越來越復雜,對凸優化算法的需求也極大地推動了凸優化技術本身的發展。
這本書的目的是使讀者能夠獲得對凸優化算法的深入理解。重點是從第一性原理推導出凸優化的關鍵算法,并根據輸入長度建立精確的運行時間界限。由于這些方法的廣泛適用性,一本書不可能向所有人展示這些方法的應用。這本書展示了各種離散優化和計數問題的快速算法的應用。本書中所選的應用程序的目的是為了說明連續優化和離散優化之間的一個相當令人驚訝的橋梁。
目標受眾包括高級本科生、研究生和理論計算機科學、離散優化和機器學習方面的研究人員。
//convex-optimization.github.io/
第一章-連續優化和離散優化的銜接
我們提出了連續優化和離散優化之間的相互作用。最大流問題是一個激勵人心的例子。我們也追溯了線性規劃的歷史——從橢球法到現代內點法。最后介紹了橢球法在求解最大熵問題等一般凸規劃問題上的一些最新成果。
第二章 預備知識
我們復習這本書所需的數學基礎知識。這些內容包括多元微積分、線性代數、幾何、拓撲、動力系統和圖論中的一些標準概念和事實。
第三章-凸性
我們引入凸集,凸性的概念,并展示了伴隨凸性而來的能力:凸集具有分離超平面,子梯度存在,凸函數的局部最優解是全局最優解。
第四章-凸優化與效率
我們提出了凸優化的概念,并正式討論了它意味著什么,有效地解決一個凸程序作為一個函數的表示長度的輸入和期望的精度。
第五章-對偶性與最優性
我們引入拉格朗日對偶性的概念,并證明在一個稱為Slater條件的溫和條件下,強拉格朗日對偶性是成立的。隨后,我們介紹了拉格朗日對偶和優化方法中經常出現的Legendre-Fenchel對偶。最后,給出了Kahn-Karush-Tucker(KKT)最優性條件及其與強對偶性的關系。
第六章-梯度下降
我們首先介紹梯度下降法,并說明如何將其視為最陡下降。然后,我們證明了梯度下降法在函數的梯度是連續的情況下具有收斂時間界。最后,我們使用梯度下降法提出了一個快速算法的離散優化問題:計算最大流量無向圖。
第七章-鏡像下降和乘法權值更新
我們推出我們的凸優化的第二個算法-稱為鏡面下降法-通過正則化觀點。首先,提出了基于概率單純形的凸函數優化算法。隨后,我們展示了如何推廣它,重要的是,從它推導出乘法權值更新(MWU)方法。然后利用后一種算法開發了一個快速的近似算法來解決圖上的二部圖匹配問題。
第八章-加速梯度下降
提出了Nesterov的加速梯度下降算法。該算法可以看作是前面介紹的梯度下降法和鏡像下降法的混合。我們還提出了一個應用加速梯度法求解線性方程組。
第九章-牛頓法
IWe開始了設計凸優化算法的旅程,其迭代次數與誤差成對數關系。作為第一步,我們推導并分析了經典的牛頓方法,這是一個二階方法的例子。我們認為牛頓方法可以被看作是黎曼流形上的最速下降,然后對其收斂性進行仿射不變分析。
第十章 線性規劃的內點法
利用牛頓法及其收斂性,推導出一個線性規劃的多項式時間算法。該算法的關鍵是利用障礙函數的概念和相應的中心路徑,將有約束優化問題簡化為無約束優化問題。
第十一章-內點法的變種與自洽
給出了線性規劃中路徑遵循IPM的各種推廣。作為應用,我們推導了求解s-t最小代價流問題的快速算法。隨后,我們引入了自一致性的概念,并給出了多邊形和更一般凸集的障礙函數的概述。
第十二章 線性規劃的橢球法
介紹了凸優化的一類切割平面方法,并分析了一種特殊情況,即橢球體法。然后,我們展示了如何使用這個橢球方法來解決線性程序超過0-1多邊形時,我們只能訪問一個分離oracle的多邊形。
第十三章-凸優化的橢球法
我們展示了如何適應橢球法求解一般凸程序。作為應用,我們提出了子模函數最小化的多項式時間算法和計算組合多邊形上的最大熵分布的多項式時間算法。
這本教科書通過提供實用的建議,使用直接的例子,并提供相關應用的引人入勝的討論,以一種容易理解的方式介紹了基本的機器學習概念。主要的主題包括貝葉斯分類器,最近鄰分類器,線性和多項式分類器,決策樹,神經網絡,和支持向量機。后面的章節展示了如何通過“推進”的方式結合這些簡單的工具,如何在更復雜的領域中利用它們,以及如何處理各種高級的實際問題。有一章專門介紹流行的遺傳算法。
這個修訂的版本包含關于工業中機器學習的實用應用的關鍵主題的三個全新的章節。這些章節研究了多標簽域,無監督學習和它在深度學習中的使用,以及歸納邏輯編程的邏輯方法。許多章節已經被擴展,并且材料的呈現已經被增強。這本書包含了許多新的練習,許多解決的例子,深入的實驗,和獨立工作的計算機作業。
//link.springer.com/book/10.1007/978-3-319-63913-0#about