高斯消元法用于求解线性方程组,采用选主元的方法,算法复杂度O(N ^ 3)。相应的题型一种是在实数域进行求解,一种是在整数域求解,一般涉及到取模。实数域的求解比较简单,整数域需要注意几个问题。模p一定是素数,因为不是素数的话求解的时候可能会出现多个解,处理起来比较麻烦。一个特殊的情况是模2域下的求解,可以采用位运算优化。还有一点要注意的是在最开始构造系数矩阵和增广矩阵的时候,一定要先模p,否则选主元的时候一些模p为0的系数会被误选。
高斯消元法另一个需要讨论的地方就是解的情况。分为无解、唯一解和无穷解。这三种情况根据线性代数的知识很容易判断,主要就是看系数阵的秩和增广阵的秩。如果某一次选主元发现当前列的系数都为0,那么对应的变量是一个自由变元,解不确定。这个时候要跳过这一列,保持行不变,继续进行消元。在消元之后查看增广阵的秩确定是否无解,若有解再根据自由变元是否存在来判断是否是唯一解。
如果解是无穷多个的时候,需要枚举变元的取值。一般用于处理解空间很小的情况,比如在模2域上的求解。枚举变元后无需重新列方程,只需进行一次回带找解即可。
posted on 2009-05-26 17:13
sdfond 阅读(482)
评论(0) 编辑 收藏 引用 所属分类:
Algorithm - Ad Hoc