Computer Science 5

Data Structure / Algorithm / Theory of Computation

Data Structure 주어진 추상적인 문제를 어떠한 자료구조를 사용하여 컴퓨터의 구조에 최적화된 형태로 표현할 수 있을까? Algorithm 주어진 추상적인 문제를 어떠한 알고리즘으로 컴퓨터를 사용하여 가장 효율적으로 해결할 수 있을까? Complexity (cf. Efficiency) 과연 컴퓨터가 주어진 문제를 효율적으로 해결할 수 있을까? An algorithm is regarded as efficient or good if there exist a polynomial P(n) such that the time required for solving any instance of size n is bounded above by P(n) Computablity (cf. Finiteness) 과연 컴..

Ch1. Computer Abstractions and Technology

What You Will Learn 어떻게 프로그램이 기계어로 번역되는지 (또한 하드웨어가 어떻게 기계어를 실행하는지) 하드웨어와 소프트웨어의 인터페이스 프로그램의 성능은 어떻게 측정하는지 (또한 어떻게 성능을 향상시킬 수 있는지) 하드웨어 디자이너는 어떻게 성능을 향상시키는지 병렬 처리는 무엇인지 Understanding Performance 알고리즘: 연산의 수를 결정 프로그래밍 언어, 컴파일러, 아키텍처: 연산 당 machine instruction의 개수를 결정 프로세서와 메모리 시스템: instruction의 수행 속도를 결정 I/O 시스템: I/O 연산의 수행 속도를 결정 (일반적으로 I/O 호출은 Appliaction -> (OS) -> HW) Inside the Processor (CPU)..

순열 (Permutation)

1. 순서가 중요한 완전 탐색에 종종 사용된다. 2. 개수가 고정된 선택 문제를 순열로 바꿔서 풀 수 있다. (조합-Combination으로 활용 가능) (BOJ6603 로또 , https://www.acmicpc.net/problem/6603) # std::next_permutation, std::prev_permutation C++은 std::next_permutation, std::prev_permutation로 사전순(lexicographically ordered)의 다음 순열, 이전 순열을 제공한다. # Time Complexity 한 번 호출하면 O(n), 모든 가능성을 전부 호출하면 Amortized O(1) https://stackoverflow.com/questions/4973077/th..

Instruction Set Architecture(ISA)

# ISA ISA는 하드웨어와 소프트웨어의 인터페이스라 할 수 있다. 명령어 집합(영어: instruction set) 또는 명령어 집합 구조(영어: Instruction set architecture, ISA)는 마이크로프로세서가 인식해서 기능을 이해하고 실행할 수 있는 기계어 명령어를 말한다. 마이크로프로세서마다 기계어 코드의 길이와 숫자 코드가 다르다. 명령어의 각 비트는 기능적으로 분할하여 의미를 부여하고 숫자화한다. 프로그램 개발자가 숫자로 프로그램하기가 불편하므로 기계어와 일대일로 문자화한 것이 어셈블리어이다. An ISA is defined as the design of a computer from the Programmer’s Perspective. This basically means t..