「알고리즘」

정보를 공부하다 다들 한 번쯤은 들어봤을 말이다.

익숙한 말이기에 쉽게 느껴질지 모른다.

그런데 알고리즘의 정의를 설명할 수 있는 사람은 몇이나 있을까?

다양한 알고리즘들을 소개하기에 앞서 ‘알고리즘’ 자체를 설명해보려 한다.


알고리즘의 어원

‘Algorithm’이라는 단어를 보면 어떤 생각이 드는가?

logarithm, rhythm, fascism 등의 단어들이 연상되리라 예상된다.

특히 어미 ‘-ism’을 떠올리는 사람이 많을 것으로 생각된다.

그 뜻을 사전에서 가져오면 다음과 같다.

명사나 형용사의 뒤에 붙여 그것을 내세우거나 따르는 주의 또는 주장이라는 뜻을 더해 주는 접미사.

위키낱말백과[1]

그럴듯해 보이지 않는가? 하지만 아쉽게도 ‘알고리즘’은 사람의 이름에서 유래되었다.

1983년 9월 6일 소련에서 알콰리즈미 출생 1,200주년을 기념하기 위해 만든 우표[2]
아부 압둘라 무함마드 이븐 무사 알콰리즈미
Abu ‘Abd Allah Muhammad ibn Musa al-Khwarizm

그는 페르시아의 수학자로 페르시아 최초의 수학책을 만들었으며 인도에서 도입된 아라비아 숫자를 이용하여 최초로 사칙연산을 만든 수학자이다. 앞에서 언급한 내용에서 알 수 있다시피 그는 수학사에 큰 영향을 미쳤다. 그런 이유로 대수학을 뜻하는 영어단어 Algebra는 그의 저서[3]에서 나왔고, Algorithm은 그의 이름에서 나왔다.


알고리즘의 개념과 특성

어떤 문제를 해결하기 위해 명확히 정의된(well-defined) 유한개의 규칙과 절차의 모임

-컴퓨터인터넷IT용어대사전[4]

너무 딱딱해 보이니 간단히 말하자면, 아주 넓은 의미로 문제를 해결하기 위한 모든 것은 알고리즘이라 할 수 있다.

하지만 보통 다음과 같은 특성을 갖는 것들을 알고리즘이라 한다.

  • 문제 자체만을 해결할 수도 있고, 문제를 해결하고도 가만히 있다면 아무 의미가 없으므로 알고리즘은 0개 이상의 입력, 1개 이상의 출력을 갖는다.
  • 알고리즘은 모두가 명확히 파악하여 유한한 시간 안에 정확히 수행할 수 있어야 한다.

이런 것을 알고리즘이라 하고, 현대에 와서는 좁은 의미로 ‘컴퓨터가 데이터를 처리하는 일련의 과정’을 말하기도 한다.


이 글에서는 알고리즘의 어원, 개념, 특성에 대해 알아보았다.

다음 글에서는 알고리즘의 효율을 측정하는 표기법인 시간복잡도, 공간복잡도와 알고리즘의 예시 몇 가지를 알아보려 한다.


출처 및 참고문헌

[1] : https://ko.wiktionary.org/wiki/-ism

[2] : By А. Адашев http://jeff560.tripod.com

[3] : Abu ‘Abd Allah Muhammad ibn Musa al-Khwarizm,『al-jabr wa al-muqabala』

[4] : 전산용어사전편찬위원회 , 『 컴퓨터인터넷IT용어대사전 』,일진사(2005)

참고문헌

https://ko.wikipedia.org/wiki/%EC%BD%B0%EB%A6%AC%EC%A6%88%EB%AF%B8

hyunho.choi's profile image

최현호(hyunho.choi)

2021-08-15 22:00

Read more posts by this author