[알고리즘] 알고리즘(Algorithm)이란?

Huko·2023년 3월 16일
0

알고리즘

목록 보기
11/11

요즘은 알고리즘이란 말을 다들 쉽게 씁니다.
특히 유튜브가 대중화되면서 '유튜브 알고리즘'이라는 말에서 많이 듣는것 같습니다.

하지만 많은 사람들에게 "알고리즘이란 무엇이냐?"라는 질문을 던지면 쉽게 대답을 못하기도 합니다.

그렇다면 알고리즘이란 무엇일까요?

알고리즘의 유래

우선 알고리즘을 알아보기 이전에 알고리즘이란 이름의 유래부터 살펴보자면

알고리즘은 9세기 이란의 아바스 왕조 시대 바그다드에서 활동한 과학자인 아부 압둘라 무함마드 이븐 무사 알콰리즈미가 있었습니다.

알콰리즈미는 과학자였지만 수학, 천문학, 지리학에 능통했습니다.

알고리즘(Algorithm)과 대수학(Albebra)이란 단어는 그로부터 유래되었는데, 그가 9세기 초 '이항과 환산에 의한 계산에 관한 요약'이라는 책을 썼습니다.
사람들은 이 책을 줄여서 알 자브라(al-jabr)라 불렀는데 이것이 현대에 이르러서는 대수학이란 단어가 되었습니다.
그 후 12세기에 그의 책을 번역한 "Algorithmi de numero Indorum"은 "Algoritmi on the numbers of the Indians"란 뜻이었고 여기서 첫 단어 Algoritmi는 그의 성 알-콰리즈미를 라틴 화한 단어입니다.

이 단어가 17세기 프랑스에서 Algorithme로 바뀌었고, 영어에서 이를 차용하며 지금의 Algorithm이라는 단어가 탄생하였습니다.

알고리즘

그렇다면 이러한 수학자의 이름에서 따온 알고리즘이란 도대체 무엇일까요?
알고리즘은 간단하게 말하면 '문제를 해결하기 위한 절차나 방법'입니다.
생각보다 간단한 대답입니다.

그렇다면 한 가지 의문이 더 생깁니다.
왜 사람들이 흔히 말하는 '유튜브 알고리즘' 즉 컴퓨터에서 말하는 알고리즘은 도대체 무엇일까요?

컴퓨터 과학에서의 알고리즘은 기존의 알고리즘가 살짝 다릅니다.
컴퓨터 과학에서의 알고리즘을 정의하자면 어떠한 문제를 풀어 맺기 위해 정해진 일련의 절차나 방법을 공식화한 형태로 표현한 것으로
즉 문제풀이에 필요한 계산절차 or 처리과정의 순서를 의미합니다.

또한 컴퓨터 과학의 알고리즘은 몇 가지 조건을 충족해야 합니다.

  • 입력 - 알고리즘은 0 또는 그 이상의 외부에서 제공된 자료가 존재한다.
  • 출력 - 알고리즘은 최소 1개 이상의 결과를 가진다.
  • 명확성 - 알고리즘의 각 단계는 명확하여 애매함이 없어야 한다.
  • 유한성 - 알고리즘은 단계들을 유한한 횟수로 거친 후 문제를 해결하고 종료해야 한다. 알고리즘의 한 단계 이후 m의 값은 n 보다 작으며, m!= 0이면 n의 값은 다음번 단계에서 줄어든다.
  • 효과성 - 알고리즘을 모든 연산들은 사람이 종이와 연필을 이용하여 유한한 시간 안에 정확하게 수행할 수 있을 정도로 충분히 단순해야 한다.
    이러한 조건들을 충족할 때 저희가 말하는 알고리즘이 완성됩니다.

하지만 알고리즘이 위 조건을 충족한다고 끝이 나는 것이 아닙니다.
우리는 프로그램을 더 효율적으로 짜기 위해서는 좋은 알고리즘을 짜야하는데
좋은 알고리즘을 짜기 위해서는 몇 가지 더 유의할 사항이 있기 때문입니다.

좋은 알고리즘이란?

그렇다면 좋은 알고리즘을 짜는 조건이란 무엇일까요?

좋은 알고리즘을 알기 위해서는 먼저 알아야 하는 개념이 2가지 있습니다.

그것은 시간 복잡도공간 복잡도입니다.

시간 복잡도

쉽게 말하자면 알고리즘의 총 소요시간을 의미합니다.

공간 복잡도

알고리즘이 실행에 필요한 메모리의 양을 의미합니다.
당연하게 시간과 메모리의 양이 적게 필요할수록 좋은 알고리즘입니다.

profile
iOS 개발자 지망생

0개의 댓글