비슷하다 또는 유사하다는 어떻게 수학적으로 잘 정의할 수 있을까?
1. 예시를 통해 알아보기
3과 4는 비슷한가? 대충 비슷하다고 할 수도 있지만 아니라고 할 수도 있다. 3분 공부한 것과 4분 공부한 것은 차이가 거의 나지 않는다고 하지만 일당 3만 원과 일당 4만 원은 꽤 큰 차이이다.
10000과 10001은 비슷한가? 대부분의 경우에는 비슷하다고 한다. 비슷함을 얘기할 만한 기준은 무엇인가?
또 다른 예로 정삼각형과 50도, 60도, 70도인 삼각형은 비슷한가? 세 각이 59도, 60도 61도인 삼각형과는 비슷한가? 피타고라스 정리는 와일즈 정리와 비슷한가?
2. 문법적인 분석
"비슷하다"는 국어에서 "~과" 또는 명사 단독형 뒤에 사용되는 말인데, 또는 영어로 "similar"은 뒤에 전치사와 목적어가 대부분 따르는 말인데, 즉 수학적으로 객체 둘을 필요로 하는 관계사이다. 어떤 수학적 대상은 단독으로 "비슷할" 수 없고, 다른 어떤 대상을 추가로 필요로 한다. 이항관계사로 나타내는 것이 가장 적절해 보인다. 이하 "A와 B가 비슷하다."를 A#B로 표기하기로 하자.
3. 예시의 실제 분석
세 각이 59도, 60도, 61도인 삼각형과 정삼각형은 비슷하다고 얘기하기 충분하다고 여겨진다. 두 삼각형의 다른 점은 두 각의 크기, 한 변에 대한 두 변의 길이 비가 있고, 같은 점은 한 각의 크기, 각의 수, 변의 수 등이 있다.
피타고라스 정리와 와일즈 정리는 많은 사람들이 비슷하다고 여기는데, 두 정리의 다른 점은 다항식의 차수, 즉 지수가 다르고, 같은 점은 거듭제곱의 합이 거듭제곱과 같은 경우를 이야기한다는 점이다.
두 가지 수학적 객체가 비슷하다고 여겨지는 경우, 많은 속성이 같고, 적은 속성이 다르다. 앞서 얘기한 두 가지 사례에서 볼 때, 삼각형의 경우에는 속성이 연속적이고 다항식의 경우에는 속성이 이산적이라고 할 수 있다. 물론 지수를 연속적이라고 보는 것도 가능하다. 비슷하게, 이산적이라고 생각될만한 비슷한 수학적 객체에는 AND연산과 OR연산이 있는데, 진리값의 심볼을 반대로 해 주는 것으로 서로가 서로를 치환한 형태와 동일하기 때문이고, 두 연산의 모든 데이터는 이산적이다.
또 다른 비슷한 경우로는, 123456789와 133456789가 있다. 값의 크기 차이는 유의미하지만, 문자열로 볼 때 한 문자가 다른 문자로 치환된 결과이므로 비슷하다고 여긴다. 같은 속성은 둘째 자리가 아닌 모든 문자, 다른 속성은 둘째 자리의 문자라고 할 수 있다.
수 자체가 비슷한 경우는 어느 정도 쉽게 얘기할 수 있다.
"어떤 적당한 원소 z에 대해 정의된 공간 X(z) 위에서 공간의 원소 a의 집합 P(a)에 대한 소속함수 m(x)가 다음 조건을 만족시킬 때 [a-e1,a+e2]를 a에 가까운 원소의 집합으로 규정한다."
- m(a) = 1
- |a-t| < |a-p| -> m(t) > m(p)
- m(a-e1) = m(a+e2) = z
말이 잘 정의 안되어 있을 수도 있는데, 대충 쉽게 말해서 X(e)에 소속 정도가 a에 가까워질 수록 커진다면 X(e)의 소속함수 m(x)를 유사도로 생각해서 일정 유사도가 넘는 원소를 비슷하다고 얘기할 수 있다는 것이다.
그러나 이는 적당히 잘 정의된 노름공간을 필요로 한다. 잘 정의된 노름공간이 없는 경우 가까운 원소의 집합을 이야기 하기 어렵다.
4. 형식 언어에서의 비슷함
괴델의 0차원 명제, 괴델수의 아이디어를 차용하자. 형식 언어로 표현될 수 있는 명제 또는 명제로 표현되는 객체는 하나의 문자열에 대응된다. 문자열을 괴델수를 계산하는 것과 동일한 방법으로 각 자리를 소수에 대응하고 각 문자를 자연수에 대응해 하나의 문자열을 하나의 자연수에 대응시킨다. 소인수분해가 자연수에서 유일함을 이용한다. 이때 모든 명제는 다음을 따른다.
"공백 문자를 0에 대응시킨다. 모든 잘 정의된 형식 언어꼴은 0에 대응되는 문자를 갖지 않는다."
다르게 표현하면 0에 대응되는 문자는 없다와 비슷하다. 이렇게 만들어진 수를 유사판정0차원명제라고 하자.
유사판정0차원명제 p,q에 대해 p#q라고 말할 수 있는 것은 다음을 의미한다고 하자.
"p/q의 기약분수꼴의 분모와 분자 곱의 크기가 0과 비슷하다면 p#q이다."
다시 말하면, 두 문자열이 차이나는 문자가 많으면 비슷하지 않다고 정의할만하다는 것이다. 이 정의에서 발생할 수 있는 문제점은 p/q가 7/9처럼 정의되는 경우이다. 문자열에서 문자에 해당하는 수의 격차가 커지면 보기에 덜 비슷한 객체끼리 더 비슷하다고 얘기할 수 있다는 것이다. 하지만 반대로 얘기하면 임의로 원하는 간격으로 문자를 배치하면 원하는 문자끼리 더 비슷하게 여길 수 있다는 것이다. 유사판정0차원명제는 각 자리에 대한 소수가 정해지지 않았으므로 이 또한 마음대로 설정할 수 있다.
특히나 자리값의 경우에는 자체로 문장구조를 형성할 수 있고, 그 문장에 대한 가중치로써 바로 사용할 수도 있다.
예를 들어, 더하기 명제를 살펴보자. 더하기 명제는 다음 문자열에 대응된다 : "A+B=C" 여기서 A, B, C는 임의의 숫자이다. 적당히 k 이하의 자연수에 대해서만 정의하자. 이 문장은 A, '+', B, '=', C의 5개의 문자로 구성되는데, A, B, C에 들어갈만한 문자는 1~k까지의 자연수가 있다. '+', '='은 문장의 핵심 구조이므로 아주 큰 소수를, A, B, C는 덜 핵심 구조이므로 적당히 작은 소수를 대응시킬 수 있다.
이 경우 문장 구조를 [2,1000000007,3,1000000009,5]와 같이 설정하면, '+'나 '='가 달라지는 것이 A, B, C가 달라지는 것보다 크게 다른 문장을 구성한다는 것을 의미한다. 문자 자체도 '1'을 1에, '2'를 2에, ... 'k'를 k에 대응시키고, '+'를 k^100, '='을 k^10000과 같이 아주 큰 간격을 두고 구성한다면 1에서 3으로 변하는 것은 작은 차이, '+'에서 2로 변하는 것은 큰 차이임을 내포하게 할 수 있다.
예를 들어 "1+2=3"#"2+3=5"임은 어느 정도 타당한데, 각각 i,j와 같이 나타날 때 i/j = 1/150이고, 분모와 분자 곱이 150이므로 0과 비슷하다. (여기서 비슷하다의 정의는 적당한 소속함수에 의해 결정되고, 약 5억 이하의 차이이면 비슷하다고 정했다고 가정해도 무방하다.) 하지만 "3=2+1"#"1+2=3"은 제법 타당하지 않은데, 마찬가지로 유리식 꼴로 나타냈을 때 이미 아득히 넘어가는 수치를 보인다. 이와 유사하게 '-'를 k^(100^100)등에 대응시킨다면 뺄셈과 덧셈의 구조는 비슷하지 않다는 것을 적당히 알 수 있다.
5. 결론
"비슷하다"는 용도에 따라 다르게 생각될 수 있는데, 비슷하다의 기준 자체는 적당히 세울 수 있다. 특히 어떤 수와 어떤 수가 비슷하다고 말할 때에는 두 가지 의미가 있는데, 두 수가 비슷한 것도 포함하지만 두 숫자가 비슷한 경우도 대개 포함하기도 한다. 전자의 경우 적당한 포함함수로 설명할 수 있고, 후자의 경우는 다른 객체와 마찬가지로 소인수분해를 이용한 유사판정0차원명제를 이용할 수 있다.
과제하다가 멘탈나가서 헛소리좀 해봄.