1. 알고리즘의 소개

2013. 11. 3. 12:34BASIC/알고리즘

1.   알고리즘이란 어떤 문제를 해결함에 있어 컴퓨터를 이용한 계산 시 사용하는 해법입니다.   
  (==     알고리즘은 어떤 문제를 해결함에 있어 컴퓨터를 이용한 계산 시에 사용하는 해법)

2.  알고리즘을 사용하는 이유로는 크게 효율성, 추상화, 재사용성 3가지 측면에서 설명할 수 있습니다.

효율성 : 효율적인 해결방법들을 발견하여 활용

추상화 : 복잡한 문제도 효율적인 알고리즘으로 해결할 수 있는 단순한 문제들로 분류 가능
복잡한 문제도 단순한 시각에서 단순한 문제들을 복잡한 문제의 추상이라 생각 가능
예를 들면 인터넷에서 두개의 Gateway 사이에 Packet 전달을 위한 가장 짧은 경로 찾기라는 문제가 주어졌을때, 경로 검색에 해결을 위한 알고리즘이 발견되어져 있기 때문에, 일반적인 편도 최단 경로 문제의 변형임을 파악하는 것이 중요하며, 일반적으로 문제를 푸는 방법으로 접근이 가능하다.

재사용성 : 간단한 몇가지 알고리즘을 잘 조합하면, 복잡한 문제들도 쉽게 해결 가능

 

3.  알고리즘의 요구 조건에는 입력, 출력, 명확성, 유한성, 실제성 5가지 조건이 있습니다.

4.  작성된 알고리즘의 복잡한 정도를 나타내는 기준으로서는 시간 복잡도, 공간 복잡도가  있습니다.

적은 메모리를 사용하면서 빠르고 정확!!! 가장 중요한 것은 속도!!!

시간 복잡도 : Time complexity = 계산 복잡도
 -
알고리즘이 답을 계산해 낼 때까지 소용되는 계산시간

공간 복잡도 : Space Complexity = 영역 복잡도
- 
메모리의 어떤 단위를 정해 어떤 알고리즘이 몇 개의 기억 영역을 차지하는가를 측정

 

5.  프로그램은 자료구조와 알고리즘으로 구성됩니다.

6.알고리즘의 역할로서는 모듈성, 가독성, 단순성, 일관성이 있습니다.

7.일반적인 알고리즘 설계 방법으로는

Randomized Algorithm,

Divide-and-Conquer Algorithm,

Dynamic Programming,

Greedy Algorithm,

Approximation Algorithm

있습니다.

8. 게임에서 알고리즘을 분류하는 데에는 기본적인 알고리즘, Client 프로그래밍에 필요한 알고리즘, Server Network 프로그래밍에 필요한 것들, 기타로 분류 할 수 있습니다.

 

'BASIC > 알고리즘' 카테고리의 다른 글

Charles Antony Richard Hoare & Quick Sort  (0) 2016.01.01
Quick Sort  (1) 2014.09.02
정렬 알고리즘  (0) 2013.11.24
재귀호출 & 프랙탈  (0) 2013.11.24
자료구조의 기초 2  (0) 2013.11.24
자료구조의 기초 1  (0) 2013.11.24
알고리즘의 기초 & 유클리드 호제법  (0) 2013.11.14