그 중 하나가 '역' 이다.

역을 크게 세 가지로 나누는데,

불역, 간역, 변역이지.

아무데나 세가지 분류에는 이걸 마구마구 적용해 이해할 수 있기 땜에 신나는건데,


프로그래밍으로 가져와 본다면,

public 하거나 global 하면 변역이고,

protected 하거나 member 하면 간역이고,

private 하거나 local 하면 불역이다.

여기선 내가 바꾸지 않는 이상 값이 바뀌지 않는다는 의미로 불역을 논한거다. ( non-volatile )

공간확보의 여부로 논한다면 반대의 양상이겠지. ( 정적 메모리를 불역으로 -> 힙을 간역 -> 스택을 변역으로 구별할 수 있음 )


마찬가지로, constexpr / const / variable 도 불역 간역 변역으로 분류할 수 있고,

값 뿐만 아니라 순서의 불변성도 이야기할 수 있겠지.

이를테면 ordered, ordering, unordered 의 개념으로 말이지.


흔히 unordered 라고 말하는 것들 중에 사실은 내부적 순서를 지키고 있는 것들이 많잖아? 알고리즘은 같으니까 말이지.

즉, 우리가 unordered 라고 부르는 상황의 대부분은 given ordered 가 아닐 뿐 own ordered 란 말이지.


그러므로 '간역' 이란것을 두가지 관점으로 볼 수 있다. ( 한자로 간<簡>도 hashing 과 관련된 단어임 )


1. 환원가능하면 ordered 다.

예를들어 random 함수 같은경우 무작위적으로 보이지만, 샘플 몇백개 얻으면 메르센트위스터도 환원가능하잖아.

즉, 여기까지는 특이점을 지나지 않은거지. 다른말로 co-NP 비슷한 문제라 볼 수 있다.

결국 P문제 일 수 있다는거지.


2. 비슷하지만 조금 다른 말인데, 규칙성이 존재하면 ordered 다.

우리가 사람이 작성한 소스코드를 보면 논리적으로 명확하지만,

인공지능이 만들어놓은 테이블을 보면 도대체 어떤 논리를 사용하는지 막연할 수 있겠지.

물론 순차적 학습의 결과일 뿐이고 MCMC 를 쓴다하더라도 reduction ( 혹은 rollback ) 할 수 없다는 보장은 없으니,

이것도 P문제처럼 보이고 불역에 가까워 보일 수 있다.

하지만 밝혀지기 전까지는 불역과 변역의 공존상태인거지.


deterministic 하면 불역이고, non-deterministic 하면 변역이고,

확정적이진 않지만 heuristic 하게 어찌 저찌 가능할 것 같으면 간역으로 보일 수 있다는 것.

다른 말로하면, 결정론( 운명론 )과 자유의지 사이의 어딘가가 간역인거지.


오랜만에 뻘소리하고 감.