🧐 Trace00 EOF(ctrl + d) 입력을 받으면 프로그램을 종료시켜야 합니다. 더보기 main문을 보면 다음과 같이 이미 구현되어 있는 것을 알 수 있습니다. while(1)을 통해 쉘을 계속 실행시키다가 ctrl + d가 입력되면 프로그램을 종료합니다. 🧐 Trace01 quit 명령어를 built-in command로 등록합니다. quit이 입력되면 프로그램이 종료되어야 합니다. 더보기 void eval(char *cmdline) { cahr * argv[MAXARGS]; parseline(cmdline, argv); builtin_cmd(argv); return; } int builtin_cmd(char **argv) { char * cmd = argv[0]; if (!strcmp(cmd,..
지난번 글에 이어서 정규 언어에 대한 판별에 사용될 수 있는 펌핑 보조정리에 대해 알아보도록 하겠습니다. 펌핑 보조정리 (Pumping lemma) 펌핑 보조정리는 비둘기집 원리를 다른 형태로 이용한 것입니다. 이에 대한 증명은 다음 관찰에 기반을 두고 있습니다. n개의 정점을 갖는 전이 그래프에서, 길이가 n 이상인 모든 보행은 어떤 정점이 반복, 즉 사이클을 가져야 한다 펌핑 보조정리는 다음과 같습니다. L을 무한 정규 언어(infinite regular lanuage)라 하면, 다음 성질을 만족하는 양의 정수 m이 존재합니다. 다음을 만족하는 모든 문자열 w에 대하여 $$|w| \geq m, \;\;\;\;\;\; w \in L$$ 문자열 w는 아래의 조건을 만족하도록 분할될 수 있습니다. $$w ..
🧐 기억장치 조합회로는 출력이 단지 현재 들어온 입력에 대해서만 의존적이었습니다. 앞으로 배울 기억장치는 출력이 현재의 입력뿐 아니라 과거의 입력열(sequence)에도 의존적입니다. 즉 과거에 어떤 입력이 들어왔느냐에 따라 동일한 입력에 대해서도 다른 결과가 출력될 수 있습니다. 순서회로는 출력을 발생시키기 위해서 과거 입력에 대하여 기억할 수 있어야 합니다. 기억장치의 종류로는 래치와 플립플롭이 있습니다. 📕 값을 기억하는 것의 의미 회로는 '수'를 이해하지 않습니다. 단지 전류가 흐르느냐, 흐르지 않느냐를 따질 뿐입니다. 마찬가지로 기억장치라 불리는 메모리도 결국 값을 기억하는 것이 아닙니다. 전류의 흐름상태를 유지하는 것, 그것을 기억한다 표현합니다. 🧐 래치와 플립플롭의 차이 (정확한 정의는 아..
2-3 Tree 2-3트리는 검색 트리이지만 BST는 아닙니다. 차수가 3인 노드가 존재할 수 있으므로, Binary가 아니기 때문입니다. 2-3 Tree는 트리의 높이가 균형을 이루며 내부노드의 차수가 2 또는 3인 균형 탐색트리입니다. 2-3 Tree 조건 2-3 Tree에는 Internal Node와 External Node의 개념이 존재합니다. Internal Node(내부노드)는 Key가 들어있는 내부 노드이며, External Node(외부노드)는 데이터가 들어있지 않은 노드로써 Internal Node의 Leaf Node의 자식으로 존재하는 가상의 노드입니다. 2-3 Tree에서 각각의 내부 노드는 2-Node 이거나 3-Node 입니다. 중복된 Key는 허용하지 않습니다. 2-Node는 1..
서론 앞서 배운 유한 오토마타와 푸시다운 오토마타를 비교해보면, 임시 저장장소의 특성이 둘 사이의 차이를 만들어냄을 알 수 있습니다. 만약 저장장소가 없다면 유한 오토마타이며, 저장장소가 스택이라면 유한 오토마타보다 더 강력한 푸시다운 오토마타를 갖게 됩니다. 만약 오토마타에 좀 더 유연한 저장장소를 더해준다면, 더욱 강력한 언어군을 발견할 수 있을 것입니다. 예를 들어 두 개, 세 개의 스택, 큐, 또는 다른 저장 장치를 사용한다면 어떤 결과가 나올까요? 각각의 저장장소는 새로운 종류의 오토마타를 정의하고, 그것을 통하여 새로운 언어군을 정의할 수 있을까요? 이러한 접근은 대부분의 경우 흥미로운 결과를 이끌어내지는 못했습니다. 가장 강력한 오토마타와 계산의 한계에 대하여 무엇을 이야기할 수 있을까요?..