高斯消元法用于求解線性方程組,采用選主元的方法,算法復雜度O(N ^ 3)。相應的題型一種是在實數域進行求解,一種是在整數域求解,一般涉及到取模。實數域的求解比較簡單,整數域需要注意幾個問題。模p一定是素數,因為不是素數的話求解的時候可能會出現多個解,處理起來比較麻煩。一個特殊的情況是模2域下的求解,可以采用位運算優化。還有一點要注意的是在最開始構造系數矩陣和增廣矩陣的時候,一定要先模p,否則選主元的時候一些模p為0的系數會被誤選。
高斯消元法另一個需要討論的地方就是解的情況。分為無解、唯一解和無窮解。這三種情況根據線性代數的知識很容易判斷,主要就是看系數陣的秩和增廣陣的秩。如果某一次選主元發現當前列的系數都為0,那么對應的變量是一個自由變元,解不確定。這個時候要跳過這一列,保持行不變,繼續進行消元。在消元之后查看增廣陣的秩確定是否無解,若有解再根據自由變元是否存在來判斷是否是唯一解。
如果解是無窮多個的時候,需要枚舉變元的取值。一般用于處理解空間很小的情況,比如在模2域上的求解。枚舉變元后無需重新列方程,只需進行一次回帶找解即可。
posted on 2009-05-26 17:13
sdfond 閱讀(492)
評論(0) 編輯 收藏 引用 所屬分類:
Algorithm - Ad Hoc