이번 포스팅에서는 이전 강의 Lecture 10에서 배웠던 부분 공간(subspace)과 직교성(orthogonality)에 대한 내용을 알아보도록 하겠다. 먼저 알아볼 것은 직교 벡터(orthogonal vector)이다. 먼저 부분 공간에 대해 잠시 복습해보도록 하자.  

 

 

0. 부분 공간(subspace) 복습

 

 

Fig. 1 부분 공간(subspace)과 직교(orthogonality)

 

 

우리는 지난 강의 Lecture 10에서 임의의 행렬에 대한 부분 공간을 배웠다. 여기서 공간이 의미하는 것은 어떤 행렬 A로부터 만들 수 있는 벡터들이 존재할 수 있는 영역을 의미한다. 먼저 Row space라는 것은 어떤 행렬 A의 row 벡터들의 선형 조합(Linear combination)을 통해 만들 수 있는 모든 벡터들의 집합을 의미한다. Column space는 역시 행렬 A의 column 벡터들의 선형 조합으로 만들 수 있는 모든 벡터들의 집합을 의미한다. Row space와 Column space의 차원은 rank와 같으며 이 두 공간은 같은 차원을 갖는다.

Null space는 Ax=0를 만족시키는 모든 해인 x로 이루어진 공간을 의미한다. 차원은 행렬 A의 column의 개수에서 rank를 뺀 것과 같다. 

마지막 Left null space는 A의 transpose에 대한 null space이며 $A^T y=0$를 만족시키는 해 y의 집합들을 의미하며 row의 수 m에서 rank를 뺀 것이 차원이 된다. 

 

여기까지가 우리가 지난 강의에서 배웠던 내용들이다. 지난 번에도 잠시 언급은 했지만 다시 한 번 눈여겨 봐야할 것이 바로 이 부분 공간들의 관계이다. 그림에도 나타나 있듯이 row space와 null space는 직각(perpendicular)이다. 이 말은 직교(orthogonal)와 같은 말인데, 쉽게 말해서 두 공간사이에 이루는 각도가 90도라는 말이다. 

마찬가지로 column space와 Left null space도 직교(orthogonal)한다. 이제부터 이들 공간들이 왜 직교를 하는지 차근차근 알아보도록 하자. 이번 강의를 통해 네 개의 부분 공간에 대한 이해도가 한층 높아질 것이다. 

 

 

 

 

1. 직교 벡터(Orthogonal Vector)

 

우리가 중.고등학교 때 배웠듯이 벡터는 크기와 방향을 나타내는 물리량이다. 이러한 두 벡터가 직교(orthogonal)하다는 것은 어떤 의미일까? 직교를 다른 말로하면 수직(perpendicular)이라는 말과 같다. 즉 두 벡터 사이의 각도가 90도를 이루는 것을 바로 직교 벡터(Orthogonal Vector)라 한다. 이때 벡터는 임의의 모든 n차원에 대해서 해당되는 말이다. 

이것을 약간 다르게 표현하면 두 벡터가 직각삼각형(right triangle)을 이룬다는 말이다. 아래 그림의 x와 y처럼 말이다. 

 

Fig. 2 직각삼각형(right triangle)의 벡터 표현

 

 

 

빨간색 벡터인 x는 x축 방향으로 뻗어있다. 파란색 벡터인 y는 y축 방향으로 뻗어있다. 이 두 벡터가 이루는 각도는 보다시피 직각이며, 두 벡터를 더했을 때 피타고라스(pythagoras)가 정의한대로 직각삼각형이 만들어진다. 

 

위와 같이 2차원 벡터일때는 우리는 좌표 평면에 그림을 그려서 쉽게 알 수 있다. 하지만 3차원만 되도 표현하기가 까다로우며 4, 5차원, n차원의 경우엔 표현 자체가 불가능하다. 하지만 이론적으론 가능하다. 그렇다면 n차원의 두 벡터가 직교인지를 우리는 어떻게 알 수 있을까? 이미 짐작했겠지만 내적(dot product)을 통해 알 수 있다. 

 

 

내적은 식 (1) 혹은 (2)와 같이 표현한다. 식(1)에서 ||a||, ||b||는 각각의 벡터의 크기(norm)를 나타낸다. 우리가 중.고등학교때 많이 봤던 형태일 것이다. 식 (1)의 경우 두 벡터 사이의 각도에 대한 cosine이 들어가 있는데 이 cosine때문에 두 벡터가 직교(orthogonal)할 경우 그 결과값이 0이 나오는 것이다. 

내적을 dot연산자와 함께 추상적으로 표현한 식 (1)을 실제적으론 식 (2)와 같이 row vector와 column vector의 곱으로 표현한다. x의 transpose가 붙은 이유는 보통 벡터는 x, y, v 와 같이 하나의 볼드체(Bold) 문자로 표기하는데 일반적으로 볼드체로 표현되는 벡터들은 column vector를 나타낸다. 그런데 이를 row vector로 만들지 않으면 곱셈 자체를 할 수가 없다. 벡터나 행렬의 곱셈연산을 하기 위해선 가령 [1x3]과 [3x1]과 같이 중간의 차원이 맞아야 곱셈이 가능한데, 그냥 column vector 두 개는 [3x1], [3x1]처럼 가운데 차원이 맞지 않는다. 따라서 row와 column의 곱셈으로 만들어줘야 하기 때문에 (2)와 같이 transpose를 해주는 것이다. 이렇게 row와 column vector의 곱셈을 해주면 각 벡터의 같은 요소들끼리 곱하여 더해주는 연산을 하게 된다. 

 

 

 

 

그렇다면 왜 내적을 해서 0이 되면 두 벡터가 직교일까? 피타고라스의 정리(pythagoras' theorem)로부터 그 이유를 알아보자. 다들 아래의 유명한 공식은 잘 알고 있을 것이다. 위의 그림에 나타나있는 벡터와 삼각형을 식으로 표현한 것이다.  

 

 

중학교때는 단순히 x의 제곱, y의 제곱, 그리고 대각선은 c등의 문자로  배웠지만 여기서는 약간 표현 방법이 다르다. 벡터로 표현했기 때문이다. 즉 벡터 x의 크기의 제곱과 벡터 y의 크기의 제곱은 벡터 x+y(삼각형의 대각선)의 크기의 제곱과 같다는 말이다. 식(3)이 좀 더 와닿을 수 있도록 3차원 벡터의 예를 들어서 실제 계산을 해보자. 

 

 

식이 성립하는 것을 알 수 있다. 여기서 정말 주의해야 할 것은 위의 식이 항상 성립하는 것은 절대 아니다! 위의 식은 오직 직각 삼각형의 형태처럼 직교(orthogonal)하는 벡터들 사이에서만 성립하는 것이고, 피타고라스 정리와 연관지어 설명하기 위함이다. y에 직교 하지 않는 다른 벡터를 넣으면 식이 틀리는 것을 알 수 있다. 

 

식 (4)처럼 ||x||는 벡터 x의 크기, 즉 벡터의 길이(length)를 의미한다. 이것을 norm이라고 부르는데, norm에도 L2-norm, L1-norm등 다양한 방식이 존재한다. norm에 대해선 추후에 정리해보는 시간을 갖도록 하자. 어쨋든 일반적으로는 L2-norm을 나타내고 그것이 식 (4)에 나타낸 것이다. 그런데 가만히 보면 L2-norm을 구하는데 있어 식 (3)과 비슷한 패턴이 보일 것이다. 이는 어떤 임의의 벡터의 크기를 계산하는 원리가 피타고라스의 정리로부터 나온 것이기 때문이다. Fig. 2처럼 x+y벡터의 크기는 벡터의 각 요소의 제곱을 더해 제곱근(square root)를 씌운 것과 같다. 이 방법은 n차원의 벡터에 모두 동일하게 적용된다. 

 

사실 식 (4)는 우리가 기존에 알던 방식으로 풀이해본 것이다. 이것을 좀 더 선형대수적인 방법으로 표현해보자. 우선 식 (3)은 다음과 같이 표현할 수 있다. 

 

 

자기 자신의 벡터를 그대로 제곱하는데, 이때 column 벡터를 transpose를 하여 row vector로 만들어준 뒤 다시 자기 자신과 곱하는 형태이다. 실제로 그러한지 식 (4)의 벡터들을 가지고 확인해보자. 

 

 

식 (4)에 있는 벡터를 가지고 실제로 계산해보니 답이 같은 것을 알 수 있다. 이를 통해 식 (3)을 우리가 기존에 알던 (4)의 방식과 벡터 방식으로 표현한 (5)가 같다는 것을 이해할 수 있다. 

 

여기까진 이해하겠는데, 그렇다면 식 (3) ~ (6)에 걸쳐 설명한 피타고라스의 직각삼각형(right triangle)에 대한 정리가 내적(dot product)와 도대체 어떻게 연결된다는 것일까? 즉 식 (1), (2)와 어떻게 연결지어서 이해를 해야할까? 이는 식 (5)를 풀어서 정리해보면 알 수 있다. 

 

 

 

먼저 우변에 있는 식을 전개한다. 이때 좌변과 우변에 $\boldsymbol{x}^T \boldsymbol{x}, \; \boldsymbol{y}^T \boldsymbol{y}$가 각각 존재하므로 소거할 수 있다. 이들을 소거하고 나면 좌변은 0이 되고 우변엔 $\boldsymbol{x}^T \boldsymbol{y}, \; \boldsymbol{y}^T \boldsymbol{x}$가 남는데, a*b나 b*a나 어차피 똑같기 때문에 같은 것으로 간주할 수 있다. 따라서 $2\boldsymbol{x}^T \boldsymbol{y}$가 되고 2는 상수이기 때문에 무시할 수 있다(직교인 경우 곱하면 0인데 앞에 상수는 곱하나마나..). 결국 이렇게 전개하여 정리한 식이 내적의 식 (2)와 일치하는 것을 볼 수 있다. 이렇게 해서 피타고라스의 직각삼각형에 대한 정리로부터 내적(dot product)을 유도하였다. 결론적으로 차원이 동일한 두 벡터를 내적하였을 때 그 결과값이 0이면 두 벡터는 직교(orthogonal)하며 두 벡터사이의 각도는 90도이다. 

 

여기서 한 가지 의문이 생길 수 있다. 만약 벡터 a와 b를 내적하는데, b가 영벡터(zero vector)라면? 이 두 벡터는 직교(orthogonal)일까? 정답은 YES이다. 영벡터인 벡터와 내적하는 모든 벡터는 서로 직교이다. 왜냐하면 직교에 대한 정의 자체가 내적했을 때 결과가 0인 것으로 되어 있기 때문이다. 내적에 대한 개념을 잘 이해하도록 하자. 

 

 

 

 

 

 

2. 부분 공간의 직교(Orthogonality of subspaces)

 

 

우리는 위에서 피타고라스의 정리를 이용하여 임의의 두 n차원 벡터가 직교(orthogonal)하다면, 두 벡터의 내적(dot product)의 결과 값은 0이 됨을 보였다. 이 개념을 확장하여 부분 공간에 적용해보자. 다음의 정의를 생각해보자. 

 

  • 부분 공간 S는 부분 공간 T에 직교하다. 

 

위의 정의가 의미하는 것이 정확히 무엇일까? 이해를 돕기 위해 그림을 통해 정의를 해보도록 하자. 

 

 

Fig. 3 두 부분 공간은 직교(orthogonal)인가? 직교가 아니다..

 

 

Fig. 3은 3차원 공간 R3에서 두 개의 부분 공간(subspace) S와 T를 나타낸 것이다. S는 yz평면, T는 xy평면이고 두 평면은 수직(perpendicular)이다. 가운데 빨간 점이 원점이다. 주황색 벡터 Vs는 부분 공간 S상에 존재하는 벡터이고, Vt는 부분 공간 T에 존재하는 벡터이다. T와 S는 직교라고 할 수 있을까? 

결론부터 말하자면 두 부분 공간은 직교가 아니다. (분명 평면 자체는 직교이지만 이것을 어떤 행렬의 부분 공간으로 봤을 땐 직교가 아니라는 의미다위에서 세웠던 부분 공간에 대한 정의를 다시 풀어서 정리해보면 다음과 같다. 

 
 
 
  • 부분 공간 S는 부분 공간 T에 직교하다. 
  • 다시 말하면 S에 존재하는 모든 벡터가 T에 존재하는 모든 벡터와 직교해야 한다. 
 

 

Fig. 3의 두 부분 공간은 위의 빨간색 글씨의 정의 때문에 직교가 아니다. S와 T는 분명 90도를 이루고 있는 평면이고 Vs는 분명히 S에, Vt는 T에 존재하는 벡터이지만, 두 벡터가 이루는 각도는 약 45도 정도 된다. 또는 Vs가 Vt와 나란히 있을 수도 있다. 만약 Vt가 x축을 향해 뻗어있다면 두 벡터는 직교하지만 그렇지 않는 경우가 있기 때문에 위의 정의에 위배된다. 이것을 일반적으로 얘기해보자면 다음과 같다. 

 

어떤 두 부분 공간이 영벡터(origin)가 아닌 임의의 벡터에서 만난다면, 이 두 부분 공간은 직교(orthogonal)하지 않다. 

 

Fig. 3 은 두 부분 공간 S와 T가 원점 뿐만 아니라 아예 y축 line을 따라서 만나고 있는 것을 볼 수 있다. 결국 두 부분 공간이 직교하기 위해선 다음의 두 가지 조건이 충족되어야 한다. 

 

  • S에 존재하는 모든 벡터가 T에 존재하는 모든 벡터와 직교해야 한다.
  • 두 부분 공간이 만나는 점은 오직 원점(origin)에서만 만나야한다.   

 

따라서 두 부분 공간 S와 T는 직교가 아님을 알 수 있다. Fig. 3의 두 부분 공간이 직교하는 공간이 되기 위해서는 아래 그림과 같은 형태가 되어야 한다. 

 

Fig. 4 2D 평면 부분 공간 S 전체에 직교(orthogonal)하는 Line형태의 부분 공간 T

 

 

 

Fig. 4는 부분 공간 S전체를 직교하는 1D Line 부분 공간 T를 나타낸다. 이때 두 부분 공간이 교차하는 교차점(intersection)은 오직 원점(origin)뿐이다. 부분 공간 S의 어떠한 벡터라도 T의 어떠한 벡터 Vt와는 90도 각도를 이루게 된다. 

2차원을 가정할 경우엔 두 개의 Line이 90도 각도를 이루면서 서로 원점을 지나게 되면 이 역시도 직교한 두 개의 부분 공간이 된다. 

 

 

 

- Orthogonality in row space and null space

 

앞서 정리한 부분 공간의 직교에 대한 내용을 토대로 이제 어떤 행렬의 row space와 null space가 직교한 부분 공간이라는 것을 이해해보자. Fig. 1을 참조하자. 이미 언급한 내용이지만 row space와 null space는 직교(orthogonal)한다. 어떻게 알 수 있을까? 사실 행렬의 rank를 살펴보면 알 수 있다. 결론부터 이야기 하자면 어떤 행렬의 row space와 null space라는 것은 이 행렬의 전체 공간을 두 개의 수직인 부분 공간으로 나누는 것이다. 

사실 Fig. 3은 애초에 잘못된 그림이다. 왜냐하면 우리가 정의하는 공간은 3차원 공간인데, 부분 공간은 두 개의 2차원 평면이다. 2+2=4이므로 부분 공간을 나타낸 그림이라면 차원이 맞지 않는다. Fig. 4가 사실은 맞는 그림인 것이다. rank에 대한 이야기는 잠시 후 다시 하도록 하고, row space와 null space가 직교인 이유를 알아보자. 이 두 공간은 왜 직교일까? 

 

알다시피 null space는 Ax=0를 만족시키는 모든 해 x의 집합이다. 일단 Ax=0를 자세히 풀어서 써보자. 

 

 

Ax=0의 연산을 풀이하면 A의 각 row는 x벡터와 곱해져서 0을 만든다. 즉 각각의 row와 벡터 x간의 곱만 놓고보면 내적(dot product)와 똑같은 연산이다. 다시 말하면 row1 연산의 경우 a11*x11+a12*x21+a13*x31+a14*x41=0의 연산 자체가 내적이라는 의미다. 모든 row에 대해서 내적을 했을 때 결과가 모두 0이기 때문에 각각의 row와는 직교(orthogonal)인 것을 알 수 있다. 

그런데 우리는 분명 row space와 null space가 직교라고 했다. 각각의 벡터가 아닌 row 공간(space)에 대해서 말이다. 이 말이 의미하는 것은 결국 row space상에 존재하는 모든 벡터, 즉 row의 선형 결합(Linear combination)을 통해 만들어지는 모든 벡터들과도 직교라는 말과 같다. 아래 식과 같이 말이다. 

 

 

 

 

이렇게 해서 row space와 null space가 직교(orthogonal)하다는 것을 수식적으로 이해는 했는데, 사실 한 가지 더 알아둬야 할 것이 있다. 바로 rank, 즉 차원에 관한 것이다. 조금 멀리 있겠지만 Fig. 1을 다시 살펴보면 row space와 null space는 직교하며, 이들은 Rn차원에 대한 공간에서 다뤄지고 있다. 이때 row space의 차원은 rank인 r차원이고, null space의 차원은 전체 공간 n에서 rank를 뺀 만큼의 공간 n-r이다. 이 말이 의미하는 것은 결국 row space와 null space는 전체 공간인 Rn차원의 공간을 두 개의 수직(perpendicular)한 부분 공간으로 나눴다는 말이 된다. 다시 말하면...

Row space의 차원 + Null space의 차원 = Rn

이 된다는 말이다. 아래의 예를 보자. 

 

 

식 (9)의 행렬 A는 m=2, n=3이며 rank=1이다. 즉 row space의 차원이 1이고, null space의 차원은 n-r=3-1=2이다. 행렬 A의 rank가 비록 1이지만, 대신 null space의 차원이 2가 되어 결과적으로 Rn차원에는 변함이 없게 되었다. row space의 차원 + null space의 차원 = 3 이 되어 결국 전체 공간인 Rn차원을 두 개의 수직인 부분 공간으로 나눈 것을 알 수 있다. row space와 null space의 관계를 정리하자면..

 

  • Null space에 존재하는 모든 벡터들은 row space에 존재하는 모든 벡터들에 직교(orthogonal)한다. 
  • Null space와 row space는 Rn차원에서 서로 직교하는 보완재(complements)이다. 

 

 

- Orthogonality in column space and left null space

 

column space와 left null space도 row, null space와 마찬가지로 서로 직교(orthogonal)하며 보완(complements)해준다. 차이점이 있다면 전체 공간이 Rm공간이며 이를 서로 직교하는 column space와 left null space로 나눈다는 것이다. 자세한 설명은 내용이 거의 동일하기 때문에 간단히 수식만 나열하고 마치도록 하겠다. 마찬가지로 아래의 정의는 똑같이 적용된다. 

Column space의 차원 + Left null space의 차원 = Rm

 

 

 

 

식 (9)를 기준으로 m=2, r=1이므로 column space의 차원은 1, left null space의 차원은 m-r=2-1=1이다. 

 

  • Left null space에 존재하는 모든 벡터들은 column space에 존재하는 모든 벡터들에 직교(orthogonal)한다. 
  • Left null space와 column space는 Rm차원에서 서로 직교하는 보완재(complements)이다. 

 

 

 

 

- Matlab Implementation of the orthogonality of subspaces

 

좀 더 직관적인 이해를 돕기 위해 식 (9)를 실제로 matlab을 통해 시각화(visualization)해보자. 아래 그림은 Row space와 Null space를 그린 것이다. Row space는 Line으로, Null space는 2D 평면의 형태를 띄며 서로 직교한다. 

 

Fig. 5 Row space와 Null space

 

 

아래는 Row space와 Null space의 MATLAB코드.

 

 

 

다음으로 식 (9)의 Column space와 Left null space의 그림이다. 식 (9)의 Rm은 2차원이며 Column space와 Left null space각각이 1차원의 Line으로 나타나는 것을 볼 수 있다. 

 

Fig. 6 Column space와 Left null space

 

아래는 MATLAB 코드이다. 

 

 

 

 

 

 

 

3. 마치며

 

우리는 지금까지 부분 공간의 구조 및 차원에 대해서 배웠고 이것이 선형 대수(Linear algebra)에서 굉장히 중요한 부분이라고 강조했다. 이번 시간에는 부분 공간들의 직교(orthogonality)에 대해 알아보았고 이제 남은 것은 부분 공간들의 기저(basis)에 관한 내용이다. 앞으로의 학습을 위해 이번 강의를 잘 숙지하도록 하자. 

 

 

이번 포스팅에선 선형 대수의 응용에 대한 이야기를 할까 한다. 선형 대수를 공부하면서 한 번쯤은 "이것들이 어디에 사용될까?" 하는 의문을 가져본 적이 있을 것이다. 선형 대수는 실제로 너무나 다양한 곳에 응용되고 있다. 머신 러닝(Machine Learning), 로보틱스(Robotics), 컴퓨터 비전(Computer Vision), 그래픽스(Graphics), 영상 처리(Digital Image Processing), 게임(Game), 물리학(Physics), 생물학(Biology) 그리고 경제학(Economics)에 이르기까지 굉장히 방대한 분야에 걸쳐 사용되고 있다. 

 

필자의 경험을 예로 들자면, 실험실에서 보유하고 있던 다관절 형태의 산업용 로봇을 제어하기 위해 기구학을 풀었어야 했는데, 이때 선형대수를 이용하여 역기구학(Inverse Kinematics)을 풀고 이를 통해 로봇을 제어한 경험이 있다. 또한 물체 인식을 위한 카메라 캘리브레이션(Camera Calibration), 물체 자세추정을 위해 세그멘테이션(segmentation)된 바이너리 이미지의 Eigenvalue 및 Eigenvector등의 사용, 그리고 각종 머신 러닝 등을 사용할 때에도 선형대수를 이용하였다. 특히 컴퓨터 비전이나 그래픽스 분야에서는 선형 대수를 모르고서는 절대 공부할 수 없다. Multiple view geometry라는 컴퓨터 비전 분야의 전설적인 책이 있는데, 이 책은 선형 대수를 모르면 아예 읽을 수 조차 없다. 이렇듯 선형 대수는 특히 공학도라면 절대로 피할 수 없는 학문이다. 선형 대수의 중요함은 아무리 강조를 해도 지나치지 않는다. 

 

서론이 조금 길어졌는데 어쨋든 이번 포스팅에서 다룰 내용은 그래프(Graph)와 네트워크(Network)에 관련된 내용이다. 이 그래프 이론은 이후 확률/통계 기반의 머신 러닝 기법인 베이지안 네트워크(Bayesian Network)및 마코프 모델(Markov Model)의 기초가 되니 잘 이해하도록 하자. 또한 이를 우리가 잘 알고있는 법칙인 키르히호프의 법칙(Kirchhoff's Laws)과 연관지어 이해해보도록 하자. 

 

 

 

1. 그래프(Graph)

 

- Graph: Nodes and Edges

 

우리는 그래프(Graph)라고 하면 주가의 변동을 나타내는 2차원 평면상의 그래프와 같은 형태를 많이 떠올릴 것이다. 그러나 수학, 특히 이산 수학(discrete mathematics)에서의 그래프는 어떤 네트워크 형태의 구조를 의미한다. 즉 어떤 객체(object)들과 그들을 연결짓는 선(Line)을 통해 그들 사이의 관계를 나타내는 구조를 의미한다. 여기서 각 객체를 노드(node)(혹은 정점(vertex))라 하고 각 노드들을 연결하는 선을 에지(edge)라 한다. 그래프는 응용수학(Applied mathematics)에서 가장 중요한 모델 중 하나이며, 이산(discrete)적 형태를 띄고 있다. 그래프의 형태는 다음과 같다. 

 

 

위의 그림에 나와있듯이 그래프는 노드(node)와 에지(edge)로 구성되어 있다. 노드는 각각의 객체(object)를 의미하며 정점(vertex)이라고 부르기도 한다. 위 그림에서 색깔을 가지고있는 동그라미들이 바로 노드들이다. 

에지(edge)는 각 노드들을 연결시켜주는 역할을 한다. edge는 방향을 가지거나 방향을 가지지 않는 경우도 있다. 방향이 있는 edge로 구성된 그래프를 우리는 directed graph라 하며 위의 그림과 같다. 방향이 없는 edge로 구성된 그래프는 undirected graph라 한다

 

그래프 모델을 우리 실생활과 연결시켜보자. 각 노드를 어떤 하나의 웹사이트 혹은 우리 컴퓨터라고 생각해보자. node1은 네이버, node2는 다음, node 3는 우리집에 있는 컴퓨터와 같이 말이다. 각 웹사이트는 인터넷으로 연결되어 있는데, 우리는 네이버에 접속하기 위해서 가장 빠른 경로를 찾거나 가장 최적의 경로를 찾아야 할 때도 있다. 혹은 node들을 SNS의 계정이라고 생각해보자. 각 node들은 서로 연결되어 있고, 친구를 추천해주는 일 등을 할 때 이와 같은 그래프 모델을 사용해서 최적의 친구를 추천해 주거나 하는 일들을 할 수 있다. 

이밖에도 어떤 도시의 수도관 공사에서 물의 흐름을 나타내는 모델, 도시의 다리를 설계하기 위한 모델, 전자회로에서 전류의 흐름에 대한 모델 등 다양한 곳에 응용이 가능하다. 이렇듯 그래프 모델은 우리 실생활에서 유용하게 사용될 수 있다. 

 

 

- Incidence Matrix:

 

다시 그래프의 내용으로 돌아가서, 위의 그래프는 node가 총 4개이고 edge가 총 5개이다. node끼리 연결된 방향은 화살표로 표현되어 있다. 이러한 그래프의 노드와 그들의 연결관계를 행렬(Matrix)로 나타낼 수 있다. 이러한 그래프의 연결 관계에 대한 그래프를 우리는 근접행렬(Incidence Matrix)이라 한다. 

 

위의 그래프에서 node의 개수를 n, edge의 개수를 m이라고 했을 때, n=4, m=5가 된다. node의 개수인 n을 column으로, edge의 개수인 m을 row로 하여 5x4 크기의 근접 행렬을 만들 수 있다. 이때 그래프의 edge는 방향을 가지고 있기 때문에 근접 행렬의 각 원소들은 방향을 나타내야한다. 근접 행렬에 방향을 나타내는 방법은 다음과 같다. edge1의 경우 node1에서 출발하여 node2로 향한다. node1이 출발점, node2가 끝점이 되는데, 출발점은 -1, 끝점은 1로 지정하는 것이다. 이렇게 하여 위의 그래프에 대한 근접 행렬을 만들면 아래와 같다. 

 

 

행렬 A의 row를 중심으로 생각해보면 각 node들 간의 관계를 -1과 1로 정의해 준다. 이 incidence matrix만 있으면 그래프를 모르더라도 그릴 수 있다. 예를 들면 column이 4개 이므로 종이에 점 4개를 먼저 그리고 번호를 부여한다음 row를 보면서 node끼리 연결하는 것이다. 가령 row3를 보면 node1에 -1, node3에 1의 원소가 있으므로 node1에서 node3로 연결되는 화살표를 그리면 된다. 

 

여기서 한 가지 눈여겨봐야 할 것이 있다. node1은 node2와 node3로 각각 연결되어 있다. 이때 node2는 다시 node3로 연결되어 있다. 이렇게 node들이 연결되어져 있는 부분 그래프(subgraph)를 Loop라고 한다. Loop를 찾는 방법은 연결되어있는 edge들을 따라가며 찾는 방법도 있으나, 좀 더 쉬운 방법은 그래프에서 부분 면적을 찾는 것이다. 이것은 마치 아래 그림에서 작은 삼각형들의 총 개수를 찾는 문제와 같다. 

 

위 그림에서 중복되지 않는 삼각형의 총 개수는 몇 개인가? 

이를 그래프로 생각하면 각각의 부분 삼각형의 총 개수는 loop의 총 개수와 같다. 

그림 출처: http://kwon-blog.tistory.com/1289

 

 

위 그림에서 각 삼각형들의 꼭짓점들을 node라 하고 삼각형을 이루는 line들을 edge라고 생각했을 때, 위 그림의 각각의 삼각형들이 바로 부분 그래프(subgraph)가 되는 것이고 Loop가 된다. 위 그림에선 총 8개의 Loop가 존재한다(숨어있는 삼각형을 모두 찾으면 25개가 나오지만 여기선 중복되지 않는 부분만 loop로 간주함). 꼭 삼각형 뿐만 아니라 임의의 다각형 형태의 그래프에서 각각의 면적을 찾으면 그것이 loop의 개수이다(겹치는 부분 제외). 

 

다시 우리의 그래프로 돌아와서, 그렇다면 우리의 그래프는 몇 개의 loop를 가지고 있을까? 결론부터 말하자면 아래 그림과 같이 총 3개의 loop를 가지고 있다. edge1, 2, 3에서 loop1,  edge3, 4, 5에서 loop2,  edge1, 2, 4, 5에서 loop3가 나온다. 이러한 loop와 loop들의 위치는 그래프에서 중요한 역할을 한다. 

 

 

 

사실 loop는 incidence matrix에서 재미있는 특성을 가지고 있다. incidence matrix를 loop를 고려하여 다시 써보자. 

 

 

식 (2)에서 edge1,2,3는 loop1이다. A의 row1, 2, 3에 해당하는 것들인데, 이 row들은 독립(independent)인가?를 한 번 생각해보자. 즉 행렬 A에서 loop에 해당하는 row들은 독립(independent)인가? 정답은 No다. loop1의 row들은 종속(dependent)이다. row1과 row2를 더했을 때 row3가 나오는 것을 보면 쉽게 알 수 있다. 여기서 알 수 있는 사실은 어떤 그래프의 loop에 대한 Incident matrix의 row들은 선형종속(linearly dependent)의 특성을 갖는다는 것이다. 

 

 

 

2. 전자회로의 그래프 모델링(Graph modeling of an electronic circuit)

 

- Potential difference and null space of A:

 

우리는 4개의 node와 5개의 edge로 구성된 그래프에 대한 5x4크기의 Incidence matrix를 만들었다. 그런데 만약 node가 100개이고 이들을 연결하는 edge가 180개라고 가정해보자. 이에 대한 Incidence matrix는 180x100의 크기를 가질 것이다. 그러나 이때 이 행렬은 굉장히 많은 0을 가지게 될 것이다. 왜냐하면 Incidence matrix에서는 하나의 row에서 오직 2개의 non-zero원소들만 나타나기 때문이다. 결국 그래프의 규모가 커질수록 Incidence matrix의 원소들은 행렬의 크기에 비해 적은 비율로 나타날 것이다. 즉 희소(sparse)한 원소를 가지게 되는 것이다. 이러한 형태의 행렬을 희소 행렬(sparse matrix)이라 한다. 

중요한 것은 이러한 희소 행렬은 내부적으로 어떤 구조(structure)가 형성된다. 만약 실제 문제에 대한 그래프라면, 가령 실제 어떤 전자회로에 대한 그래프라면 그 회로에 대한 구조가 Incidence matrix에 드러나게 될 것이다. 이러한 구조를 파악하기 위해 우리는 선형 대수적으로 행렬을 분석할 수 있다. 이에 대한 첫 번째 방법은 바로 Incidence matrix의 null space를 찾는 것이다

 

행렬 A의 null space를 구한다는 것은 어떤 의미를 가질까? node를 나타내는 column이 독립인지를 파악할 수 있다. Null space라는 것은 어떻게 행렬의 column벡터들의 선형 조합(Linear combination)을 통해 0을 만드는지를 알려준다. 만약 column 벡터들이 독립(independent)이라면, null space의 해는 오직 영벡터(zero vector)만이 존재한다. 만약 종속이라면, null space라는 말처럼 해들의 공간, 즉 해들의 집합이 발생한다. 

 

그렇다면 식(2)의 행렬 A의 column은 독립인가? 지금부터 알아보도록 하자. Null space를 계산하기 위해선 Ax=0를 풀면 된다. 식(2)를 아래와 같이 Ax=0의 꼴로 다시 써보자. 

 

 

위의 행렬은 무엇을 나타낼까? 이해를 돕기 위해 위의 그래프를 전자 회로(electronic circuit)라고 생각해보자. node들을 전자 회로에서 전압을 측정하는 임의의 지점이라 생각해보자(사실 전자회로에서 node는 두 개 이상의 branch들이 연결되는 지점). Incidence matrix와 연관지어 생각해보면 Ax=0에서 변수인 x=[x1, x2, x3, x4]들은 각 node에서의 전압(potentials)이다. 이때 행렬 A를 x에 곱하게 되면 우리는 각 node들의 전위차(potential differences)를 계산할 수 있게 된다. 

 

 

이제 우리가 찾아야 할 것은 언제 모든 node들의 전위차(potential differences)가 0이 되는지다. 즉 null space를 찾는 것이다. 물론 모든 x가 0인 경우에 당연히 전위차가 0일 것이다. 그러나 x가 모두 0이라는 것은 회로에 아예 전류가 흐르지 않는 다는 말이기 때문에 별 의미가 없다. 따라서 우리는 회로에 전류가 흐를 때를 가정하고 x의 값, null space를 구해야 하는 것이다. 물론 영벡터도 null space에 존재하긴 하지만, A의 column이 dependent이기 때문에 영벡터 이외의 해가 존재한다. 어떻게 column이 dependent인지를 바로 알 수 있을까? 이유는 영벡터 이외의 해를 바로 찾을 수 있기 때문이다. 행렬 A를 보면 하나의 row에 -1과 1이 딱 한 번씩만 나온다(하나의 row가 하나의 edge를 나타내므로 당연히...). 이 말은 column 끼리 다 더하면 반드시 0이 된다는 소리이고, 결국 x1=1, x2=1, x3=1, x4=1이면 column끼리 그대로 더한 것과 같기 때문에 이것이 해가 된다. 

 

x가 1로만 이루어진 벡터라는 것은 결국 각 node의 potential이 constant하다는 것을 의미한다. 즉 각 node의 전압(potential)이 constant하다면, node들의 전위차(potential difference)는 0이 된다. 이것이 Ax=0인 null space의 해(solution)이다. 

Null space는 Ax=0의 해의 공간을 의미하므로 x는 해의 집합을 가질 것이고, 어떤 1차원의 line이 해가 된다. x에 상수 c를 곱한 것이 4차원 공간에서 [1, 1, 1, 1]을 지나는 line이고 결국 우리가 찾는 최종적인 null space는 4차원 공간상에 존재하는 1차원의 line이 되는 것이다. 이때의 null space의 기저(basis)는 x=[1, 1, 1, 1]이 된다. 

 

 

그렇다면 위의 그래프를 전자회로라고 가정했을 때, 식 (5)의 null space가 물리적으로 의미하는 것은 무엇일까? 위의 회로에서 각 노드들의 전압(potentials)은 오직 임의의 상수 c에 의해 동일하게 결정된다는 것이다. 즉 식 (5)의 null space에 의하면, 임의의 상수값 c를 설정하면(ex: c=1, 3, 56, etc...) 모든 노드의 전압이 한 번에 동일하게 설정된다는 말이다. 이것이 의미하는 것은 각 노드들간에 전위차(potential differences)가 없다는 것이다. 전자 회로에서 전위차는 전류의 흐름을 만들어낸다. 그러나 전위차가 없다면 어떠한 전류의 흐름도 일어나지 않는다. 결국 위의 그래프 모델에서는 모든 노드들의 전압을 올리거나 내릴 수 있는 단 하나의 파라미터(parameter)만이 존재하는 것이다. 

 

이러한 경우에 우리는 전위차를 만들어주기 위해 node들 중 하나를 ground로 설정하고 나머지를 풀 수 있다. 이를 테면 x4=0으로 만든다음 나머지 x1, x2, x3를 푸는 것이다. 이렇게 하면 Incidence matrix A의 col4는 신경쓰지 않아도 된다. 나머지 column을 가지고 해(solution)를 구하면 된다. 

 

 

 

node들 중 하나를 0으로 설정한다는 것은 전압(potential)을 0으로 만든다는 것이고 다른 node들의 기준 전압(base voltage)이 된다는 것이다. 이제 나머지 3개의 node에 대한 전압값에 대해서 해를 구하면 된다. 지금 예에서는 x4=0로 설정했지만(ground), x1=0, 혹은 x3=0처럼 어떤 node를 ground로 만들어도 상관 없다. 이 행위가 결국 전위차(potential difference)를 만들게 되고 전류의 흐름을 만든다.  

 

이와 같이 하나의 node를 ground로 만들고 나머지 3개의 node를 이용해 해를 구하는 것은 Incidence matrix의 rank가 3이기 때문이다. 우리는 앞서 식 (5)와 같이 그래프 행렬 A의 null space를 구했고, null space의 차원(dimension)이 1임을 알았다. Lecture 10에서 배웠듯이 null space의 차원은 dim N(A)=n-r이다. 여기서 n=4이고 r은 가우스 소거를 통해 pivot을 살펴보면 알 수는 있지만 아직은 모르는 상태다. 그러나 소거를 하지 않아도 n-r = 4-r=1으로부터 r=3임을 알 수 있다. 따라서 A의 column space(or row space)의 차원(dimension)은 3이고 결국 col1, col2, col3가 독립(independent)이라는 뜻이다. x1이나 x2, x3를 ground로 설정해도 마찬가지이다. 

 

정리하자면 위에서 정의했던 전자회로 그래프 모델에서 A의 4개의 변수(node의 전압(potential)을 의미)중 어떤것이던 처음 3개는 독립(independent)이며 유의미하다(pivot variable을 의미). 그러나 마지막 4번 째 변수는 그렇지 못하기 때문에(free variable처럼..) 보통 이 독립인 변수를 제외한 마지막 변수를 0으로 설정하고 나머지 변수에 대해서 해를 계산한다. 

 

 

- Kirchoff's current law and null space of A transpose:

 

이번에는 A의 transpose의 null space를 구해보자. 응용수학에서는 A의 transpose의 null space를 계산하는 경우가 의미 있을 때가 많다. $N(A^T)$는 우리가 잘 알고 있는 키르히호프의 전류 법칙(Kirchhoff's current law)과 관련이 있다. 우선 아래와 같이 식을 써보자. 

 

 

먼저 위의 Left null space의 차원(dimension)에 대해 알아보자. Left null space의 차원인 $\text{dim} \; N(A^T)$을 알기위해선 행렬에 대한 3가지 성분을 알아야한다. 바로 row와 column의 수인 m과 n, 그리고 rank이다. Lecture 10에서 배웠듯이 Left null space의 차원은 m-r이다. 여기서 m=5이고 r=3이다. A transpose에서는 m은 여전히 5이지만 column의 수를 나타낸다. 어쨋든 계산하면 m-r=5-3=2가 Left null space의 차원이 된다. 사실 m-r=2라는 것은 A transpose 행렬에서 소거를 했을 때 free column으로 나타나는 부분들이다. free column이 2개이고 이것이 결국 Left null space의 차원이 되는 것이다. Left null space의 차원은 2차원이다. 

 

 

차원을 알았으니 그 다음에 찾아야 할 것은 Left null space의 기저(basis)이다. 기저를 구하기전에 먼저 식 (8)이 의미하는 것이 정확히 무엇인지, 어떤 것을 표현하고 있는지를 먼저 이해해보자. 본 전자회로에 대한 그래프 모델에 대한 관계는 아래 그림과 같다. 

 

 

그래프 모델과 선형대수의 부분 공간과의 관계도

 

 

우리는 가장 먼저 그래프를 그렸고 미지수 x=[x1, x2, x3, x4]를 정의했다. 이 x가 나타내는 것은 각 node에서의 potential을 나타낸다. 그 다음 그래프의 node사이의 연결 관계를 식(1)과 같이 Incidence matrix로 정의하였다. 미지수 x에 Incidence matrix A를 곱해줬을 때, 우리는 식 (4)와 같은 방정식을 얻을 수 있고 이것이 의미하는 것은 node들 간의 전위차(potential difference)이다. Incidence matrix A를 곱해서 node들의 전압(potential)에서 node들 간의 전위차(potential difference)에 대한 방정식 Ax=0을 만들어낸 것이다. 

 

그 다음으로 정의한 것은 y=[y1, y2, y3, y4, y5]이다. y는 회로에 흐르는, 즉 그래프에서 edge에 흐르는 전류(current)를 나타낸다. 어떤 행렬 C가 있다고 했을 때, 이 C행렬이 전위차와 전류 사이를 연결시켜주는 행렬이라고 하자. C를 통해 전위차에서 전류로 연결되는 관계를 우리가 잘 아는 옴의 법칙(Ohm's law)으로 생각할 수 있다. edge에 흐르는 전류는 전위차(potential difference)가 클 수록 커지는데, 이때 edge 자체가 가지고 있는 저항이 전류의 양에 영향을 준다. 저항이 크면 edge에 흐르는 전류의 양도 작아지고, 저항이 작으면, 즉 전도율(conductance)이 높아지면 전류의 양도 커지는 것이다. 옴의 법칙은 결국 얼마나 많은 영의 전류가 흐르는지에 대한 관계를 설명해 주는 것이다. 이러한 전위차와 전류의 관계를 우리는 C행렬을 통해 연결시킬 수 있다. 

 

마지막 단계는 A의 transpose의 null space, 즉 Left null space를 구하는 것이다. 이 Left null space가 의미하는 것이 바로 우리가 잘 알고 있는 법칙인 키르히호프의 전류 법칙(Kirchhoff's current law)이다. 

 

이렇게 전체 그림을 보니 뭔가 떠오르는 것이 있을 것이다. 바로 Lecture 10에서 배웠던 4개의 주요 부분 공간(four fundamental subspaces)이 보일 것이다. 4개의 주요 부분 공간이 우리가 지금껏 전자회로의 그래프 모델에서 찾고자 하는 것과 정확히 일치한다. 즉 어떤 실제 응용문제에 대한 사각 행렬을 정의했을 때, 우리가 찾고자 하는 구조나 관계가 A와 A transpose를 통해 설명되어진다. 4개의 주요 부분 공간을 잘 이해하는 것이 굉장이 중요하다. 

 

 

이제 A transpose의 null space인 Left null space를 구해보자. 앞서 언급했듯이 이 응용문제에서 left null space가 의미하는 것은 키르히호프의 전류 법칙이라고 했다. 이를 다시 상기시켜보면 "전자(전기)회로에서 어떤 분기점을 기준으로 들어온 전류의 양과 나간 전류의 양은 같다" 이다. 이것이 Left null space의 식과 어떻게 연관되는지 살펴보자. 비교해보기 좋기 위해 그래프와 식을 다시 써보자. 

 

 

 

 

식 (10)의 화살표 부분의 row1을 보자. -y1-y3-y4=0이다. 음의 부호(-)는 node에서 전류가 흘러나가는 것을 의미한다. 즉 node1에서 전류가 다른 곳으로 나가는 edge1, edge3, edge4를 각각 의미한다. row1이 의미하는 것은 node1에서 흘러나간 전류의 총 합은 0이다. 이 말은 물리학에서 알짜힘(net force)과도 같은 말인데, 정지하고 있는 물체가 계속 정지할 수 있는 것은 물체에 작용하는 알짜힘이 0이기 때문이다. 즉 물체에 작용하는 다양한 힘 벡터의 크기가 물체에 작용하는 것이 0이기 때문에 물체가 계속 정지해 있는 것이다. 마찬가지로 node1에 흐르는 알짜 전류(net current)가 0이라는 뜻이다. 쉽게 말하면 "들어온만큼 나간다"이다. 만약 node1이 커패시터라고 했을 때, 알짜 전류가 0이 아니라면, 예를 들어 들어온 전류보다 덜 나간다면 커패시터는 터지고 말 것이다. 그러나 회로에는 들어온만큼 나가는 법칙이 존재하기 때문에 커패시터가 터지지 않고 잘 작동하는 것이다. 전류는 node에 쌓이지않고 계속 흘러서 돌아다닌다. (물론 커패시터는 충/방전을 통해 잠시 쌓이긴 하지만 말이다..)

 

row2를 보면 y1-y2=0인데, y2를 이항하면 y1=y2이다. 즉 node2에 흘러들어온 전류 y1과 node2에서 흘러나가는 전류 y2는 같다. 

row3는 y2+y3-y5=0인데, 역시 이항하면 y2+y3=y5이다. node3로 흘러들어오는 전류y2와 y3의 합은 node3에서 흘러나가는 전류 y5와 같다. 

마지막 row4를 보면 node4로 흘러들어가는 y4와 y5의 총 합이 0이다. 이렇듯 Left null space의 식 (10)은 "들어온만큼 나간다"는 키르히호프의 전류의 법칙을 잘 설명해주고 있다. 이것은 결국 평형방정식(balance equation)이다. 

 

 

이제 Left null space의 해(solution)를 구해보자. 어떻게 구할 수 있을까? 물론 지난 강의에서 배운대로 소거(elimination)를 통해 row reduced echelon form을 만들고 pivot과 free variable을 구하면 special solution을 구할 수 있고 결국 null space를 계산할 수는 있을 것이다(Lecture 7참고). 그러나 이런 실제 예제에서 우리는 소거를 하지 않고도 null space의 해를 구할 수 있다. 키르히호프의 전류 법칙을 잘 이해하면 Left null space의 기저(basis)를 어렵지 않게 구할 수 있다. 바로 Loop 단위로 node들 사이에 edge로 표현된 전류의 흐름을 따져서 기저를 구하는 방법이다. 

 

우선 Left null space의 차원은 식 (9)에 따라 2이다. 따라서 기저는 두 개의 special solution이어야 한다. 

먼저 node1, node2, node3에 걸쳐 형성된 Loop1을 보자. 방향은 처음에 정하기 나름이므로 y1을 1로 정하자. 그 다음 y2는 1일까? -1일까? y2=1이어야 한다. 왜냐하면 node1에서 출발한 전류가 node2를 거쳐 node3로 흘러가는 것이기 때문이다. 또는 식 (10)의 row2에 의해 y1=y2 이기때문에 1로 설정해야 한다. 

y3는? -1이다. 왜일까? Loop1에서 보자면 node1에서는 1만큼의 전류가 흘러나갔다. 키르히호프의 전류법칙에 따르면 전류가 나간 만큼 들어와야 하기 때문에 y3로는 전류가 들어와야 한다. 또한 우리는 현재 node3에 와 있다. 그런데 y3는 node3 입장에서 들어오는 전류이다. 지금까지 node 입장에서 나가는 전류를 1로 설정했기 때문에 y3는 -1로 설정해야 한다. loop1을 기준으로 기저를 찾고 있기 때문에 y4와 y5는 0으로 만들어준다. 이렇게 해서 첫 번재 special solution인 Left null space는 y=[1, 1, -1, 0, 0] 이다. 식 (10)의 row1, 2, 3, 4를 통해 검산해보면 special solution이 맞는지 확인할 수 있다. 

 

두 번째 special solution은 loop2를 기준으로 구해보자. 이번엔 y3=1, y5=1, y4=-1이고 나머지는 y1=0, y2=0이다. 따라서 y=[0, 0, 1, -1, 1]이다. 역시 식 (10)을 통해 검산해보도록 하자. Left null space의 기저(basis)는 아래와 같다. 

 

 

 

그런데 loop1과 loop2말고 node1, node2, node3, node4에 이르는 큰 loop가 기저가 될 수 있지 않을까? 하는 생각을 할 수도 있다. 우선 해를 구해보자. y1=1, y2=1, y5=1와 같이 설정하고 y3=0이다. 마지막으로 y4=-1로 설정하면 아래와 같은 큰 loop에 대한 left null space의 해가 구해진다. 

 

 

그렇다면 (12)에 있는 해를 세 번째 기저로 쓸 순 없을까? 그럴 수 없다. (11)의 두 special solution을 더하면 (12)가 된다. 즉 dependent한 해이기 때문에 사용할 수 없다. 

 

이렇게 해서 A의 Left null space의 해를 구하였다. 비록 소거(elimination)를 이용하여 해를 구하진 않았지만 키르히호프의 전류 법칙(Kirchhoff's Current Law)을 이해하고 이를 이용하여 해를 구할 수 있었다. 

 

 

- Graph without a loop: TREE

 

A transpose의 column space인 row space를 한 번 살펴보자. 앞서 row space의 차원은 rank=3임을 알았다. 차원, 즉 rank=3이라는 것은 A transpose를 소거하여 row reduced echelon form을 만들었을 때 pivot column이 3개이고 free column이 2개라는 소리다. 그렇다면 처음 3개의 col1, col2, col3가 pivot column일까? 그렇지않다. 왜냐하면 col1+col2=col3이기 때문이다. 즉 처음 세 개의 column은 독립(independent)이 아니다. 이들은 loop(col1=edge1, col2=edge2, col3=edge3)에서 왔기 때문이다. 따라서 pivot column은 col1, col2, col4이다

 

 

 

 

서로 독립(independent)인 이들 pivot column에 해당되는 edge들만 초록색 line으로 굵게 표시하였다. 독립인 column에 대한 edge들만 연결하니 원래 있던 loop가 없어졌다. 이렇게 loop가 없는 형태의 그래프를 우리는 TREE라 한다. 원래 그래프가 가지고 있던 모든 종속(dependency)성질은 loop로부터 왔다. 그러나 loop가 없어졌기 때문에 독립인 그래프인 TREE가 된 것이다.

 

 

 

3. 마치며

 

모든 그래프들에 대해서 node와 edge, 그리고 loop의 관계에 대해서 하나의 식으로 정리하자면 다음과 같다. 

 

 

어떤 그래프에서 loop의 개수는 edge의 개수에서 node의 개수-1과 같다. 여기서 nodes-1은 rank를 의미하는데, 그래프의 Incidence matrix에서 항상 rank=n-1이기 때문이다. n은 column의 개수이고 1개의 column은 종속이므로 1을 빼주면 rank(=dimension)가 된다. 

edge의 수는 Incidence matrix에서 row의 수와 같다. 즉 #edge=m이다. 결국 이 식이 의미하는 것은 어떤 그래프에서 독립적인 loop의 개수는 그래프의 Incidence matrix의 left null space와 같다. 사실 이 공식을 약간 다르게 쓰면 오일러의 공식(Euler's Formula)이 된다. 

 

 

이 오일러의 공식은 어떠한 그래프에도 적용되는 위상기하학(topology)의 하나의 사실이다이다. 우리가 예를 들었던 그래프에 적용하여 확인해보면 4-5+2=1임을 확인할 수 있다. 어떠한 그래프를 그려서 확인해도 마찬가지이다. 이는 그래프의 node와 edge, 그리고 loop에 대한 관계를 이해함에 있어 유용하게 사용될 수 있는 공식이다. 

 

 

마지막으로 위에서 살펴봤던 그래프 모델과 선형대수의 부분 공간과의 관계도에 대한 그림을 다시 보자. 

 

 

 

최초에 각 node에서의 potential을 x로 정의하고 여기에 Incidence Matrix A를 곱해 potential difference를 만들었다. 이것을 e라고 하자. e=Ax

그 다음 potential difference에 C를 곱해 current y와의 관계를 정의했다. y=Ce

마지막으로 A의 transpose를 y에 곱하여 키르히호프의 전류 법칙을 정의했다. 이를 정리하면 아래와 같다. 

 

 

사실 이 과정이 어떤 공식으로 부터 나온 것들은 아니다. 전자 회로를 그래프 모델로 정의한 후 선형 대수 이론을 적용하여 키르히호프 법칙까지 유도해낸 과정이다. 이 과정에서 지난 시간에 배운 네 개의 주요 부분 공간에 대한 이론이 적용되었다. 어떤 실제 문제에 선형 대수 등의 수학 이론을 적용하는 응용 수학의 전반적인 과정이라고 보면 된다. 

 

사실 이 과정에 실제 전자 회로처럼 여러 branch(배터리, 저항 등)들을 추가할 수 있다. 배터리를 추가한다면 위의 과정에서 실제 potential difference가 생겨날 것이고, 마지막에 가서는 키르히호프 법칙에 대해서 0이 아닌 어떤 전류값 f가 우변에 위치할 것이다. 즉

 

 

 

위의 (16)과 (17)에 있는 식을 한 번에 써보자. 

 

 

이것이 어떤 실제 문제에 수학을 적용할 때 사용되는 응용 수학의 기본 공식이다. 마지막 식 (18)이 의미하는 것은 결국 평형방정식(balance equation)에 대한 내용이다. 

 

 

사실 강의에서 대략적인 내용은 이해했지만 마지막 부분을 완벽하게 이해하기는 조금 어렵다. 아무래도 물리학에 대한 공부를 좀 더 하면 이해가 될까 싶은데, 일단 이러한 것이 있다 정도만 알아두도록 하자. 자세한 내용이 궁금하신 분은 아래 링크에서 확인하시면 됩니다. 

Lecture 12 MIT Linear Algebra

 

전자회로에 대한 깊이 있는 이해가 없어서 고생을 많이 했네요 ㅠㅠ 이상으로 포스팅을 마칩니다. 

 

확률과 통계(Probability & Statistics) 카테고리를 새로 만들었다. 


확률과 통계는 하나의 학문으로 자리잡아 우리 사회 전반적으로 굉장히 널리 사용되고 있다. 경제, 사회, 과학, 공학 등 다양한 분야에서 굉장히 중요한 역할을 하고 있는 도구(tool)이다. 


확률(probability)은 주어진 표본 공간(sample space)에서 발생할 수 있는 사건(Event)들 중 각 사건이 일어날 가능성을 추정(estimation)하는 것이다. 불확실한 미래에 발생할 사건을 예측(prediction)하기 위한 방법론, 혹은 도구이다. 


통계(Statistics)는 수집된 표본 데이터(sample data)들을 기반으로 전체 데이터집합(population)의 분포(distribution)를 추정(estimation)하는 것이다. 


확률과 통계는 서로 밀접한 연관을 맺고 있으며 이 둘을 분리해서 생각하기는 어렵다. 확률은 통계 데이터를 기반으로 사건의 확률을 추정하고, 통계는 확률데이터를 기반으로 통계적 분석 및 추론을 한다. 확률과 통계는 상호보완적인 관계를 맺고 있다. 이들의 관계를 그림으로 나타내면 아래와 같다. 





확률과 통계의 공통의 목적은 불확실한 미래의 일을 예측하는데에 있다. 이는 어쩌면 불확실한 미래를 예측하여 생존 확률을 높이려는 인류의 생존 본능과 맞물려 발전했는지도 모른다. 


우리는 알게 모르게 우리 생활속에서 확률 및 통계적인 사고를 한다. 가령 우리는 금요일 저녁에 서울행 버스표를 미리 예약해야 한다는 판단을 한다. 이러한 판단은 그간 금요일 저녁 당일에 버스 예매에 실패했거나, 주변 사람들이 대부분 금요일 저녁에 서울로 올라간다는 우리 나름대로의 통계적 분석에 근거하여 금요일 저녁에는 서울행 버스표가 빠르게 소진될 확률이 높다는 추론을 하는 것이다. 

사실 금요일 저녁에 서울행 버스표가 실제로 빠르게 매진될지는 모르는 일이다. 다만 우리는 그간의 경험 및 지식을 머리속에서 통계적으로 정리하여 확률론적 추론을 하는 데에 사용하는 것이다. 이렇듯 확률과 통계는 우리의 사고 과정과도 밀접한 연관이 있다. (사람 머리속에서 나온 이론들이니 어쩌면 당연할 수도..)


어쨋든 앞으로 본 카테고리에서는 확률과 통계에 관련된 기초적인 내용들을 정리할 계획이다. 사회의 다양한 분야에서 사용된다고 위에서 언급했지만, 본 블로그와 밀접한 연관이 있는 공학쪽과 연관지어 설명해보면 영상처리(Image processing), 머신러닝(Machine Learning), 로봇공학(Robotics)등에서 훌륭한 도구로 사용되고 있으며 좋은 결과들도 많이 보인다. 최근 엄청난 이슈가 되고 있는 딥러닝(Deep learning)도 그 기저에는 확률과 통계가 깔려있다.(사실 이 외에도 선형대수, 미적분학 등의 기본 수학이론이 기반이 된다). 그만큼 고등 학문을 제대로 이해하고 배우기 위해서는 기초 학문의 제대로된 이해가 필수적이다. 


지금 당장은 확률과 통계가 이들 학문에 어떻게 이용될지 잘 떠오르지 않을 수도 있지만, 우선 기본적인 내용들을 공부한 후에 차차 활용 방안에 대해 배워보도록 하자. 


지난 강의(Lecture 8, and etc...)에서 우리는 Rank에 대해서 배웠다. Rank라는 것은 어떤 행렬을 소거했을 때 만들어지는 pivot의 개수를 의미하며, 행렬이 표현할 수 있는 차원(dimension)을 의미하기도 한다. 또한 rank는 m by n 크기의 행렬에서 반드시 m보다 작거나 같고, n보다 작거나 같다. Rank는 행렬을 설명하는데에 있어서 굉장히 중요한 숫자이다. 

 

이번 강의에서는 이러한 rank와 관려하여 rank가 1인 행렬에대해 공부해보도록 하겠다. 

 

 

1. Rank 1 행렬(rank 1 matrices)

 

Rank가 1인 행렬을 하나 예를 들어보자. 아래의 행렬 A는 rank가 1인 행렬이다. 

 

 

row1이 [1 4 5]이고, row2가 row1의 두 배인 [2 8 10]이다. 이렇게 되면 row1과 row2는 서로 종속(dependent)이며 같은 선상에 위치한다. col1, col2, col3도 마찬가지이다. col2와 col3는 col1에 상수 4, 5를 곱한 것과 같기 때문에 col1과 일직선상에 위치해있다. 따라서 rank 1인 행렬이 표현할 수 있는 공간은 1차원이며 직선이다. (이전에 배운 내용을 토대로 직접 row echelon form을 만들어보자)

 

A의 row space의 기저(basis)는 무엇일까? 오직 row1이다. column space의 기저 역시 col1이다. 따라서 A의 row space와 column space의 차원(dimension)은 1로 같다. 

 

 

 

여기서 재밌는 사실 한 가지를 배워보자. 식 (2)에서 A의 column space와 row space의 기저를 각각 나열하였다. 이 기저들의 곱으로 원래의 rank 1 행렬 A를 만들어낼 수 있다. 아래 식은 굉장히 중요하다. 잘 살펴 보자. 

 

 

column space의 기저와 row space의 기저 순으로 곱하였더니 원래의 rank 1행렬 A가 만들어졌다. 여기서 중요한 포인트는 어떤 column vector와 어떤 row vector를 column x row순으로 곱하면 반드시 rank 1행렬 A가 만들어진다는 것이다. 

 

식 (3)에서 u는 column vector 이고 v도 역시 column vector이지만 전치(transpose)를 시켜서 row vector로 만든 것이다. 이것이 rank 1행렬의 큰 그림이다. 이후에 행렬식(determinant)이나 고유값(eigenvalue)등도 알아보겠지만, rank 1행렬은 벽돌 건물로 치자면 집짓기블록(building block)과 같은 것이다. 즉 모든 행렬에 있어서 가장 작은 기본 단위의 요소와 같다는 것이다. 빌딩 블록이란 말을 들으니 왠지 이러한 생각을 할 수도 있겠다. 

 

만약 어떤 임의의 크기의 행렬, 예를 들면 5 x 14크기의 행렬을 얻었다고 했을 때, 이 행렬의 rank가 4라면 4개의 rank 1 행렬의 조합으로 이를 표현할 수 있다. 즉 원래의 행렬을 5 x 14크기의 A라고 했을 때, A의 rank는 4이기 때문에 5 x 14크기의 rank 1행렬 4개의 조합으로 A를 표현할 수 있는 것이다. 이렇게 원래의 행렬을 rank 1행렬들로 분해하여 표현할 수 있기때문에 rank 1행렬들을 building block이라 표현하는 것이다. 

 

 

 

 

2. Rank 1행렬에 대한 부분 공간(subspaces for rank 1 matrices)

 

Section 1에서 예를 들었던 5 x 14크기의 행렬 A를 다시 생각해보자. 이번에 살펴볼것은 이 행렬 A의 부분 공간이다. 5 x 14크기의 rank 4인 행렬 A는 부분 공간을 가지는가? 5 x 14크기의 모든 행렬을 M이라고 가정해보자. 

 

 

전체집합 M중에서 rank가 4인 행렬들을 생각해봤을 때, 이들은 M의 부분 집합일까? 정답은 부분 공간이 아니다

M과 같은 크기(5 x 14)를 가지며 rank가 4인 행렬들을 더했을 때, 이들은 rank가 4가 안될 수 있다. 부분 공간이 되려면 스칼라곱(scalar multiplication)과 행렬 끼리의 덧셈 연산에 닫혀있어야(closed) 하며 영벡터를 포함해야한다

 

이 말은 어떤 rank 4 행렬 U와 또 다른 rank 4행렬 K를 선형 조합(Linear combination)연산을 했을 때 그 결과가 같은 공간에 있지 않을 수 있다는 말이다. 예를 한 번 들어보자. 아래의 3x3 크기의 행렬 A와 B를 보자. 

 

 

A와 B행렬의 rank는 각각 2다. 그러나 A+B의 rank는 3이 되어 원래의 rank2의 차원에서 벗어나게 되는 것이다. 3x3행렬로 예를 들었지만 5x14크기의 행렬도 마찬가지이다. 따라서 부분 공간이 아니다. 

 

 

- In R4 cases:

 

4차원 공간인 R4의 경우를 생각해보자. R4 공간상의 모든 벡터는 아래와 같이 4개의 component를 가지는 벡터로 표현할 수 있다. 

 

 

이때 R4의 부분 공간을 식(7)과 연관지어 다음과 같이 정의해보자.

 

 

식 (8)의 S는 R4의 부분 공간이다. 스칼라곱(scalar multiplication)과 덧셈 연산(addition)에 닫혀(closed)있기 때문이다. 즉 벡터 v에 어떤 상수를 곱해도 0이 되고, 혹은 같은 공간에 존재하는 vw에 임의의 상수를 곱하여 더해도 여전히 같은 공간에 존재한다. 잘 이해가 가지 않을 수도 있는데, 다시 말하면 이때의 v는 어떤 행렬 A의 null space이다. 처음부터 R4의 예를 들었지만 시각적으로 보여주기 편하게 하기 위해 같은 내용을 일단 R2의 경우로 예를 들어보자.

 

 

식 (9)는 2차원 공간인 R2에서의 예를 든 것이다. v, w, z의 각 벡터의 원소들의 합은 0이다. 이들을 좌표평면위에 표현한다면 어떤 그림이 나올까? 아래와 같을 것이다. 

 

 

 

R2의 경우에서 각 벡터들의 원소들의 합이 0인 경우를 그래프로 표현한 것이다. v, w, z의 벡터들이 하나의 라인을 형성하는 것을 볼 수 있다. 이 벡터들이 이와 같이 하나의 라인을 형성하는 것은 이들이 행렬 A=[1 1]의 null space이기 때문이다. 즉 위 그림의 v, w, z는 A=[1 1]행렬의 null space의 해(solution)인 것이다. 이때의 A는 rank 1인 행렬이고 따라서 1차원 행렬이다. 주요 부분공간에 대한 차원과 기저(basis)는 다음과 같다. 

 

차원(dimension) in R2

  • row space:      r=1
  • null space:      n-r = 2-1 = 1
  • column space: r=1
  • left null space: m-r = 1-1 = 0
 

기저(basis) in R2

  • row space:      [1 1]
  • null space:      [1 -1], [-1 1], ...
  • column space: R1
  • left null space: [0], empty

 

위의 R2의 경우를 잘 이해한 뒤 다시 R4의 경우를 보자. R4의 경우도 마찬가지다. 식 (7)과 (8)에서 얘기하는 벡터들은 R4에서 어떤 행렬 A의 null space이고 그 A는 아래와 같다. R2의 경우와 유사하다. 

 

 

이를 통해 우리는 R2에서와 같이 R4에서의 rank 1인 행렬과 Ax=0의 null space를 연결시킬 수 있다. R4일때의 차원은 rank와 밀접한 관련이 있다. row space와 column space는 rank의 수인 1과 같고, null space와 left null space의 경우엔 각각 n-r, m-r과 같다. (※lecture 10참고)

 

기저는 어떨까? 일단 row space의 기저는 첫 번째 row인 [1 1 1 1]그대로이다. 이제 null space의 기저를 알아보자. 무수히 많은 null space에 대한 기저가 존재하겠지만 lecture 7에서 다뤘던 special solution을 구할 수 있다. 간단히 말하자면 행렬의 소거 과정에서 드러나는 free variable을 각각 1과 0으로 설정해가며 나머지 해를 구하는 방법이다. (자세한 사항은 lecture 7참고). R4에서 null space의 special solution은 아래와 같다. 

 

 

식 (11)에서 pivot을 제외한 나머지 column의 component들이 free variable이다. 이 free variable들을 하나씩 1로 설정하고 나머지 component들을 0으로 설정한 뒤, Ax=0에 대해서 풀면 null space의 special solution을 구할 수 있다. 

 

column space의 기저는 어떨까? 그저 R1이다. [1] [1] [1] [1]의 선형 조합으로 정의되는데, 어떤 상수들을 곱하고 이들을 더해도 단지 상수값이 나올뿐이다. 즉 c1[1]+c2[1]+c3[1]+c4[1]=c 결국 R1의 값으로 정의할 수 있다. 

마지막으로 Left null space의 경우엔 어떨까? A의 전치 행렬에 대한 null space이므로 그 형태는 아래와 같을 것이다. 

 

 

 

위의 식 (12)를 만족시키는 x는 0밖에 없다. 따라서 Left null space는 0밖에 존재하지않는 0차원의 공간이다. 지금까지의 내용을 정리해보면 아래와 같다. 

 

 

차원(dimension) in R4

  • row space:      r=1
  • null space:      n-r = 4-1 = 3
  • column space: r=1
  • left null space: m-r = 1-1 = 0
 

기저(basis) in R4

  • row space:      [1 1 1 1]
  • null space:      [-1 1 0 0], [-1 0 1 0], [-1 0 0 1]...
  • column space: R1
  • left null space: [0], empty

 

결론적으로 R4에서의 주요 부분공간들의 차원을 살펴보면 row space의 차원은 rank 인 1이고 null space의 차원은 column의 수 n에서 rank를 뺀 n-r=3이 된다. 따라서 row space와 null space의 차원의 합은 1+3=4이다. 

 

column space의 차원도 역시 rank인 1이고, left null space의 경우엔 row의 수 m에서 rank를 뺀 m-r=1-1=0이다. 따라서 column space와 left null space의 차원의 합은 1+0=1이다. 이렇게 부분 공간의 각 차원들은 결과적으로 원래의 행렬 A의 차원을 나타낸다. 

 

 

 

 

3. 마치며

 

이번 포스팅에서는 Rank 1행렬과 이와 관련된 부분 공간들에 대해서 알아보았다. Rank 1은 모든 행렬들의 기본적인 행렬 단위가 되는, 즉 building block이라 할 수 있으며 이후 행렬식(determinant), 고유값(eigenvalue)등을 배울 때 이해해야 하는 부분이다. 또한 중요한 사실 중 하나인 column x row를 할 경우 항상 rank 1행렬이 만들어진다는 것을 배웠다. 

 

우리는 또한 Rank 1행렬에 대한 부분 공간들에 대해서 공부하였다. Rank 1행렬에 대한 각 부분 공간들인 row space, column space, null space, left null space들에 대하여 알아보고 각 공간들에 대한 차원과 기저에 대해서도 알아보았다. 또한 이들의 차원이 원래의 행렬 A의 크기와 어떠한 관계를 갖는가를 알아보았다. 

 

이번 강의에선 새로운 벡터 공간인 행렬 공간(Matrix spaces)에 대해 배워보도록 하겠다. 

 

 

1. 행렬 공간(Matrix spaces)

 

이번 강의에서 배울 행렬 공간(Matrix spaces)은 어떤 의미에선 새로운 벡터 공간(vector space)이라고 할 수 있다. 여기서 말하는 행렬 공간이라고 하는 것은 3x3크기의 모든 정방행렬(square matrix)을 의미한다. 이를 M이라 칭하자.

 

 

그런데 한 가지 이상한 생각이 들 것이다. 분명 행렬 공간이라고 했는데, 이것을 왜 벡터 공간이라고 하는가? 행렬과 벡터는 엄연히 다른데도 말이다. 

이들은 벡터 공간(vector space)이라고 할 수 있는 이유는 벡터공간에 대한 조건을 만족하기 때문이다. 이 행렬들 끼리 선형 결합(Linear combination)을 해도 같은 공간에 위치한다. 즉 행렬 M1, M2가 있다고 가정했을 때, 임의의 스케일(scale) 상수 c1, c2를 각각 곱하여 그들끼리 더해도 그 결과 행렬은 여전히 원래의 M과 같은 차원의 공간에 위치하게 된다. 

 

 

 

만약 M1과 M2를 곱한다면 어떻게 될까? 여전히 같은 행렬 공간에 위치하게 될까? 행렬끼리 곱하게 되면 공간은 달라진다. 따라서 아래와 같이 행렬끼리의 곱셈은 다른 공간을 만들게 된다. 

 

 

 

그런데 행렬끼리 선형 결합(Linear combination)이라는 연산을 했을 때 여전히 같은 공간에 위치하는 것은 어찌보면 당연하다. 이는 역 연산이 가능한 것이기 때문이다. 임의의 상수를 곱하고 다른 행렬과 덧셈 연산을 한 것은 반대로 그 행렬을 빼고 곱한 상수만큼 나눠주면 간단히 원래의 행렬로 돌아올 수 있기 때문이다. 벡터의 선형 결합 연산과 지난 강의에서 이를 시각화 한 것들을 살펴본다면 머리속으로 쉽게 그릴 수 있을 것이다. 따라서 식 (2)와 같이 선형 결합을 했을 때 그 결과는 여전히 원래의 행렬과 같은 차원에 위치하게 된다. 

 

 

 

2. 행렬 공간의 기저(basis)와 차원(dimension) 그리고 부분 공간(subspace)

 

3x3크기의 행렬 M은 마찬가지로 부분 공간(subspace)을 가진다. M의 부분 공간은 아래와 같은 행렬들을 가질 수 있다. 

 

 

3x3행렬의 부분 공간들

  • 3x3 대칭 행렬(Symmetric Matrix)
  • 3x3 상삼각행렬(Upper triangular Matrix)
  • 3x3 대각 행렬(Diagonal Matrix)

 

여기서 우리가 알고싶은 것은 위의 부분 공간 행렬들의 기저(basis)는 어떤 것인지, 차원(dimension)은 무엇 인지, 또한 원래의 행렬 M의 차원은 무엇인지 등이다. 하나씩 알아보자. 

 

 

- Basis of M:

 

우리는 3x3크기의 모든 행렬을 M으로 표현하기로 했다. 이들의 기저(basis)는 무엇일까? 먼저 기저에 대한 정의를 다시 한번 알아보자. 

 

  1. 기저 벡터들은 선형 독립(Linearly independent)이어야 한다. 
  2. 기저 벡터들의 조합을 통해 해당 공간내에 어떠한 벡터라도 만들 수 있어야 한다. 

 

기저를 알기 위해선 먼저 차원을 알아야 한다. 이전 강의에서 우리는 차원은 행렬의 rank와 같다고 배웠다. 그러나 rank는 행렬 안의 벡터들이 정의할 수 있는 차원을 의미하는 것이다. 즉 M이 3x3일 때 rank가 3이라면 M의 row나 column vector들 끼리의 조합으로 표현할 수 있는 공간의 차원을 의미하는 것이다. 

그러나 여기서 말하는 행렬 공간의 차원은 이와는 약간 다르다. 3x3크기로 한정된 행렬 M을 하나의 벡터로 간주하고 그 행렬이 표현할 수 있는 공간을 알고자 하는 것이다. 따라서 3x3크기의 M에 대한 차원은 M을 구성하고 있는 원소의 개수가 될 것이다. 그러므로 M의 차원은 9가 된다

 

M의 차원이 9이므로 M의 기저 역시 9개가 될 것이다. M의 기저는 아래와 같다. 

 

 

총 9개의 기저 행렬이 식 (4)에 나와있다. 특히 이렇게 1과 0으로만 구성된 기저를 Standard basis라 한다. 위의 기저 벡터의 선형 조합을 통해 우리는 3x3크기 행렬의 어떠한 형태라도 만들 수 있다. 결국 행렬 M은 실질적으로 9차원의 공간이라고 할 수 있다. 9차원의 숫자들을 column vector 대신 행렬로 표현했다고 생각하면 편할 것 같다. 

 

 

- Symmetric matrix as a subspace of M:

 

대칭 행렬(Symmetric matrix)은 M의 부분 공간이며 Symmetric의 앞 글자를 따서 S라고 하자. 아래와 같이 대각선 원소들을 기준으로 아래와 위의 원소들이 같은 값을 가지는 형태를 띈다. 

 

 

우리는 앞서 (4)와 같이 모든 3x3행렬에 대한 기저를 나열했었다. 그렇다면 과연 대칭 행렬 S에 M의 standard basis중 몇 개가 포함될까? 정답은 3개이다. 3개의 대각 행렬에 대한 요소들, 즉 식 (4)에서 M1, M5, M9의 기저 행렬들이 S의 basis에 포함된다. 그렇다면 나머지 기저 행렬들은 어떤 것이 있을까? 아래의 식 (6)은 대칭 행렬의 기저들을 나열한 것이다. 

 

 

식 (5)에서 b, c, e는 각각 같은 값을 가지고 있기 때문에 S4, S5, S6과 같은 기저가 존재한다. 기저가 6개라는 말은 결국 대칭행렬 S의 차원은 6이라는 뜻이다. 위의 기저들의 조합을 통해 대칭 행렬 공간에 존재하는 어떠한 행렬도 만들 수 있다. 

 

 

- Upper triangular matrix as a subspace of M:

 

상삼각행렬(Upper triangular matrix)역시 M의 부분 공간이며 Upper의 앞 글자를 따서 U라고 하자. 아래와 같이 대각 원소들을 기준으로 위쪽에만 원소들이 존재하는 형태를 띈다. 

 

 

식 (4)의 원래 M의 기저들 중 어떤 것들이 U의 기저에 포함될까? 간단하다. 아래와 같이 각 원소에 대응되는 기저들만 나열하면 된다. 식 (4)에의 M1, M2, M3, M5, M6, M9들이 U의 기저에 포함된다. 

 

 

마찬가지로 6개의 기저를 가지고 있다는 것은 상삼각행렬의 차원이 6임을 의미한다. 식 (7)의 기저들의 조합을 통해 상삼각행렬 공간에 존재하는 어떠한 행렬도 만들 수 있다. 

 

 

- Diagonal matrix as a subspace of M:

 

마지막으로 살펴볼 M의 부분 공간(subspace)은 대각 행렬(Diagonal matrix)이다. 대각 행렬은 위에서 살펴봤던 두 개의 부분 공간 행렬들로 정의할 수 있다. 즉 이들의 교집합을 보는 것이다. 이들의 교집합은 결국 아래와 같이 대각행렬의 원소인 a, d, f만 남게 된다. 

 

 

대각행렬은 3개의 원소만 있기 때문에 차원이 3이다

 

대각행렬은 대칭 행렬 S와 상삼각행렬 U의 교집합(Intersection), 즉 S에도 있고 U에도 있는 원소들로 정의할 수 있었다. 그렇다면 합집합(Union)은 어떨까? S에 있거나 혹은 U에 있는 원소들로 정의하는 합집합 말이다. 

 

 

위의 식 (10)과 같이 두 행렬(혹은 벡터)의 합집합은 성립이 될까? 정답은 성립이 되지 않는다. 이는 9차원의 공간에 존재하는 6차원의 Line(column이 아닌 row vector로 간주)으로 생각해 볼 수 있는데, 이 둘은 다른 방향으로 존재한다. 따라서 애초에 이 둘을 함께 놓을 수가 없다. 따라서 이 합집합은 부분 공간이 아니다. 

 

그렇다면 S와 U를 이용하여 부분 공간을 정의하려면 어떻게 해야할까? 둘을 더하면 된다. 

 

 

식 (11)은 S와 U의 조합이다. 즉 S의 원소들과 U의 원소들을 더하여 조합을 한 것이다. 이렇게 대칭행렬과 상삼각행렬의 조합을 통해 모든 3x3 크기의 모든 행렬 M을 만들 수 있다. 따라서 두 행렬의 조합은 M의 부분 공간이 되며 S와 U의 조합의 차원은 9가 된다

 

3x3크기의 행렬 M에 대한 부분 공간(subspace)을 차원(Dimension)의 측면에서 정리해보면 다음과 같다. 

  • dim(S) = 6
  • dim(U) = 6
  • dim(S  U) = 3
  • dim(S + U) = 9
  • dim(S)+dim(U) = dim(S  U) + dim(S + U)

대칭 행렬의 차원은 6, 상삼각행렬의 차원은 6이다. S와 U의 교집합, 즉 대각 행렬의 차원은 3이고 S와 U의 조합에 대한 차원은 9다. 여기서 대칭 행렬S와 상삼각행렬 U의 차원의 합은 6+6=12이다. 그런데 S와 U의 교집합인 대각행렬과 S와 U의 조합 행렬에 대한 차원의 합도 역시 3+9=12로 같다. 이것이 의미하는 것이 무엇일까? 바로 지금까지 했던 부분 공간을 가지고 정의하는 차원이나 기저 등에 대한 연산이 자연스럽다는 증거이다. 

 

 

 

 

3. 벡터 공간의 예시(선형대수와 미분방정식의 관계)

 

벡터 공간(행렬 공간)에 대한 예를 한 가지 더 들어볼까 한다. 벡터 공간이지만 벡터를 가지지 않는 형태인데, 미분방정식(Differential Equation)에 관한 내용이다. 아래의 미분방정식을 보자. 

 

 

식 (12)의 미분방정식의 해는 다음과 같은 것들이 될 수 있다. 

 

 

 

해를 대입하여 풀어보면.. 

 

 

식 (13)은 식 (12)의 해 공간(solution space)를 나타낸다. 이는 다시말하면 식 (13)의 해들은 식 (12)의 미분방정식(Differential equation)의 영공간(Null space)을 나타내는 것이다. 식 (13)의 각 해들(cos, sin, e, ...)은 null space의 각각의 해에 해당한다.  

 

그렇다면 위의 미분방정식의 null space의 완전해(complete solution)은 어떻게 정의할 수 있을까? e는 잠시 잊어두고 sin과 cos만 가지고 아래와 같이 완전해를 정의할 수 있다. 

 

 

식 (15)를 우리는 벡터 공간(vector space)이라고 할 수 있다. 이를 벡터공간이라고 할 수 있는 이유는 미분방정식 (12)의 해에 대한 solution space를 cos과 sin에 각각 상수를 곱하고 더한 선형 결합(Linear combination)으로 표현할 수 있기 때문이다. 여기서 cos과 sin은 기저(basis)이다. 식 (15)의 cos과 sin의 선형 조합은 미분방정식 (12)의 해공간(solution space)인 null space를 형성(span)하며 이들은 독립(independent)이다. 

 

결과적으로 우리는 미분방정식 (12)를 Ax=0의 식으로 볼 수 있으며, 식 (15)를 null space를 정의하기위한 special solution이라고 할 수 있다. Special solution은 두 개이다. 따라서 차원(dimension)도 역시 2이다. 사실 차원이 2일 수밖에 없는 이유는 미분방정식이 2차(second order)이기 때문이다. 

그렇다면 기저는 이들 뿐일까? 

 

$e^{ix}$, $e^{-ix}$ 도 기저가 될 수 있다. 기저는 무수히 많이 존재한다. 여기서 우리는 선형미분방정식(Linear differential equation)과 선형대수(Linear algebra)사이의 연결점을 찾을 수 있다. 

 



※ 선형미분방정식(Linear differential equation)을 푼다는 것은 방정식의 해공간(solution space)에 대한 기저(basis)를 찾는 것이다. 


한 가지 중요한 것은 미분방정식의 sin, cos과 같은 기저들을 벡터라고 부를 수 있다는 것이다. 이것이 가능한 것은 이 기저들 각각에 상수를 곱하고 더한 선형 조합(Linear combination)이 가능하기 때문이다. 


결국 선형 대수(Linear algebra)의 기저(basis), 차원(dimension), span 등과 같은 개념들이 m by n 행렬들에서 쓰이는 것 보다 더 넓은 역할을 하는 것이다. 

 

 

 

4. 마치며

 

이번 포스팅에선 3x3 크기의 행렬 공간에 대해 알아보고 이들의 부분 공간에 대해 알아보았다. 또한 각 행렬 공간 및 부분 공간들의 기저와 차원에 대해서 알아보았다. 이러한 행렬 공간과 기저, 차원 등에 대한 개념들을 미분방정식과 연결시켜 보다 폭넓은 이해를 할 수 있었다. 이어지는 다음 포스팅에서는 Rank 1행렬에 대해 알아보도록 하자. 

 

+ Recent posts