Yo no soy un experto en este tipo de "optimización" de los problemas, pero aquí es lo que puedo decir.
[EDIT.] Creo que la Parte 2. de este "algoritmo" es en realidad bastante inútil, porque, si ya tienes una base para el subespacio $V$ es mejor aplicar la Parte 3. que voy a agregar ahora.
Parte 1. Primero de todo, si el subespacio $V \subset \mathbb{R}^N$ fue dado por un conjunto de ecuaciones cartesianas,
$$
AX = 0 \ ,
$$
entonces, conseguir la reducción de la fila-la forma escalonada de la matriz $A$,
$$
\begin{pmatrix}
1 & 0 & \dots & 0 & a^1_{r+1} & \dots & a^1_n \\
0 & 1 & \dots & 0 & a^2_{r+1} & \dots & a^2_n \\
\dots \\
0 & 0 & \dots & 1 & a^r_{r+1} & \dots & a^r_n \\
0 & 0 & \dots & 0 & 0 & \dots & 0 \\
\dots \\
0 & 0 & \dots & 0 & 0 & \dots & 0
\end{pmatrix}
$$
le permiten obtener algunas de las incógnitas en función de los demás. Aquí $r$ es el rango de $A$. Es decir,
\begin{eqnarray*}
x_1 &=& - (a^1_{r+1} x_{r+1} + \dots + a^1_{n}x_n) \\
x_2 &=& - (a^2_{r+1} x_{r+1} + \dots + a^2_{n}x_n ) \\
\dots \\
x_r &=& - (a^r_{r+1} x_{r+1} + \dots + a^r_{n}x_n )
\end{eqnarray*}
Por lo tanto, podría obtener una base para el subespacio vectorial con un montón de ceros, ya que cualquier vector se puede escribir como
$$
(x_1, \dots , x_r, x_{i+1}, \dots , x_n) = x_{i+1}(-a^1_{i+1}, \dots, -a^r_{i+1}, 1, 0, \dots , 0) + x_2(-a^2_1, \dots, -a^2_n, 0, 1, 0, \dots , 0) +\dots + x_{n} (-a^r_1, \dots , -a^r_n, 0, \dots , 0, 1) \ .
$$
Es decir,
\begin{eqnarray*}
u_1 &=& (-a^1_{r+1}, \dots, -a^r_{r+1}, 1, 0, \dots , 0) \\
u_2 &=& (-a^2_1, \dots, -a^2_n, 0, 1, 0, \dots , 0) \\
\dots && \\
u_d &=& (-a^r_1, \dots , -a^r_n, 0, \dots , 0, 1) \ ,
\end{eqnarray*}
con $d = n-r$, sería una base para el subespacio vectorial con una bonita cantidad de ceros en todas partes.
Parte 2. Pero usted no comienza con un sistema de ecuaciones cartesianas, no? -En su lugar, usted ya tiene una bais para su $V$. Bueno, entonces usted debe obtener primero un sistema de ecuaciones lineales. Por ejemplo, como este: si $v_1, \dots , v_d$ es su base, entonces cualquier vector $u\in V$ puede ser escrito como
$$
u = \lambda_1 v_1 + \dots + \lambda_d v_d \ .
$$
(Por lo tanto, $d$ es la dimensión de la $V$.) Si
$$
v_1 =
\begin{pmatrix}
a^1_1 \\
\vdots \\
a^n_1
\end{pmatrix}
\ , \dots ,
v_d =
\begin{pmatrix}
a^1_d \\
\vdots \\
a^n_d
\end{pmatrix}
$$
eran las coordenadas de su base de vectores, entonces esto significaría que el $\lambda_i$ arriba de su
$$
u =
\begin{pmatrix}
x_1 \\
\vdots \\
x_n
\end{pmatrix}
$$
sería la solución de este sistema lineal de ecuaciones:
$$
\begin{pmatrix}
a^1_1 & \dots & a^1_d \\
\vdots & & \vdots \\
a^n_1 & \dots & a^n_d
\end{pmatrix}
\begin{pmatrix}
\lambda_1 \\
\vdots \\
\lambda_d
\end{pmatrix}
=
\begin{pmatrix}
x_1 \\
\vdots \\
x_n
\end{pmatrix} \ .
$$
Ok, así que ahora reducir a la fila-forma escalonada este sistema,
$$
\begin{pmatrix}
* & \dots & * & | & g_1(x_1, \dots , x_n) \\
\vdots & &\vdots & | & \\
* & \dots & * & | & g_d(x_1, \dots , x_n) \\
0 & \dots & 0 & | & g_{d+1}(x_1, \dots , x_n) \\
\vdots & &\vdots & | & \\
0 & \dots & 0 & | & g_n(x_1, \dots , x_n) \\
\end{pmatrix}
$$
y usted va a obtener un sistema de ecuaciones lineales para su subespacio. Es decir,
$$
g_{d+1}(x_1, \dots , x_n)= 0 \ , \dots , \ g_n(x_1, \dots , x_n) = 0 \ ,
$$
a los cuales se puede aplicar la parte 1.
Ejemplo. Digamos que usted ha $V \subset \mathbb{R}^3$ dada por una base como
$$
v_1 = (1,-1,0) , v_2 = (1,1, 0) \ .
$$
Así que, claramente $V$ $xy$- avión y nos puede producir un "simple", sin cálculos, sólo tienes que tomar
\begin{eqnarray*}
u_1 &=& (1,0,0) \\
u_2 &=& (0,1,0)
\end{eqnarray*}
Pero vamos a ver cómo nuestro "algoritmo" funciona, sin embargo. Primero usamos la segunda parte para producir un sistema de ecuaciones lineales para $V$:
$$
\begin{pmatrix}
1 & 1 & | & x \\
-1 & 1 & | & y \\
0 & 0 & | & z
\end{pmatrix}
$$
La adición de la primera fila a la segunda, se obtiene
$$
\begin{pmatrix}
1 & 1 & | & x \\
0 & 2 & | & x +y \\
0 & 0 & | & z
\end{pmatrix}
$$
Que ya está en la fila-forma escalonada, por lo que las funciones de $g_i$ son en este caso
$$
g_1(x,y,z) = x \ , \ g_2(x,y,z) = x + y \quad \text{y} \quad g_3(x,y,z) = z \ .
$$
El único que nos importa es el último: $z = 0$. Ahora, aplicamos la parte 1 y obtener de aquí que todos los vectores de $V$ tiene el siguiente formulario
$$
(x,y,0) = x (1,0,0) + y (0,1,0) \ ,
$$
para valores arbitrarios de $x,y$. Así que el "simple" de $V$ es, de hecho,
$$
u_1 = (1,0,0) \quad \text{y} \quad u_2 = (0,1,0) \ .
$$
Parte 3. Si usted tiene una base $v_1, \dots , v_d$ $V$ con coordenadas como en la Parte 2., usted acaba de poner juntos todos sus vectores como columnas de una matriz
\begin{pmatrix}
a^1_1 & \dots & a^1_d \\
\vdots & & \vdots \\
a^n_1 & \dots & a^n_d
\end{pmatrix}
y luego reducirlo a su reducido fila-forma escalonada, pero por medio de la primaria de la columna de transformaciones, en lugar de la fila. Desde las transformaciones elementales son las mismas que las combinaciones lineales y conservan el rango de la matriz, no cambiar el subespacio generado por $v_1, \dots , v_d$, $V$. Y en el final, obtendrá una base con un montón de ceros. Algo como
$$
\begin{pmatrix}
1 & 0 & \dots & 0 \\
0 & 1 & \dots & 0 \\
\vdots & \vdots & \ddots & 0 \\
0 & 0 & \dots & 1 \\
b^d_1 & b^d_2 & \dots & b^d_d \\
\vdots & \vdots & \ddots & \vdots \\
b^n_1 & b^n_2 & \dots & b^n_d
\end{pmatrix}
$$
La aplicación de este nuevo "algoritmo" para el mismo ejemplo, esta vez obtenemos:
$$
\begin{pmatrix}
1 & 1 \\
-1 & 1 \\
0 & 0
\end{pmatrix}
\longrightarrow
\begin{pmatrix}
1 & 0 \\
-1 & 2 \\
0 & 0
\end{pmatrix}
\longrightarrow
\begin{pmatrix}
1 & 0 \\
-1 & 1 \\
0 & 0
\end{pmatrix}
\longrightarrow
\begin{pmatrix}
1 & 0 \\
0 & 1 \\
0 & 0
\end{pmatrix}
$$
Aquí la primaria de la columna de transformaciones han sido los siguientes:
- Restar la primera columna de la segunda.
- Dividir la segunda columna por $2$.
- Agregar la segunda columna de la primera.