Posts Algorithm(알고리즘)이란?
Post
Cancel

Algorithm(알고리즘)이란?

요약

알고리즘은 어떤 종류의 문제를 풀 수 있는 정확한 방법이며, 일련의 작업을 정확하게 정의해 놓은 규칙들입니다.

B - 입문자, A - 숙련자

주제별 알고리즘

패러다임별 알고리즘

알고리즘 패러다임 이란, 알고리즘이 주어진 문제를 해결하기 위해 채택한 기초가 되는 일반적인 방법 혹은 접근법입니다. 알고리즘이 해결하는 문제나 알고리즘의 동작 방식이 완전히 다르더라도,알고리즘의 동작 원칙이 같으면 같은 패러다음을 사용했다고 말할 수 있으며, 주로 알고리즘을 구분하는 기준으로 쓰인다. 알고리즘이 일반적인 컴퓨터의 프로그램에 대한 개념보다 보다 더 추상적인 개념인 것처럼 알고리즘의 패러다임은 명확히 정의된 수학적 실체가 있는 것이 아니기 때문에 그 어떤 알고리즘의 개념보다도 훨씬 추상적인 개념입니다.

상세

알고리즘 (algorithm [ǽlɡərìðm])은 수학과 컴퓨터 과학, 언어학 또는 관련 분야에서 어떠한 문제를 해결하기 위해 정해진 일련의 절차나 방법을 공식화한 형태로 표현한 것, 계산을 실행하기 위한 단계적 절차를 의미한다.

알고리즘은 연산, 데이터 진행 또는 자동화된 추론을 수행한다. 산법(算法), 셈법, 계산 절차 등으로 번역되기도 한다.

명칭

알고리즘은 9세기 페르시아의 수학자인 무하마드 알콰리즈미(Muhammad al-Kwarizmi)의 이름을 라틴어화한 algorismus에서 따온 말이다.

정의

정지 문제의 결과로 알고리즘이 정지하는 데 걸리는 시간을 일반적으로 측정할 수 없다.

그러므로 알고리즘에 대해 단순한 직관을 만족하는 형식적인 정의는 불가능하다.

따라서 알고리즘의 공식적인 정의는 없다.

대부분의 알고리즘은 유한한 수의 규칙에 따라 구별 가능한 기호들을 조작하여 입력 정수에서 출력 정수를 생성하기 위한 일반화된 작업을 정의한다. 다음은 좋은 알고리즘의 특징이다.

  • 정밀성 : 변하지 않는 명확한 작업 단계를 가져야 한다.
  • 유일성 : 각 단계마다 명확한 다음 단계를 가져야 한다.
  • 타당성 : 구현할 수 있고 실용적이어야 한다.
  • 입력 : 정의된 입력을 받아들일 수 있어야 한다.
  • 출력 : 답으로 출력을 내보낼 수 있어야 한다.
  • 유한성 : 특정 수의 작업 이후에 정지해야 한다.
  • 일반성 : 정의된 입력들에 일반적으로 적용할 수 있어야 한다.

구현

알고리즘은 자연어, 의사코드, 순서도, 프로그래밍 언어, 인터프리터가 작업하는 제어 테이블, 유한 상태 기계의 상태도 등으로 표현할 수 있다. 다음은 알고리즘 개발의 정형적인 단계이다.

문제 정의 → 모델 고안 → 명세 작성 → 설계 → 검증 → 분석 (복잡도 등) → 구현 → 테스트 → 문서화

알고리즘을 설계하는 기술에는 운용 과학의 방법, 설계 패턴을 이용하는 방법 등이 있다. 대부분의 알고리즘은 컴퓨터 프로그램으로 구현되지만, 전기 회로나 생물학적 신경 회로를 사용하기도 한다.

분류

Materials

[wikipedia](https://ko.wikipedia.org/wiki/%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98#:~:text=%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98(%EB%9D%BC%ED%8B%B4%EC%96%B4%2C%20%EB%8F%85%EC%9D%BC%EC%96%B4%3A%20Algorithmus,%ED%95%98%EA%B8%B0%20%EC%9C%84%ED%95%9C%20%EB%8B%A8%EA%B3%84%EC%A0%81%20%EC%A0%88%EC%B0%A8%EB%A5%BC)

github.com/trekhleb/javascript-algorithms

This post is licensed under CC BY 4.0 by the author.