본문 바로가기

전체보기96

Greedy Algorithm Design Pattern 1(탐욕 알고리즘) 이번에 알아볼 디자인 패터은 탐욕 알고리즘(GA, Greedy Algorithm)이다. 해당 디자인 패턴은 저번에 알아본 동적 계획법과 마찬가지로 최적화문제(max/min)를 해결하는데 쓰인다. 즉 문제가 최적 부분 구조를 가지고 있어야 한다고 했었다. 이에 대해 다시 짚고 넘어가자면 origin program의 최적해(solution)가 부분 문제의 최적해들로써 구성되어야, 그 문제가 최적 부분 구조를 가졌다고 할 수 있는 것이다. 이전 글의 예시들을 다시 본다면 이해할 수 있을 것이다. 계속하자면, GA의 설계 전략은 최적해를 얻을 때까지 일련의 절차를 따르는데, 이때 현재 단계의 action에 따른 일련의 과거/미래 단계의 action의 잠재적 단점은 고려하지 않는다(\(A_{1} \rightarr.. 2021. 10. 19.
Assemblers (4) 저번 글에서 기계 독립적인 어셈블러의 특징 5개 중 4개를 다뤄봤다. 이제 Control Section이라는 한가지 특징이 남았는데 다른 특징들보다 내용이 많아서 이렇게 따로 다루게 됐다. 이전 특징들에 비해 생각할 부분들이 많을 것 같다. 그리고 뒤에서는 어셈블러의 Design Option에 대해서도 알아보자. Control Section Control Section(CS, 제어 섹션)은 assembly 이후의 프로그램 일부인데, 각각이 정체성을 유지한다. 각 CS는 다른 섹션과 독립적으로 로드되거나 재배치 될 수 있다. 프로그램의 서브루틴이나 기타 논리적 하위 부문에 서로 다른 제어 섹션이 사용된다. 프로그래머는 각 CS를 개별적으로 조립, 로드 및 조작을 할 수 있다. 그 결과 발생하는 유연함은 제.. 2021. 10. 15.
Assemblers (3) 이전에 어셈블러는 기계에 따라 내부의 구현이 달라질 수 있다고 했다. 그럼에도 어셈블러는 기계 아키텍처와 관련되지 않은 독립적인 몇 가지 특징들을 가진다. 이러한 기능의 유무는 기계 아키텍처보다 프로그래머의 편의성 및 SW 환경과 같은 문제와 더 밀접하게 관련되어 있다. 여기서는 이에 대한 5가지 특징들에 대해 살펴보고자 한다. Literal Symbol definitions Expressions Program Blocks Control sections 위와 같은 특징이 적용된 코드를 살펴보자. 프로그램의 내용은 이전과 동일하다. 이제 위에서 언급한 특징들에 대해 자세히 살펴보면서 위의 변화된 점들을 이해해보자. Literals 프로그래머가 상수 operand(피연산자)의 값을 instruction의 일.. 2021. 10. 15.
Assemblers (2) 저번 포스팅에서 SIC 버전의 어셈블러에 대해 알아보았다. 이번에는 SIC/XE 버전 어셈블러에 대해 알아볼건데, 전 포스팅에서 봤던 어셈블리어 프로그램이 SIC/XE 버전에서 어떻게 변하는지 살펴보면서 알아보자. 전에 SIC/XE가 SIC와 어떤 차이점이 있는지도 살펴보았으니 이를 떠올리면서 시작해보자. Machine-dependent Assembler Features 저번에 어셈블러는 instruction format과 addressing mode에 따라 설계나 특징이 달라진다고 한 것이 기억나는지 모르겠다. 어쨌든 이렇게 어셈블러는 기계의존적이기 때문에 어떤 기계를 쓰느냐에 따라 차이를 보인다. 밑에 보여줄 그림은 SIC/XE instruction set을 이용하여 이전에 SIC로 작성했던 어셈블리.. 2021. 10. 14.