Difference between revisions of "ApCoCoA-1:Slinalg.SGEF"
Line 26: | Line 26: | ||
We have to distinguish the following cases: | We have to distinguish the following cases: | ||
<itemize> | <itemize> | ||
− | |||
− | |||
<item>CSteps is set to <quotes>SGE0</quotes>: Then it performs the following: <tt>{loop Step 2, Step 4 End}</tt> and at the end it performs usual Gaussian Elimination.</item> | <item>CSteps is set to <quotes>SGE0</quotes>: Then it performs the following: <tt>{loop Step 2, Step 4 End}</tt> and at the end it performs usual Gaussian Elimination.</item> | ||
<item>CSteps is set to <quotes>SGE1</quotes>: Then it performs the following: <tt>{Step 1, {loop Step 2, Step 4 End}}</tt> and at the end it performs usual Gaussian Elimination.</item> | <item>CSteps is set to <quotes>SGE1</quotes>: Then it performs the following: <tt>{Step 1, {loop Step 2, Step 4 End}}</tt> and at the end it performs usual Gaussian Elimination.</item> | ||
<item>CSteps is set to <quotes>SGE2</quotes>: Then it performs the following: <tt>{Step 1, {loop Step 2, Step 4 End}, Step 1, Step 3}</tt> and at the end it performs usual Gaussian Elimination.</item> | <item>CSteps is set to <quotes>SGE2</quotes>: Then it performs the following: <tt>{Step 1, {loop Step 2, Step 4 End}, Step 1, Step 3}</tt> and at the end it performs usual Gaussian Elimination.</item> | ||
</itemize> | </itemize> | ||
+ | |||
<example> | <example> | ||
− | |||
NRow := 10; | NRow := 10; | ||
NCol := 13; | NCol := 13; | ||
− | CSteps:=<quotes> | + | CSteps:=<quotes>SGE1</quotes>; |
M := [[1, 2, 6, 7], | M := [[1, 2, 6, 7], | ||
− | [ | + | [ 2, 4, 5, 6], |
[2, 3], | [2, 3], | ||
[2, 3, 10, 11], | [2, 3, 10, 11], | ||
Line 50: | Line 48: | ||
Slinalg.SGEF(NRow, NCol, M, CSteps); | Slinalg.SGEF(NRow, NCol, M, CSteps); | ||
− | [ | + | [[2, 3], |
− | + | [3, 13], | |
− | [3 | ||
− | |||
− | |||
− | |||
− | |||
[10, 11], | [10, 11], | ||
− | [11, 13]] | + | [11, 13]] |
− | |||
</example> | </example> | ||
Line 66: | Line 58: | ||
NRow := 10; | NRow := 10; | ||
NCol := 13; | NCol := 13; | ||
− | CSteps:=<quotes> | + | CSteps:=<quotes>SGE0</quotes>; |
M := [[1, 2, 6, 7], | M := [[1, 2, 6, 7], | ||
[ 2, 4, 5, 6], | [ 2, 4, 5, 6], | ||
Line 79: | Line 71: | ||
Slinalg.SGEF(NRow, NCol, M, CSteps); | Slinalg.SGEF(NRow, NCol, M, CSteps); | ||
− | + | [[1, 2, 6, 7], | |
− | + | [2, 4, 5, 6], | |
− | + | [3, 4, 5, 6], | |
− | + | [4, 5, 6, 13], | |
+ | [5, 7, 9, 10], | ||
+ | [6, 7, 8, 9, 10], | ||
+ | [7, 8, 9, 12], | ||
+ | [8, 9], | ||
+ | [10, 11], | ||
+ | [11, 13]] | ||
+ | |||
</example> | </example> | ||
+ | |||
+ | |||
Revision as of 16:57, 12 May 2010
Slinalg.SGEF
Computes the row echelon form of a sparse matrix over F2 using Structured Gaussian Elimination.
Syntax
Slinalg.SGEF(NRow:INT, NCol:INT, M:LIST, CSteps:STRING):LIST
Description
Please note: The function(s) explained on this page is/are using the ApCoCoAServer. You will have to start the ApCoCoAServer in order to use it/them.
Structured Gaussian Elimination: Structured Gaussian Elimination has the following four steps:
Step 1: Delete all columns that have a single non-zero coefficient and the rows in which those columns have non-zero coefficients.
Step 2: Declare some additional light columns to be heavy, chossing the heaviest ones.
Step 3: Delete some of the rows, selecting those which have the largest number of non-zero elements in the light columns.
Step 4: For any row which has only a single non-zero coefficient equal to 1 in the light column, subtract appropriate multiples of that row from all other rows that have non-zero coefficients on that column so as to make those coefficients 0.
After performing the four steps above we apply usual Gaussian Elimination, specially on heavy part of the matrix.
@param NRow: Number of rows of the matrix.
@param NCol: Number of Columns of the matrix.
@param M: List of lists containing positions of non zero elements.
@param CSteps: The parameter CSetps lets you specify which steps of the Structured Gaussian Elimination you want to use.
@return A list of lists containing the row echelon form of the matrix.
We have to distinguish the following cases:
CSteps is set to "SGE0": Then it performs the following: {loop Step 2, Step 4 End} and at the end it performs usual Gaussian Elimination.
CSteps is set to "SGE1": Then it performs the following: {Step 1, {loop Step 2, Step 4 End}} and at the end it performs usual Gaussian Elimination.
CSteps is set to "SGE2": Then it performs the following: {Step 1, {loop Step 2, Step 4 End}, Step 1, Step 3} and at the end it performs usual Gaussian Elimination.
Example
NRow := 10; NCol := 13; CSteps:=<quotes>SGE1</quotes>; M := [[1, 2, 6, 7], [ 2, 4, 5, 6], [2, 3], [2, 3, 10, 11], [2, 4, 6, 7, 9, 10], [2, 10, 11, 13], [5, 6, 8], [ 6, 8, 9,10,12], [6, 10, 12], [10, 13]]; Slinalg.SGEF(NRow, NCol, M, CSteps); [[2, 3], [3, 13], [10, 11], [11, 13]]
Example
NRow := 10; NCol := 13; CSteps:=<quotes>SGE0</quotes>; M := [[1, 2, 6, 7], [ 2, 4, 5, 6], [2, 3], [2, 3, 10, 11], [2, 4, 6, 7, 9, 10], [2, 10, 11, 13], [5, 6, 8], [ 6, 8, 9,10,12], [6, 10, 12], [10, 13]]; Slinalg.SGEF(NRow, NCol, M, CSteps); [[1, 2, 6, 7], [2, 4, 5, 6], [3, 4, 5, 6], [4, 5, 6, 13], [5, 7, 9, 10], [6, 7, 8, 9, 10], [7, 8, 9, 12], [8, 9], [10, 11], [11, 13]]
Example
NRow := 10; NCol := 13; CSteps:=<quotes>SGE2</quotes>; M := [[1, 2, 6, 7], [ 2, 4, 5, 6], [2, 3], [2, 3, 10, 11], [2, 4, 6, 7, 9, 10], [2, 10, 11, 13], [5, 6, 8], [ 6, 8, 9,10,12], [6, 10, 12], [10, 13]]; Slinalg.SGEF(NRow, NCol, M, CSteps); [ ]
See also