patternMinor
Gauss-Jordan using stacks and list
Viewed 0 times
gaussstacksusingandlistjordan
Problem
I have a homework assignment in which I need to write an implementation of Gauss-Jordan with complete pivoting. Complete pivoting is a modification to the basic Gauss-Jordan algorithm in which rows and columns are swapped around pivots. This is done to minimize the numerical errors by avoiding operations with small floating-point values.
A common approach would be to use
So the question is, how can stacks and lists be used in an implementation of Gauss-Jordan to efficiently swap columns in a matrix $A$?
I can change rows using pointers, but I can't realize how to use those structures to move columns and do Gauss-Jordan.
EDIT: Sorry i was to tired when create this question, as i'm not from a english speaker native country, i made some mistakes. The questions is about swapping columns using lists and stack. I'm really sorry, i wasted almost week thinking about it.
A common approach would be to use
for loops for swapping rows, but it would cost $O(n)$ operations to move a row and $O(n)$ to move a column. Using stack and list could be faster.So the question is, how can stacks and lists be used in an implementation of Gauss-Jordan to efficiently swap columns in a matrix $A$?
I can change rows using pointers, but I can't realize how to use those structures to move columns and do Gauss-Jordan.
EDIT: Sorry i was to tired when create this question, as i'm not from a english speaker native country, i made some mistakes. The questions is about swapping columns using lists and stack. I'm really sorry, i wasted almost week thinking about it.
Solution
What you want is called indirection. Instead of physically moving the rows/columns, you move their names.
Let's say I call row 1
Now I want to swap the third (
The tradeoff is that now we must read matrix A as
Let's say I call row 1
r[0], and row 3 r[2], in a matrix A, which has size n by n. Initially, the rows are exactly as I call them, so we initialize r[i] = i for all i < n.Now I want to swap the third (
r[2]) and the fifth row (r[4]). I could move the elements in matrix A, but this would require n swaps. Instead, I can just swap r[2] and r[4]! This is just swapping one integer.The tradeoff is that now we must read matrix A as
A[r[i]][c[j]] (where c is the equivalent of r, but for columns) instead of A[i][j]. This is a bit slower.Context
StackExchange Computer Science Q#75164, answer score: 3
Revisions (0)
No revisions yet.