알고리즘은 유한 시간 내에 결과를 생성하는 잘 정의 된 일련의 단계입니다.
잘 정의 된 단계 : 정확하게 정의 된 것을 수행하거나 계산할 수있는 것입니다. 단계를 읽으면해야 할 일과 수행 방법을 알 수 있습니다. 특히, 알고있는 프로그래밍 언어로 작성하고 프로그램 조각이 단계와 정확히 일치하는지 확인할 수 있습니다.
순서 : 단계는 지정된 순서대로 실행됩니다. 단계는 데이터 (루프)에 따라 두 번 이상 실행되거나 데이터 (if 문)에 따라 전혀 실행되지 않을 수 있습니다. 병렬 알고리즘은 단계에서 부분적인 순서만을 부과하므로 여기서는 지나치게 단순화하고 있습니다. 시퀀스보다 부분적으로 정렬 된 세트로 묘사하는 것이 더 정확하지만 단어를 조금 더 단순하게 유지하고 싶었습니다. 또한, 부분적으로 주문한 세트를 전체 순서로 쉽게 임베드 할 수 있습니다.
결과 : 종료 상태 또는 값. 미리 예측할 필요는 없지만 어떤 조건을 만족시키는 명확한 끝이어야합니다. 이것은 운영 체제가 알고리즘을 많이 사용하지는 않지만 알고리즘이 아니라는 것을 의미합니다.
유한 : 알고리즘은 적어도 충분히 오래 실행될 수있는 머신에서 언젠가는 중지되도록 보장됩니다. 반드시 예측 가능한 시간에 중지한다고 보장 할 필요는 없으며, 기존 시스템에서 태양이 확장되어 빨간색으로 바뀌기 전에 중지 될 것이라는 보장은 없습니다. 이는 운영 체제가 알고리즘이 아니라는 것을 의미합니다. 이상적으로는 영원히 실행될 것입니다. "프로 시저"라는 단어가 언젠가 멈출 것이라고 확신한다면 알고리즘이 될 무언가를 설명하는 데 사용되었습니다. (알 수없는 시간 안에 멈추는 알고리즘을 가질 수있다. Goldbach의 추측이 수학적으로 거짓이고, 비 구조적인 증거로 입증되었으므로 두 소수의 합이 아닌 짝수> 2가 있다고 가정하자. 짝수를 단순히 테스트 한 알고리즘은 결국 종료됩니다.
알고리즘은 의도적으로 추상적 인 것이므로 "우주의 열사병 이전에 이것을 실제로 실행할 수 있습니까?"와 같은 질문은 고려하지 않습니다. 그들은 대답하기가 너무 어려울 것입니다. 컴퓨터 작동과 관련이 있으면 프로그래밍 언어로 쉽게 구현할 수 있습니다.