"alalal" 라는 문자열은 규칙을 의미한다 할때,
프로그램 상에서 다음과 같은 함수가 있다 하자, 편의상 이 함수를 A함수라 한다.
function is_Rule:
if(str.equals("alalal"))
return true
else
return false
여기서 분기 로직은 입력받은 문자가 규칙을 의미할때 처리하는 로직이라 할 수 있을것이다.
그런데 이러한 로직의 처리가 가능한 이유는 "alalal" 이 규칙을 의미한다 할 때
첫째로 사용자가 이러한 "alalal" 의 의미를 알아야하고,
둘째로 이러한 "alalal" 의 규칙을 합의해야할 것이다.
그러나 프로그램에서 소수를 판별하는 함수 (편의상 이를 B함수라 지칭한다.)
function is_decimal(x):
# 2부터 (x - 1)까지의 모든 수를 확인하며
for i in range(2, x):
# x가 해당 수로 나누어떨어진다면
if x % i == 0:
return False # 소수 아님
return True
가 있다 하였을 때,
이러한 함수 A와 B 에서의 차이점은 무엇으로부터 비롯되는가?
예를들어 우리는 "규칙" 이라는 뜻의 문자를 발견하면 "lime" 이라는 문자열을 출력시켜주고 싶다.
따라서 우리는 문자열을 입력시키고 주어진 문자열중에 "alalal" 의 연속된 문자열이 있을 경우
"규칙" 이라는 뜻의 문자를 발견했다 하고 기계는 "lime" 이라는 문자열을 출력해줄것이다.
그런데 이때 이러한 A(입력받은 문자열) 함수는 "규칙" 이라는 문자를 발견하는 "알고리즘" 이라고 할 수 있는가?
B(입력받은 수) 의 경우 입력받은 수가 "소수" 이면 유한시간 안에 연산을 끝낼 수 있는 가능한 독립변수들만을 다룬다 하였을 때 B는 "소수를 찾는" 알고리즘이라 할 수 있을것이다.
B(x) : 소수를 찾는 알고리즘
A(x) : 규칙이라는 문자를 찾는 알고리즘
두 함수 모두 "알고리즘" 이지만 B는 "수학적인" 연산을 통해 답을 도출해냈고,
A는 "어떠한 규칙" 을 통해 답을 도출해낸 듯 하다.
이러한 차이점은 무엇인가?
- A 함수: 특정 문자열("alalal")을 찾는 함수.
- B 함수: 주어진 수가 소수인지 판별하는 함수.
- 차이점:
- 데이터의 특성: A 함수는 문자열(기호)을 다루고, B 함수는 숫자를 다룬다.
- 규칙의 정의: A 함수의 "규칙"은 사람이 임의로 정의한 것이며, 컴퓨터는 이를 단순히 비교하는 작업만 수행한다. 반면, B 함수의 "소수"는 수학적인 정의를 가지고 있으며, 컴퓨터는 이 정의에 따라 계산을 수행한다.
- 알고리즘의 복잡도: A 함수는 단순한 비교 연산만 수행하므로 시간 복잡도가 낮다. B 함수는 모든 가능한 약수를 검사해야 하므로 시간 복잡도가 더 높다.
- 절대적인 진리: B 함수가 판별하는 소수는 수학적인 절대적인 진리에 기반한다. 반면, A 함수가 찾는 "규칙"은 사람이 임의로 정의한 것이므로 상황에 따라 달라질 수 있다.
" 절대적인 진리 "
여기서 짚고갈 점은, "절대성" 과 "상대성"의 개념이다.
정의를 찾아보면 아래와 같다.
절대성: 변하지 않는 진리
- 정의: 어떤 상황이나 조건에 관계없이 항상 참인 것, 즉 변하지 않는 진리입니다.
- 예시:
- 수학적인 공리: 1+1=2
- 자연 법칙: 만유인력의 법칙, 에너지 보존 법칙
- 윤리적 절대 가치: 정의, 진실, 사랑 등
- 특징:
- 객관적이고 보편적이며, 시공간을 초월하여 항상 유효합니다.
- 논리적 추론과 과학적 실험을 통해 증명될 수 있습니다.
상대성: 상황에 따른 변화
- 정의: 어떤 상황이나 관찰자에 따라 다르게 나타나는 현상입니다.
- 예시:
- 물체의 운동: 상대적인 속도, 관성계
- 시간의 흐름: 특수 상대성 이론
- 가치 판단: 문화, 시대, 개인에 따라 다르게 평가되는 가치
- 특징:
- 주관적이고 상대적이며, 관찰자의 시각에 따라 다르게 해석될 수 있습니다.
- 상황의 변화에 따라 달라질 수 있습니다.
즉, "alalal" 이라는 글자는 사람에 따라 "다르게" 해석 될 여지가 있지만,
" 소수 " 라는 존재는 " 모든 " 사람이 공통되게 해석이 된다.
그게 A와 B의 차이다.
그렇다면 과연 정말 수학은 "절대적인 진리" 인가?
만약 수학이 "alalal" 과 같은 "상대성" 을 띈다면 A함수나 B함수나 마찬가지 일것이다.
이는 아주 단순하고 허점 투성이 이겠지만 귀류법을 통해 간단한 증명을 시도해보려 한다.
- 귀류법(歸謬法): 오류로 귀착된다는 것을 보임
내가 증명하고싶은건 P: 수학은 절대적인 진리이다.
따라서 나는
~P: 수학은 절대적인 진리가 아니다.
를 가정하고서 모순을 이끌어내야한다.
그런데 ~P의 의미를 조금은 다르게 표현하고싶다. 이러한 나의 임의대로 바꾼 ~P를 `~P로 쓰고 구분한다.
`~P: 수학은 상대적인 진리이다.
이때 ~P와 `~P는 동치라고 가정하겠다. 이러한 가정은 ~P도 아니고`~P도 아닌 = (~P∪`~P) 어떤 의미를 가진 개념이 존재한다면 나의 이러한 가정은 잘못된게 될것이다..
그렇다면 `~P 와 ~P 가 논리적으로 동치라고 가정할 때,
"소수" 의 상대성을 발견하면 증명은 성공하게 된다.
먼저 "상대성" 을 발견하기 위해서는 어떤 방법이 필요할까?
첫째로, 그것은 "길이" 의 측면에서 상대성을 발견해볼 수 있다.
A는 "크다" 는 사실이 절대적인 진리라면, 어떤것과 비교해도 바뀌지 않아야 한다.
하지만 A는 C보다는 "작다", 이렇듯 "절대성" 을 띄는지 확인하기 위해서는 "상대성" 을 눈치채야한다.
소수의 특징은 1과 자기 자신 만으로 나누어진다는 것이다.
따라서 소수를 1과 자신 이외로 나눌 방법을 찾아야할 것이다.
이때 찾고자 하는 수는 자연수에 국한된다.(유리수일 경우 답은 의외로 금방나온다 3 ÷ 1.5 = 2 이기 때문이다.)
나는 이러한 소수의 상대성을 발견하기 위해서 고대의 수학자료들을 뒤져가면서 모든 문명에서 공통적으로 "소수" 를 인식하는지 찾아봤다.
-2024-10-08- 작성중
좀 더 깊이 들어가서
- 데이터의 종류:
- 숫자: 수학적인 연산이 가능하고, 크기 비교, 순서 등을 정의할 수 있습니다.
- 문자: 의미를 나타내는 기호이며, 사전적인 정의나 문맥에 따라 다양한 의미를 가질 수 있습니다.
- 알고리즘의 종류:
- 탐색 알고리즘: A 함수처럼 특정 값을 찾는 알고리즘
- 수학적 알고리즘: B 함수처럼 수학적인 계산을 수행하는 알고리즘
- 논리적 알고리즘: 조건문, 반복문 등을 사용하여 문제를 해결하는 알고리즘
- 알고리즘의 효율성:
- 시간 복잡도: 알고리즘이 문제를 해결하는 데 걸리는 시간
- 공간 복잡도: 알고리즘이 사용하는 메모리 공간
"문제 해결을 위한 알고리즘에서 의미가 강해질수록 공간 복잡도는 높아지고 시간 복잡도는 낮아지나?"
의미란 무엇인가?
- 데이터의 의미: 데이터에 부여된 해석, 즉 데이터가 나타내는 대상이나 개념입니다. 예를 들어, 숫자 '2'는 단순한 숫자일 수도 있고, 두 개의 사과를 나타낼 수도 있습니다.
- 알고리즘의 의미: 알고리즘이 수행하는 작업의 목적이나 의도입니다. 예를 들어, 정렬 알고리즘은 데이터를 순서대로 나열하는 것이라는 의미를 가지고 있습니다.
질문에 대한 일반적인 답변:
- 의미가 강해질수록 공간 복잡도는 높아진다: 일반적으로 맞습니다. 의미를 부여하기 위해서는 더 많은 정보를 저장해야 하므로, 공간 복잡도가 증가할 가능성이 높습니다. 예를 들어, 자연어 처리에서 단어의 의미를 벡터로 표현하는 경우, 각 단어에 대한 많은 차원의 벡터가 필요하므로 공간 복잡도가 증가합니다.
- 의미가 강해질수록 시간 복잡도는 낮아진다: 반드시 그렇다고 할 수 없습니다. 의미를 부여하기 위해 복잡한 연산을 수행해야 할 경우 시간 복잡도가 증가할 수도 있습니다. 예를 들어, 딥러닝 모델을 사용하여 이미지를 인식하는 경우, 모델 학습에 많은 시간이 소요됩니다.
결론
A 함수와 B 함수의 가장 큰 차이점은 데이터의 특성과 규칙의 정의 방식에 있습니다.
B 함수는 수학적인 정의에 기반한 객관적인 판단을 내리는 반면, A 함수는 사람이 임의로 정의한 규칙에 따라 주관적인 판단을 내립니다.
A 함수를 "알고리즘"이라고 부를 수 있지만, 그것은 매우 단순한 형태의 알고리즘이며, B 함수처럼 수학적인 기반을 가지고 있는 알고리즘과는 차이가 있습니다.