高斯消元法用于求解線性方程組,采用選主元的方法,算法復(fù)雜度O(N ^ 3)。相應(yīng)的題型一種是在實(shí)數(shù)域進(jìn)行求解,一種是在整數(shù)域求解,一般涉及到取模。實(shí)數(shù)域的求解比較簡(jiǎn)單,整數(shù)域需要注意幾個(gè)問(wèn)題。模p一定是素?cái)?shù),因?yàn)椴皇撬財(cái)?shù)的話求解的時(shí)候可能會(huì)出現(xiàn)多個(gè)解,處理起來(lái)比較麻煩。一個(gè)特殊的情況是模2域下的求解,可以采用位運(yùn)算優(yōu)化。還有一點(diǎn)要注意的是在最開(kāi)始構(gòu)造系數(shù)矩陣和增廣矩陣的時(shí)候,一定要先模p,否則選主元的時(shí)候一些模p為0的系數(shù)會(huì)被誤選。
高斯消元法另一個(gè)需要討論的地方就是解的情況。分為無(wú)解、唯一解和無(wú)窮解。這三種情況根據(jù)線性代數(shù)的知識(shí)很容易判斷,主要就是看系數(shù)陣的秩和增廣陣的秩。如果某一次選主元發(fā)現(xiàn)當(dāng)前列的系數(shù)都為0,那么對(duì)應(yīng)的變量是一個(gè)自由變?cè)獠淮_定。這個(gè)時(shí)候要跳過(guò)這一列,保持行不變,繼續(xù)進(jìn)行消元。在消元之后查看增廣陣的秩確定是否無(wú)解,若有解再根據(jù)自由變?cè)欠翊嬖趤?lái)判斷是否是唯一解。
如果解是無(wú)窮多個(gè)的時(shí)候,需要枚舉變?cè)娜≈怠R话阌糜谔幚斫饪臻g很小的情況,比如在模2域上的求解。枚舉變?cè)鬅o(wú)需重新列方程,只需進(jìn)行一次回帶找解即可。