알고리즘

용어심층

Algorithm · 산법(算法)

알고리즘은 주어진 입력을 원하는 출력으로 바꾸기 위해 명확히 정의된 단계를 순서대로 나열한 절차로, 컴퓨터 과학과 블록체인·암호화폐 기술의 논리적 토대를 이룬다.

1.개요

알고리즘(Algorithm)은 주어진 입력을 원하는 출력으로 변환하기 위해 명확하게 정의된 단계들을 순서대로 나열한 절차이다. 각 단계는 모호하지 않아야 하며, 유한한 횟수 안에 종료되어 결과를 내놓아야 한다. 요리 조리법이 재료를 음식으로 바꾸는 순서를 규정하듯, 알고리즘은 데이터를 처리하는 순서를 규정한다.

컴퓨터 과학에서 알고리즘은 프로그램의 논리적 뼈대이며, 같은 문제라도 서로 다른 알고리즘으로 풀 수 있고 그 효율성(속도·메모리 사용량)은 크게 달라진다. 알고리즘은 단순한 계산뿐 아니라 데이터 처리, 기계 학습, 자동화된 추론에도 두루 쓰인다.

암호화폐와 분산원장 분야에서도 알고리즘은 핵심적인 역할을 한다. 데이터의 무결성을 검증하는 해싱, 여러 노드가 하나의 원장 상태에 합의하도록 만드는 합의 알고리즘, 신원을 증명하는 전자서명 등이 모두 알고리즘으로 구현된다.

[1]

2.어원과 표기

'알고리즘'은 9세기 페르시아의 수학자 무함마드 알콰리즈미의 이름을 라틴어화한 알고리스무스(Algorismus)에서 유래한 말이다. 한국어로는 산법(算法), 셈법, 계산절차라고도 부른다.

영어 algorithm의 발음을 두고 '알고리듬'이라는 표기가 더 정확하다는 지적이 있으나, 실제 사용에서는 '알고리즘'이라는 표기가 압도적으로 널리 쓰인다.

3.정의와 좋은 알고리즘의 조건

형식적으로 알고리즘은 유한한 수의 규칙에 따라 구별 가능한 기호를 조작해 입력에서 출력을 만들어 내는 유한한 계산으로 정의된다. 좋은 알고리즘이 갖추어야 할 성질은 다음과 같이 정리된다.

  • 정밀성: 각 작업 단계가 명확하고 변하지 않아야 한다.
  • 유일성: 각 단계 다음에 올 단계가 분명해야 한다.
  • 타당성: 실제로 구현할 수 있고 실용적이어야 한다.
  • 입력: 정의된 입력을 받아들일 수 있어야 한다.
  • 출력: 답에 해당하는 출력을 내놓아야 한다.
  • 유한성: 정해진 수의 작업을 마친 뒤 반드시 정지해야 한다.
  • 일반성: 정의된 입력 전반에 두루 적용할 수 있어야 한다.

이 가운데 유한성은 특히 중요한 조건으로, 알고리즘이 언제 멈추는가 하는 물음은 정지 문제와 맞닿아 있다.

4.표현 방법과 개발 과정

알고리즘은 자연어, 의사코드, 순서도, 프로그래밍 언어, 인터프리터가 다루는 제어 테이블, 유한상태기계의 상태도 등 여러 형태로 표현할 수 있다. 대부분은 컴퓨터 프로그램으로 구현되지만, 전기 회로나 생물학적 신경 회로로 구현되기도 한다.

하나의 알고리즘이 소프트웨어로 자리 잡기까지는 대체로 다음 단계를 거친다.

1. 문제 정의 2. 모델 고안 3. 명세 작성 4. 설계 5. 검증 6. 분석(복잡도 등) 7. 구현 8. 테스트 9. 문서화

5.분류

알고리즘은 여러 기준으로 나눌 수 있다.

  • 구현 방식: 재귀적 알고리즘, 연역적 알고리즘, 결정론적 알고리즘, 근사 알고리즘, 양자 알고리즘 등.
  • 설계 기법: 무차별 대입(brute force), 분할 정복, 그래프 순회, 분기 한정법, 확률적 알고리즘, 리덕션, 백트래킹 등.
  • 최적화 문제: 선형 계획법, 동적 계획법, 탐욕 알고리즘, 휴리스틱 함수 등.
  • 이론적 분야: 검색, 정렬, 수치, 그래프, 문자열, 암호학적 알고리즘, 기계 학습, 데이터 압축 등.

같은 문제라도 어떤 기법으로 접근하느냐에 따라 코드의 구조와 성능이 크게 달라진다.

6.복잡도와 효율

알고리즘의 효율은 흔히 수행 시간이 입력 크기 n에 따라 어떻게 늘어나는지로 가늠하며, 이를 점근 표기법(대문자 O 표기법)으로 나타낸다.

  • O(1): 입력 크기와 무관하게 일정 시간 안에 끝난다. 예) 파일의 첫 바이트가 널인지 검사.
  • O(log n): 예) 이진 탐색.
  • O(n): 입력에 비례하는 시간이 든다. 예) 기수 정렬.
  • O(n log n): 예) 대표적인 정렬 알고리즘.
  • O(n²): 예) 최장 공통 부분 수열 문제.
  • O(n³): 예) 행렬 곱셈.
  • O(2ⁿ): 예) 충족 가능성 문제.
  • O(n!): 예) 배열의 모든 순열을 검사.

같은 결과를 내더라도 복잡도가 낮은 알고리즘일수록 큰 입력에서 압도적으로 빠르다. 이 때문에 알고리즘 선택은 실용 시스템의 성능을 좌우하는 핵심 요소가 된다.

7.블록체인·암호화폐에서의 알고리즘

암호화폐와 블록체인은 사실상 여러 알고리즘의 조합으로 작동한다. 그중에서도 해싱 알고리즘은 임의의 데이터를 고정된 길이의 값으로 변환해 데이터의 무결성을 검증하는 데 쓰인다. 같은 입력은 언제나 같은 해시를 내지만 입력이 조금만 달라져도 결과가 완전히 바뀌므로, 위·변조를 감지하는 데 유용하다.

블록체인마다 서로 다른 해시 알고리즘을 사용한다. 비트코인 계열은 SHA 계열을, 일부 코인은 스크립트(scrypt)를, 이더리움 계열은 케차크를 쓴다. 반면 MD5처럼 충돌이 발견되어 보안 용도로는 더 이상 쓰지 않게 된 해시도 있다. 해싱은 머클 트리, 채굴, 전자서명 등 블록체인 곳곳의 밑바탕이 된다.

넓게 보면 암호학에서 다루는 암호화복호화 역시 정해진 절차, 즉 알고리즘으로 이루어진다.

8.합의 알고리즘

합의 알고리즘은 중앙 관리자 없이도 여러 노드가 하나의 원장 상태에 동의하도록 만드는 규칙으로, 탈중앙화 네트워크의 근간을 이룬다.

  • 작업증명: 채굴자가 특정 조건을 만족하는 해시값을 찾기 위해 막대한 계산을 반복하도록 요구한다. 네트워크의 계산 능력은 해시레이트로 측정되며, 블록을 만든 채굴자는 블록 보상을 받는다.
  • 지분증명: 보유한 코인의 지분에 따라 블록 생성 권한을 부여한다. 계산 경쟁 대신 지분을 근거로 하므로 에너지 소모가 상대적으로 적다.
  • 위임 지분증명: 코인 보유자가 대표 노드를 뽑아 합의를 맡기는 변형이다.

이런 합의 규칙은 비잔틴 장애 허용 문제, 즉 일부 노드가 고장 나거나 악의적으로 행동해도 전체가 올바른 결론에 이르도록 하는 문제를 푸는 알고리즘으로 볼 수 있다. 합의는 이중지불을 막는 핵심 장치이기도 하다.

9.암호·전자서명 알고리즘

블록체인의 안전성은 여러 암호 알고리즘에 기댄다. 전자서명에는 타원곡선 암호 알고리즘이 쓰여, 개인키를 가진 사람만 거래를 승인하고 누구나 공개키로 이를 검증할 수 있게 한다.

머클 트리는 다수의 거래를 해시로 묶어 하나의 대표값으로 요약하는 자료 구조로, 방대한 데이터의 무결성을 효율적으로 확인하게 해 준다. 이러한 구성 절차 역시 알고리즘의 한 예이며, 앞서 살펴본 해싱을 반복적으로 적용해 만들어진다.

10.스마트 컨트랙트와 알고리즘 트레이딩

스마트 컨트랙트는 미리 정해 둔 조건이 충족되면 자동으로 실행되는 논리로, 그 자체가 하나의 알고리즘이다. 조건과 결과가 코드로 고정되어 있어 사람의 개입 없이도 계약이 이행된다.

금융 시장에서는 미리 짜 둔 규칙에 따라 매매를 자동으로 수행하는 알고리즘 트레이딩이 널리 쓰인다. 어느 경우든 '정해진 입력에 대해 정해진 절차로 결과를 낸다'는 알고리즘의 본질은 그대로 유지된다.

11.앞으로의 과제

알고리즘이 사회 곳곳의 의사결정을 대신하면서, 그 작동 방식이 겉으로 잘 드러나지 않는 데서 오는 문제도 함께 커지고 있다. 학습 데이터에 담긴 편향이 결과에 반영되거나, 판단의 근거를 설명하기 어려운 점 등이 대표적이다.

블록체인 분야에서는 합의·암호 알고리즘의 허점이 곧 자산 탈취로 이어질 수 있어, 코드가 명세대로 동작하는지 수학적으로 따지는 정형 검증의 중요성이 강조된다. 알고리즘의 성능뿐 아니라 투명성과 안전성을 어떻게 확보할지가 앞으로의 과제로 남아 있다.

각주

  1. [1]위키백과 — 알고리즘
이 문서 인용하기
토큰포스트 위키, “알고리즘”, 2026-07-31 수정, https://wiki.tokenpost.kr/w/algorithm

문단 11개 · 연표 0건 · 각주 1