맨위로가기

검색 알고리즘

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

탐색 알고리즘은 문제를 해결하기 위해 가능한 해답들을 평가하고 반환하는 알고리즘으로, 탐색 공간을 탐색하는 다양한 방법들을 포함한다. 지식 활용 여부에 따라 지식을 사용하지 않는 탐색과 지식을 사용하는 탐색으로 분류되며, 탐색 공간의 형태에 따라 리스트, 문자열, 트리/그래프, 가상 공간 탐색 등으로 나뉜다. 특히 체스와 같은 게임이나 조합 최적화, 제약 만족 문제 등 다양한 분야에 응용되며, 한국에서는 IT 산업 발전에 중요한 역할을 하고 있다. 탐색 알고리즘의 발전은 개인 정보 보호 및 알고리즘 편향성 등 윤리적인 문제도 야기할 수 있어 사회적 논의와 제도적 보완이 필요하다.

2. 탐색 알고리즘의 종류

탐색 알고리즘은 문제의 해답을 찾기 위해 다양한 방법을 사용하며, 탐색 공간, 데이터 구조, 문제의 특성 등에 따라 여러 종류로 나뉜다.


  • 리스트 탐색:
  • 선형 탐색: 리스트의 각 요소를 처음부터 차례대로 비교하여 원하는 값을 찾는다. 가장 단순하지만, 리스트가 크면 시간이 오래 걸린다.
  • 이진 탐색: 정렬된 리스트에서 중간값과 비교하여 탐색 범위를 절반씩 줄여나가는 방식이다. 선형 탐색보다 훨씬 빠르지만, 리스트가 정렬되어 있어야 한다.
  • 보간 탐색: 데이터가 균등하게 분포되어 있다고 가정하고, 찾고자 하는 값의 위치를 예측하여 탐색한다. 이진 탐색보다 빠를 수 있지만, 데이터 분포에 따라 성능이 달라진다.
  • 균형 이진 탐색 트리: 데이터를 정렬된 상태로 유지하는 트리 구조를 이용하여 탐색한다. 삽입, 삭제, 탐색 모두 효율적이다.
  • 해시 테이블: 키 값을 해시 함수를 이용하여 변환한 값을 인덱스로 사용하여 데이터를 저장한다. 평균적으로 매우 빠른 탐색 속도를 보이지만, 충돌(collision)이 발생할 수 있다.
  • 문자열 탐색:
  • 크누스-모리스-프랫 알고리즘: 패턴 문자열의 정보를 이용하여 불필요한 비교를 줄이는 알고리즘이다.
  • 보이어-무어 문자열 검색 알고리즘: 패턴 문자열의 오른쪽 끝에서부터 비교를 시작하여 불일치가 발생하면 패턴을 이동시키는 알고리즘이다.
  • 아호-코라식 알고리즘: 여러 개의 패턴 문자열을 동시에 탐색할 수 있는 알고리즘이다.
  • 라빈-카프 문자열 검색 알고리즘: 해시 함수를 이용하여 패턴 문자열과 텍스트 문자열을 비교하는 알고리즘이다.
  • 비트맵 알고리즘: 각 문자에 대한 비트맵을 이용하여 패턴 문자열을 탐색하는 알고리즘이다.
  • 트리/그래프 탐색:
  • 너비 우선 탐색(BFS): 시작 노드에서 가까운 노드부터 먼저 탐색하는 방식이다.
  • 깊이 우선 탐색(DFS): 시작 노드에서 한 방향으로 최대한 깊이 탐색하는 방식이다.
  • 균일 비용 탐색: 시작 노드에서 목표 노드까지의 경로 중 가장 비용이 적은 경로를 찾는 알고리즘이다.
  • 양방향 탐색: 시작 노드와 목표 노드 양쪽에서 동시에 탐색을 진행하여 중간에서 만나는 지점을 찾는 알고리즘이다.
  • 그래프 탐색 (고유):
  • 최단 경로 문제
  • 다익스트라 알고리즘: 음의 가중치가 없는 그래프에서 최단 경로를 찾는 알고리즘이다.
  • 벨만-포드 알고리즘: 음의 가중치가 있는 그래프에서도 최단 경로를 찾을 수 있는 알고리즘이다.
  • 최소 신장 트리
  • 프림 알고리즘: 간선 가중치의 합이 최소가 되는 신장 트리를 찾는 알고리즘이다.
  • 크루스칼 알고리즘: 가중치가 낮은 간선부터 선택하여 신장 트리를 만드는 알고리즘이다.
  • 최대 유량 문제 · 최소 컷 문제
  • 포드-풀커슨 알고리즘: 네트워크에서 최대 유량을 찾는 알고리즘이다.
  • 에드몬드-카프 알고리즘: 포드-풀커슨 알고리즘의 개선된 버전이다.
  • 외판원 문제
  • 최근접 이웃 방법: 가장 가까운 도시를 차례대로 방문하는 방법이다.
  • 기타:
  • 지역 탐색법・언덕 오르기
  • 최선 우선 탐색
  • A*

2. 1. 지식 활용 여부에 따른 분류

탐색 알고리즘은 문제에 대한 지식 활용 여부에 따라 크게 두 가지로 나뉜다. 문제를 푸는 종류로서 연구되고 있는 알고리즘의 대부분은 탐색 알고리즘이다. 어떤 문제의 생각할 수 있는 모든 해답의 집합을 탐색 공간이라고 부른다. 무작위 탐색이나 지식을 사용하지 않는 탐색 알고리즘은 탐색 공간을 탐색하는 수법으로서는 가장 단순하고 직관적이다. 반면, 지식을 사용한 탐색 알고리즘은 휴리스틱을 사용하여 탐색 공간의 구조에 관한 지식을 이용하고, 탐색에 걸리는 시간을 줄이려고 한다.

2. 1. 1. 지식을 사용하지 않는 탐색 (Uninformed Search)

지식을 사용하지 않는 탐색(Uninformed search) 알고리즘은 문제의 속성을 고려하지 않는 기법이다. 그렇기 때문에 범용적으로 구현 가능하며, 추상화 덕분에 광범위한 문제에 동일한 구현을 적용할 수 있다. 문제는 탐색 공간이 일반적으로 매우 크기 때문에, 문제가 작은 경우에도 상당한 시간이 걸린다는 점이다. 처리를 고속화하기 위해, 지식을 사용한 탐색만 수행하는 경우가 있다.

2. 1. 2. 지식을 사용하는 탐색 (Informed Search)

지식을 사용하는 탐색(Informed Search)에서는 문제에 고유한 휴리스틱(평가 함수)을 보조로 사용한다. 좋은 휴리스틱을 사용하면 탐색을 극적으로 개선할 수 있다.

지식을 사용하는 탐색 알고리즘의 대부분은 트리 탐색이다. 최선 우선 탐색, A* 등이 이에 해당한다. 지식을 사용하지 않는 탐색과 마찬가지로, 이들은 그래프에도 확장 가능하다.

  • 지역 탐색법・언덕 오르기
  • 최선 우선 탐색
  • A*

2. 2. 탐색 공간에 따른 분류

탐색 공간은 어떤 문제의 가능한 모든 해답의 집합을 의미한다. 탐색 알고리즘은 탐색 공간의 형태에 따라 분류할 수 있다. 무작위 탐색이나 순수한 탐색 알고리즘은 탐색 공간을 탐색하는 단순한 방법이다. 반면, 지식을 사용한 탐색 알고리즘은 휴리스틱을 사용하여 탐색 시간을 줄이려고 한다.

2. 2. 1. 리스트 탐색

리스트 탐색은 리스트에서 특정 값을 찾는 알고리즘으로, 컴퓨터 과학에서 가장 잘 연구되는 분야 중 하나이다.

  • 선형 탐색: 가장 단순한 알고리즘으로, 리스트의 각 요소를 차례대로 조사한다. 실행 시간은 O(n)이지만, 어떤 리스트에도 적용 가능하다.
  • 이진 탐색: 정렬된 리스트에서 사용 가능하며, 실행 시간은 O(log ''n'')이다. 데이터가 많을수록 선형 탐색보다 성능이 좋지만, 탐색 전에 리스트를 정렬해야 하고 임의 접근이 가능해야 한다.
  • 보간 탐색: 분포가 편향되지 않은 정렬된 큰 리스트에서 이진 탐색보다 성능이 좋을 수 있지만, 최악의 경우 O(''n'')이 된다.
  • 균형 이진 탐색 트리: 이진 탐색의 확장된 형태로, 삽입과 삭제를 빠르게 할 수 있다. 실행 시간은 이진 탐색과 마찬가지로 O(log ''n'')이다.
  • 해시 테이블: 평균적인 경우 O(1)의 실행 시간을 가지지만, 필요로 하는 영역이 크고 최악의 경우 O(''n'')이 걸릴 수 있다.


그로버 알고리즘은 양자 컴퓨터용 알고리즘으로, 정렬되지 않은 리스트에서 선형 탐색보다 제곱의 성능 향상을 가져오지만, 아직 실용화되지 않았다.

선형 탐색, 이진 탐색, 균형 이진 탐색 트리와 같은 대부분의 리스트 탐색 알고리즘은 약간의 비용 추가로 주어진 키 이하 또는 이상의 모든 값을 찾는 "범위 탐색(range search)"을 수행할 수 있다. 하지만 해시 테이블은 이러한 탐색을 효율적으로 수행할 수 없다.

2. 2. 2. 문자열 탐색

문자열 내에서 특정 패턴을 검색한다. 접미사 트리 등의 데이터 구조를 사용하여 효율을 높이는 경우도 있다.

  • 크누스-모리스-프랫 알고리즘
  • 보이어-무어 문자열 검색 알고리즘
  • 아호-코라식 알고리즘
  • 라빈-카프 문자열 검색 알고리즘
  • 비트맵 알고리즘

2. 2. 3. 트리/그래프 탐색



그래프 탐색 알고리즘에는 최단 경로 문제 해결에 사용되는 다익스트라 알고리즘, 벨만-포드 알고리즘과 최소 신장 트리를 찾는 프림 알고리즘, 크루스칼 알고리즘 등이 있다. 또한, 최대 유량 문제 및 최소 컷 문제를 해결하는 포드-풀커슨 알고리즘, 에드몬드-카프 알고리즘도 그래프 탐색 알고리즘의 일종이다.

트리 탐색(tree search영어) 알고리즘은 탐색 기법의 핵심이다. 트리의 노드를 탐색하는 것으로, 처음부터 트리가 명시되는 경우와 동적으로 트리를 생성하는 경우가 있다. 기본 원칙은 자료 구조에서 하나의 노드를 선택하고, 그 노드를 조사한 후 자료 구조에 추가해 나가는 것이다. 이 때, 같은 레벨의 노드부터 순서대로 탐색하는 너비 우선 탐색과 잎 노드까지 탐색하고 백트래킹하는 깊이 우선 탐색이 있다.

그래프 이론 문제의 많은 부분은 그래프 탐색 알고리즘으로 해결할 수 있으며, 일부는 트리 탐색 알고리즘을 확장한 것으로 볼 수도 있다.

2. 2. 4. 가상 공간 탐색

가상 공간 탐색 알고리즘은 특정 변수가 특정 수학 방정식과 부등식/등식을 만족하는 값의 집합을 찾는 제약 충족 문제에 사용된다. 또한, 변수의 특정 함수를 최대화 또는 최소화하는 변수 할당을 찾는 문제에도 사용된다.[1] 이러한 문제에 대한 알고리즘에는 전수 조사와, 이 공간의 구조에 대한 부분적 지식을 활용하려는 다양한 휴리스틱이 포함된다.

지역 탐색 방법은 검색 공간의 요소를 그래프의 정점으로 보고, 적용 가능한 휴리스틱으로 가장자리를 정의하고, 가장 가파른 하강 또는 최선 우선 기준에 따라 공간을 탐색한다. 이 범주에는 시뮬레이티드 어닐링, 탭 탐색, 유전자 프로그래밍과 같은 다양한 메타 휴리스틱 방법이 포함된다.[1]

트리 검색 알고리즘은 요소를 트리의 정점으로 간주하고 특정 순서로 트리를 탐색한다. 여기에는 깊이 우선 탐색, 너비 우선 탐색과 같은 완전 탐색 방법과, 백트래킹, 분기 한정법과 같은 휴리스틱 기반 검색 트리 가지치기 방법이 있다. 이러한 트리 검색 방법 중 다수는 충분한 시간이 주어지면 정확하거나 최적의 솔루션을 찾을 수 있다.[1]

다중 플레이어 게임의 게임 트리를 탐색하기 위한 알고리즘도 이 클래스에 속한다. 목표는 상대방의 모든 가능한 움직임을 고려하여 승리할 최고의 기회를 제공하는 움직임을 찾는 것이다. 인공 지능의 맥락에서 연구된 조합적 탐색 문제이며, 미니맥스 알고리즘, 알파-베타 가지치기, A* 검색 알고리즘 등이 있다.[1]

범용적으로 사용할 수 있는 휴리스틱을 메타휴리스틱이라고 하며, 다음은 그 예시이다.

제약 만족 문제를 푸는 알고리즘도 탐색 알고리즘의 일종이다. 여기에는 조합 최적화나 백트래킹이 사용되며, 백트래킹에서의 일반적인 기법으로 제약 전파가 있다.

2. 3. 특수 목적 탐색

특수한 목적을 위해 설계된 탐색 알고리즘도 존재한다.

2. 3. 1. 적대적 탐색 (Adversarial Search)

체스와 같은 게임에서는, 가능한 모든 "수"로 구성된 게임 트리가 있으며, 이 트리를 사용하여 최선의 수를 찾을 수 있다. 이러한 종류의 문제는, 상대방도 자신에게 최선의 수를 선택한다고 가정한다는 흥미로운 특징이 있다. 따라서 게임을 하는 인공지능 등에서는, 미니맥스법, 탐색 트리 가지치기, 알파-베타 가지치기와 같은 특징적인 탐색 알고리즘을 사용한다.[1]

2. 3. 2. 양자 탐색

양자 컴퓨터를 위해 설계된 검색 방법도 있는데, 그로버 알고리즘과 같이 자료 구조나 휴리스틱의 도움 없이도 이론적으로 선형 검색이나 무차별 대입 검색보다 빠르다. 양자 컴퓨터의 아이디어와 응용 분야는 여전히 완전히 이론적이지만, 그로버 알고리즘과 같은 알고리즘을 통해 양자 컴퓨팅 시스템의 가상 물리적 버전을 정확하게 복제하는 연구가 수행되었다.[2]

3. 탐색 알고리즘의 응용

탐색 알고리즘은 다음과 같이 다양한 분야에서 응용된다.


  • 조합 최적화 문제: 차량 경로 문제, 배낭 문제, 간호사 스케줄링 문제 등
  • 제약 만족 문제: 지도 색칠 문제, 스도쿠, 십자말 풀이 등
  • 게임 이론: 특히 조합 게임 이론에서 최선의 수를 선택 (예: 미니맥스 알고리즘)
  • 조합 또는 암호 찾기
  • 정수 소인수 분해 (암호학에서 중요)
  • 검색 엔진 최적화(SEO) 및 웹 크롤러를 위한 콘텐츠 최적화
  • 화학 반응 등 산업 공정 최적화 (온도, 압력, pH 등)
  • 데이터베이스에서 레코드 검색
  • 리스트 또는 배열에서 최대/최소값 찾기
  • 주어진 값이 값 집합에 있는지 확인

3. 1. 조합 최적화 문제

다음은 조합 최적화 문제에 대한 설명이다.

  • 차량 경로 문제: 최단 경로 문제의 일종이다.
  • 배낭 문제: 각 품목마다 무게와 가치가 주어졌을 때, 총 무게가 주어진 제한보다 작거나 같고 총 가치가 최대한 커지도록 컬렉션에 포함할 각 품목의 수를 결정한다.
  • 간호사 스케줄링 문제

3. 2. 제약 만족 문제

제약 만족 문제는 탐색 알고리즘의 일종으로, 경로를 찾는 대신 일련의 변수 집합 값의 조합을 찾는 문제이다. 변수 처리는 임의의 순서로 가능하므로, 트리 탐색 알고리즘은 효율적이지 않다. 해법으로는 문제의 자유도를 이용한 조합 최적화나 백트래킹이 사용되며, 백트래킹에서는 제약 전파(constraint propagation)가 일반적인 기법이다. 그 외에도 경쟁을 최소화하는 국소 탐색 알고리즘도 있다.

제약 만족 문제의 예시는 다음과 같다.

  • 지도 색칠 문제
  • 스도쿠
  • 십자말 풀이

3. 3. 게임 이론

게임 이론, 특히 조합 게임 이론에서 다음에 할 최고의 수를 선택할 때 사용된다. (예: 미니맥스 알고리즘 사용)

체스와 같은 게임에서는, 가능한 모든 "수"로 구성된 게임 트리가 있으며, 이 트리를 사용하여 최선의 수를 찾을 수 있다. 이 종류의 문제는, 상대방도 자신에게 최선의 수를 선택한다고 가정한다는 흥미로운 특징이 있다. 따라서 게임을 하는 인공지능 등에서는, 미니맥스법, 탐색 트리 가지치기, 알파-베타 가지치기와 같은 특징적인 탐색 알고리즘을 사용한다.

3. 4. 기타 응용 분야


  • 조합 최적화 문제
  • 차량 경로 문제: 최단 경로 문제의 일종이다.
  • 배낭 문제: 각 품목의 무게와 가치가 주어졌을 때, 총 무게가 주어진 제한보다 작거나 같으면서 총 가치가 최대가 되도록 각 품목의 수를 결정한다.
  • 간호사 스케줄링 문제
  • 제약 만족 문제
  • 지도 색칠 문제
  • 스도쿠 또는 십자말 풀이 채우기
  • 게임 이론, 특히 조합 게임 이론에서 다음에 할 최선의 수를 선택 (미니맥스 알고리즘 사용)
  • 가능한 전체 집합에서 조합 또는 암호 찾기
  • 정수 소인수 분해 (암호학에서 중요한 문제)
  • 검색 엔진 최적화(SEO) 및 웹 크롤러를 위한 콘텐츠 최적화
  • 화학 반응과 같은 산업 공정 최적화 (온도, 압력, pH와 같은 공정 매개변수 변경)
  • 데이터베이스에서 레코드 검색
  • 리스트 또는 배열에서 최대 또는 최소값 찾기
  • 주어진 값이 값 집합에 있는지 확인

4. 관련 도서


  • 도널드 커누스 저, The Art of Computer Programming|디 아트 오브 컴퓨터 프로그래밍영어volume=3|볼륨=3영어: ''정렬 및 검색'' (개정판 2판).[1]
  • 호우자키 류스케, 이이다 코지 공저, "탐색 이론에서의 확률 모델", 코로나사, ISBN 978-4339028331 (2019년 3월).[2]
  • 곤노 노리오 저, "양자 탐색 - 양자 워크가 열어가는 최첨단 알고리즘 -", 킨다이카가쿠샤, ISBN 978-4764906303 (2021년 3월 2일).
  • 사카타 요시타카 저, "크리깅 입문 - 공간 데이터 추정의 확률론적 접근 -", 코로나사, ISBN 978-4339052756 (2021년 4월 5일).

참조

[1] 논문 Local versus global search in channel graphs 2013-07-04
[2] 논문 Simulation of Grover's quantum search algorithm in an Ising-nuclear-spin-chain quantum computer with first- and second-nearest-neighbour couplings 2008-02-26



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com