Home 11장 성능 향상을 위한 알고리즘 기법
Post
Cancel

11장 성능 향상을 위한 알고리즘 기법

계산을 효율적으로 하는 것보다 더 나은 방법이 바로 계산을 전혀 하지 않는 것이다. 계산을 피하는 방법으로는 지름길(shortcut)와 근사값 계산 (approximating)

표 찾기

1) 변환

2) 텍스처 매핑

비디오 게임이나 영화 등에서 진짜처럼 보이는 이미지를 만들기 위해 사용하는 텍스처 매핑에서 표 찾기 기법이 중요한 역할을 한다. 텍스처 매핑의 문제점은 벽을 표현한다고 했을 때 벽돌 모양은 벽에서 플레이어가 얼마나 멀리 떨어져 있느냐에 따라 바뀔 필요가 있다. 거리에 따라 텍스처를 조정하는 일은 복잡하다.

3) 문자 종류 판별

표 찾기 방식은 프로그래밍 언어의 라이브러리 추가에도 큰 영향을 끼쳤다. 어떤 글자가 숫자, 문자 등 어떤 분류에 속하는지 판별하는 문제인 문자 종류 판별이 어휘 분석에서 중요한 부분이라는 사실을 설명했다.

정수를 사용한 계산 방법

정수의 덧셈이나 뺄셈은 비용이 싸다. 그리고 곱셈이나 나눗셈, 부동소수점의 연산은 비싸다고 여겨진다.

1) 직선

416p~422p

2) 곡선 다루기

423p~426p

3) 다항식

재귀적 분할

1) 나선

수학에서 각도를 도 단위로 측정하는데 다른 방법으로 radian이 있다. 360도 원은 2𝛑라디안이 들어있다. 180도는 𝛑라디안, 90도는 𝛑/2라디안 … 이다. 자바스크립트 등에서 제공하는 수학 라이브러리에 있는 삼각 함수는 라디안 단위로 각도를 입력받는다.

나선을 그리는 코드를 작성해보면 중심 근처에서는 그림이 좋아보이지만 밖으로 나감에 따라 상태가 나빠진다. 필요에 따라 더 많은 점을 계산할 방법이 필요하고 여기서 재귀적 분할이 제 역할을 할 수 있다. 두 각도 사이에 선을 그리는데 두 점이 가깝지 않다면 각도 차이를 반으로 줄여서 재시도하는 과정을 두 점이 충분히 가까워질 때까지 재귀적으로 수행한다.

2) 구성적인 기하

쿼드트리는 공간을 분할하는 계층적 매커니즘이기 때문에 재귀를 활용한 데이터 구조다. 431p~439p

3) 시프트와 마스크

439p~441p

계산을 회피하는 그 밖의 수학적 기법들

1) 멱급수 근사값 계산

441p~442p

2) CORDIC 알고리즘

좌표 회전 디지털 컴퓨터 (CORDIC) 알고리즘은 B-58 폭격기 항법 시스템의 아날로그 부품을 좀 더 정확한 것으로 대신하기 위해 만들어졌다.

442p~448p

무작위성과 관련 있는 예제들

컴퓨터에서 완전한 난수를 계산하기는 아주 어렵다 난수를 만들려면 어떤 공식을 기반으로 생성해야 하는데 정해진 공식으로 생성한 난수는 반복적일 수밖에 없다.

1) 공간을 채우는 곡선

이탈리아 수학자인 주세페 페아노는 최초로 공간을 채우는 곡선의 예제를 제시했다.

2) L 시스템

매치될 패턴을 기술하는 대신 힐베르트 곡선 규칙에 사용한 규칙은 어떤 패턴을 만들어 낼지 기술한다. 이런 규칙을 L 시스템, 린덴마이어 시스템 또는 어떤 것이 생성될지를 기술하기 때문에 생성 문법이라고 부른다.

3) 스토캐스틱 기법

스토캐스틱이라는 말은 랜덤이라는 말로는 충분치 않을 때 쓸 수 있는 말이다. 컴퓨터 그래픽에 임의성을 추가하는 방법이 나왔는데 약간의 임의성을 추가하면 다양성이 늘어난다.

4) 양자화

양자화는 원래 이미지에 있는 색에 대해 변환될 이미지에서 쓸 수 있는 색을 할당해야 한다는 뜻이다. 임계화는 미리 어떤 한계값을 정하고 그보다 더 밝은 값을 흰색으로, 더 어두운 값을 검은색으로 지정하는 방식이다.

망점인쇄는 이미지를 여러 크기의 점으로 분해하여 이미지를 축소하면 음영으로 해석된다.

454p~464p

This post is licensed under CC BY 4.0 by the author.

9장 웹 브라우저

12장 병렬성과 비동기성