알고리즘
Algorithm 算法
알고리즘은 어떤 목표를 달성하기 위하여 잘 정의된 규칙과 정확한 명령의 전순서집합이다. 알고리즘의 조건은 유한한 규칙, 유한한 절차, 한정된 명령 등이다. 무한루프(infinite loop)에 빠져서 반복하는 것도 알고리즘의 일종이지만, 기본적으로 알고리즘은 유한한 규칙과 절차를 거쳐 목표한 결과를 도출하는 것을 말한다. 알고리즘은 algorism, algorisme 등으로 쓰기도 한다. 알고리즘의 어원은 중세 라틴어 알고리스무스(algorismus)다. 라틴어 알고리스무스의 유래는 아랍어 알-카와리즈미(al-ḵawārizmiyy)다. 알-카와리즈미(Muḥammad ibn Mūsā al-Khwārizmī, c.780~c.850)는 중세 페르시아의 수학자 이름을 음사(音寫)한 것이다. 여기에 고대 그리스어 계산을 의미하는 아리스모스(ἀριθμός, arithmós)를 부분적으로 결합하여 알고리스무스가 되었고, 알고리스무스가 서구어 알고리즘으로 바뀐 것이다.
그러니까 알고리즘은 그리스어 계산과 페르시아의 수학자 알-카와리즈미가 특이하게 결합한 용어다. 알고리즘은 두 가지 의미가 있다. 그것은 첫째, 페르시아의 수학자 알-카와리즈미가 정리한 계산의 방법과 절차 둘째, 알-카와리즈미의 영향을 받아서 완성한 계산의 방법과 절차라는 의미다. 알고리즘이 알-카와리즈미의 이름을 음사한 이유는 그가 알고리즘에 관한 두 권의 책을 썼기 때문이다. 알-카와리즈미는 [인도식 계산에 관하여(kitāb al-ḥisāb al-hindī, Book of Indian computation)]와 [인도 산수의 덧셈과 뺄셈(kitab al-jam' wa'l-tafriq al-ḥisāb al-hindī, Addition and subtraction in Indian arithmetic)]을 썼다. 책의 제목처럼 이 책들은 인도의 사칙연산을 절차와 규칙으로 정리한 것이다. 이처럼 알-카와리즈미는 인도의 사칙연산을 포함한 계산 방법과 방정식 등을 정리하여 근대수학의 틀을 놓았다.
하지만 바빌로니아인들은 BCE 2500년경에, 이집트인들은 BCE 1500년경에 이미 알고리즘과 유사한 연산의 절차와 규칙을 알고 있었다. 유클리드의 [기하학원론]에도 알고리즘의 원리가 기술되어 있다. 여하튼 인도 수학과 알-카와리즈미의 알고리즘은 스페인, 프랑스를 거쳐서 서구 여러 나라로 전파되었다. 이후 알고리즘은 아다 러브레이스(Ada Lovelace)의 컴퓨터 기초 프로그램 언어, 힐베르트의 [결정문제(Entscheidungsproblem)] 등을 거쳐 튜링테스트에 이르러 현대 알고리즘 컴퓨터 연산이 확립되었다. 현대수학에서 알고리즘은 (어떤 형식이든지) 목표 달성과 문제해결을 위한 규칙과 명령 및 구성된 일련의 절차를 의미한다. 수학에서는 알고리즘을 컴퓨터 연산 절차로 한정하기도 하지만, 실제로는 컴퓨터 프로그램을 포함하여 일상어로 기술된 행정의 규칙, 요리의 레시피(recipe), 인간과 동물 신경의 작동, 전기회로, 기계장치, 암호해독, 동물의 행동 목표, 건축 설계도 등도 모두 알고리즘이다.
알고리즘은 어떤 표현 형태이든지 목표를 달성하기 위하여 설정된 언어나 부호의 규칙을 의미한다. 컴퓨터 프로그램은 알고리즘의 일종이다. 알고리즘이 프로그램과 다른 점은 알고리즘은 유한성, 일회성, 고유성, 정확성, 타당성, 일반성, 적합성을 가진 규칙과 절차를 가졌다는 점이다. 그러므로 알고리즘은 목표를 달성하면 자동으로 정지한다. 시작 – 작동 – 정지가 알고리즘의 기본적 구조다. 알고리즘의 일반적인 구조와 절차는 다음과 같다.
1.문제 정의: 잘 정의된(well-defined), 또는 정확하게 정의된(precisely defined) 개념과 목표.
2.알고리즘의 모델 고안: 문제해결과 목표 달성을 위하여 가장 적합하고 빠르고 최적화된 프로그램 고안.
3.정보 입력: 정확한 정보를 확인하고 검증한 다음 프로그램 언어로 입력.
4.절차와 규칙에 따른 분석: 알고리즘의 규칙은 예(yes, true)와 아니오(no, false)로 구성되어 있으므로 무한루프인지 확인하고 분석함.
5.결과 도출과 테스트: 분석의 결과를 검증하여 적합한 절차와 규칙을 지켰는지 확인함.
6.결과 출력과 문서화: 도출한 결론을 저장하고 출력하여 문서화하는 것.
알고리즘을 가장 간단하게 표현하면 ‘입력-출력’이다. 문제를 이해하고 목표를 설정한 다음 적합한 프로그램을 설계하여 작동하는 것이 알고리즘의 핵심이다. 알고리즘은 명확한 목표, 유한한 시간, 유한한 과정을 통해서 마지막인 결론에 도달하려는 인간의 계산 방법이다.★(김승환)
*참고문헌 Victor J. Katz, Al-Khwarizmi, (World Book Advanced, 2013).
*참조 <0과 연산>, <무한루프>, <사칙연산>, <유클리드기하학>, <인공지능 AI>, <조건>, <전순서집합>, <튜링테스트>