티스토리 뷰

반응형

이번 포스트에서는 인공지능에 대한 이해를 위한 기초용어 알고리즘(algorithm)이 무엇인지 알아보고, 알고리즘에는 어떤종류가 있는지 살펴보도록 하겠습니다. 

 

 

알고리즘(algorithm)이란?

일상생활중에 어떤 일이나 문제를 잘 해결하려면 그 일에 대한 알고리즘을 잘 짜야 한다는 말을 많이 듣는데요. 알고리즘이 뭘까요? 알고리즘은 문제를 해결하기 위한 순서와 방법을 말합니다.

 

쉽고 단순한 문제는 해결책도 단순할테고, 어렵고 복잡한 문제일수록 해결책도 어렵고 복잡하겠죠. 

 

알고리즘

 

알고리즘이란 말은 9세기 수학자 알 콰리즈미의 이름에서 유래했다고 알려져 있습니다. 알고리즘은 이렇게 수학자의 이름에서 유래했지만 사실 컴퓨터 소프트웨어 분야에도 널리 쓰이는 말입니다. 

 

컴퓨터과학의 선구자 앨런튜링은 기계가 처리할 수 있는 수준까지 문제해결 과정을 여러 단위로 잘게 쪼갠다면 기계가 문제를 자동으로 처리할 수 있을 것이라 생각해 냈습니다. 

 

완성된 조립 모형을 처음 보면 만들기 복잡해 보이지만 설명서를 보고 조립 순서대로 차근차근 만들다보면 어느새 조립 모형을 완성하는 것과 같은 거죠.

 

우리가 주변에서 흔히 볼 수 있는 알고리즘의 예는 라면을 보면 봉지 뒤에 간단한 조리법, 종이비행기 접는 순서, 프라모델 조립셜명서 등이 알고리즘이라 할 수 있습니다. 알고리즘은 이처럼 문제를 해결하기 위한 과정이며, 올바른 순서대로 문제에 알맞은 방법으로 알고리즘을 만드는 것이 중요합니다. 

 

문제에 따라 알고리즘도 달라질 수 있습니다. 라면을 끓일 때 사람에 따라 면을 먼저 넣거나 수프을 먼저 넣거나 하는 것처럼 같은 문제라도 알고리즘은 조금씩 다르게 짤 수 있습니다.

 

 

좋은 알고리즘의 특성

 

  1. 각 단계마다 정확한 다음 단계를 가져야 합니다.
  2. 구현할 수 있고 실용적이어야 합니다.
  3. 변하지 않는 정확하고 명확한 작업을 실시해야 합니다.
  4. 일반적으로 적용할 수 있습니다.
  5. 결과물로 출력을 내보낼 수 있어야 합니다.
  6. 정의된 입력을 받아들일 수 있어야 합니다.
  7. 단계가 명확하고 변하지 않도록 정밀해야 합니다.

 

컴퓨터과학에서는 알고리즘에 따라 정렬 또는 검색하는 방법이 다르게 정의되는데, 최대한 효율적인 알고리즘을 만들기 위해 컴퓨터 과학자들은 용량을 적게 차지하면서 빨리 계산할 수 있는 알고리즘을 고안해내려고 노력합니다.

 

 

알고리즘의 종류

목록에서 특정 값을 찾아 정렬하는데 사용되는 알고리즘만 해도 많은 알고리즘이 존재합니다. 

 

  • 선형 검색(Linear search)
  • 이진 검색(Binary search)
  • 선택 정렬(Selection sort)
  • 버블 정렬(Bubble sort)
  • 삽입 정렬(Insertion sort)
  • 병합 정렬(Merge sort)
  • 빠른 정렬(Quick sort)
  • 힙 정렬(Heap sort)
  • 계수 정렬(Counting sort)
  • 기수 정렬(Radix sort)

 

목록에서 특정 값을 찾는 검색 알고리즘에서 대표적인 선형 검색과 이진 검색에 대해 살표보겠습니다.

 

선형 검색은 간단한 알고리즘으로, 목록의 시작부터 끝까지 순차적으로 요소를 비교하며 값을 찾습니다. 즉, 목록의 첫 번째 요소부터 마지막 요소까지 하나씩 비교하면서 값을 찾을 때까지 계속됩니다. 이 알고리즘은 목록의 크기에 비례하여 검색 시간이 증가하기 때문에 목록이 클 경우 효율성이 떨어질 수 있습니다.

 

반면, 이진 검색은 정렬된 목록에서 특정 값을 찾는 데 더 효율적인 알고리즘입니다. 이진 검색은 먼저 목록의 중간 요소를 선택하고 찾으려는 값과 비교합니다. 값이 중간 요소보다 작으면 목록의 왼쪽 절반에서 검색을 반복하고, 값이 중간 요소보다 크면 목록의 오른쪽 절반에서 검색을 반복합니다. 이 프로세스를 반복하여 값을 찾거나 전체 목록이 검색될 때까지 진행됩니다.

 

결론

이번 포스트에서는 알고리즘(algorithm)이 무엇인지 알아보았습니다. 알고리즘은 문제를 해결하기 위한 순서와 방법을 말합니다. 쉽고 단순한 문제는 해결책도 단순할테고, 어렵고 복잡한 문제일수록 해결책도 어렵고 복잡하겠죠. 

 

알고리즘은 문제를 해결하기 위한 과정이며, 올바른 순서대로 문제에 알맞은 방법으로 알고리즘을 만드는 것이 중요합니다.