휴리스틱
일반적으로 휴리스틱은 의사 결정을 내릴 때 따르는 "경험 법칙" 또는 유용한 지침을 의미합니다. 컴퓨터 과학에서 휴리스틱도 비슷한 의미를 가지지만, 구체적으로는 알고리즘을 가리킵니다.
소프트웨어를 프로그래밍할 때 컴퓨터 프로그래머는 다양한 작업을 수행하는 가장 효율적인 알고리즘을 만들려고 합니다. 여기에는 숫자 정렬과 같은 간단한 프로세스나 이미지 또는 동영상 클립 처리와 같은 복잡한 기능이 포함될 수 있습니다. 이러한 기능은 입력값의 범위가 넓은 경우가 많기 때문에 한 알고리즘이 어떤 경우에는 잘 작동하지만 다른 경우에는 그다지 잘 작동하지 않을 수 있습니다.
예를 들어 GIF 이미지 압축 알고리즘은 색상이 적은 작은 이미지에서 잘 작동하지만, 색상이 많은 큰 이미지에서는 JPEG 압축만큼 잘 작동하지 않습니다. 색상 범위가 넓지 않은 작은 이미지만 다룰 것이라는 사실을 알고 있다면 GIF 압축만 있으면 됩니다. 크고 다채로운 이미지에 대해서는 걱정할 필요가 없으므로 이러한 이미지에 맞게 알고리즘을 최적화할 이유도 없습니다. 이와 마찬가지로 컴퓨터 프로그래머는 일반적이지 않은 상황에서는 비효율적으로 작동할 수 있더라도 대부분의 상황에서 잘 작동하는 알고리즘을 사용하는 경우가 많습니다.
따라서 휴리스틱 프로세스에는 테스트를 실행하고 시행착오를 통해 결과를 얻는 과정이 포함될 수 있습니다. 더 많은 샘플 데이터를 테스트할수록 비슷한 유형의 데이터를 처리하는 효율적인 알고리즘을 만들기가 쉬워집니다. 앞서 설명했듯이 이러한 알고리즘이 항상 완벽한 것은 아니지만 대부분의 경우에는 잘 작동합니다. 휴리스틱의 목표는 허용 가능한 시간 안에 정확한 결과를 생성하는 간단한 프로세스를 개발하는 것입니다.
지식 테스트하기