約束 (數學)

數學中,約束(英語:Constraint)是一個最佳化問題的解需要符合的條件。約束可分為等式约束及不等式约束。符合所有約束的解的集合稱為可行集(feasible set)或是候選解(candidate solution)。

範例

以下是一個最佳化的問題:

 

其拘束條件為

 

and

 

其中   表示向量 (x1, x2)。

上例中,第一行定義要最佳化的函數(稱為目標或費用函數),第二、三行定義二個約束條件,一個是不等式約束,另一個是等式約束,這二個約束定義了候選解的範圍。

若沒有約束條件,最佳化的解為 ,因此處的 有最小值,但這個值不符合約束條件。考慮約束條件的最佳化問題,其解為 ,是符合所有約束條件的解當中,使函數有最小值的解。

術語

  • 若一約束條件在特定點時為一等式,稱為束縛約束,因為此點無法在約束的方向自由移動,就算往該方方向可能會讓目標函數有更好的結束,也無法移動。
  • 若一約束條件在特定點時為一不等式,稱為非束縛約束,因為此點仍可以在約束的方向自由移動(不過有可能是因為移動後對目標函數沒有好的影響,因此不移動)。
  • 若在特定點下,約束條件中有至少一個無法滿足,此點就稱為不可行。

硬約束以及軟約束

若問題中有要求所有的約束都要符合,這稱為「硬約束」(hard constraints),上述所提的都是硬約束。另外有一種約束問題,稱為flexible constraint satisfaction problems。有些約束希望可以滿足,但不強制。這類非強制的約束稱為軟約束英语Constraint optimization,例如preference-based planning英语preference-based planning。在MAX-CSP的約束滿足問題問題中,可以允許違反一定數量的約束,會依滿足約束的數量來評估解的品質。

全域約束

全域約束(Global constraints)[1]是將所有變數一起考慮的約束。像其中一個全域約束是alldifferent,可以用較簡單的語言寫成一連串原子約束的組合:n個變數的alldifferent約束,若將所有變數二二比較,都不相等,約束即成立。在語意上等價於以下許多不等式的交集: 。也有其他的全域約束,全域約束的出現擴展了約束架構可以可表達的範圍。在這些例子中,全域約束常會對應一種特殊組合問題的結構。例如确定有限状态自动机可以接受Regular正則約束英语Regular constraint)的約束。

全域約束有用在[2]簡化約束滿足問題的建模,擴展了約束語言的表示範圍、也可以促進约束编程。將所有變數一起考慮,可以在求解過程比較早發現一些不可行的情形。

相關條目

外部連結

  1. ^ Rossi, Francesca; Van Beek, Peter; Walsh, Toby. 7. Handbook of constraint programming 1st. Amsterdam: Elsevier. 2006. ISBN 9780080463643. OCLC 162587579. 
  2. ^ Rossi, Francesca. Principles and Practice of Constraint Programming CP 2003 00 : 9th International Conference, CP 2003, Kinsale, Ireland, September 29 October 3, 2003. Proceedings. Berlin: Springer-Verlag Berlin Heidelberg. 2003. ISBN 9783540451938. OCLC 771185146.