컴퓨터 과학에서는 알고리즘을 기능과 데이터 구조에 따라 분류하는 경우가 많습니다. 다음은 핵심 기능별로 기본 알고리즘 유형을 분류한 것입니다.
이러한 알고리즘은 배열이나 목록과 같은 데이터 구조 내에서 특정 항목을 찾는 데 도움이 됩니다.
선형 검색: 대상을 찾을 때까지 각 요소를 순차적으로 확인합니다.
이진 검색: 검색 간격을 반씩 반복적으로 나누어 정렬된 배열을 효율적으로 검색합니다.
점프 검색: 정렬된 배열에서 앞으로 건너뛴 후 세그먼트 내에서 선형 검색을 수행합니다.
보간 검색: 균일하게 분포된 정렬 배열에 사용됩니다. 검색 키의 위치를 추정합니다.
이러한 알고리즘은 특정 순서(일반적으로 오름차순 또는 내림차순)로 요소를 재정렬합니다.
버블 정렬: 인접한 요소의 순서가 잘못된 경우 반복적으로 교체합니다.
선택 정렬: 가장 작은 요소를 찾아 목록의 정렬된 부분으로 이동합니다.
삽입 정렬: 각 요소를 적절한 위치에 삽입하여 정렬된 목록을 만듭니다.
병합 정렬: 분할 정복 접근 방식을 사용하여 목록을 분할, 정렬 및 병합합니다.
빠른 정렬: 피벗을 사용하여 목록을 나누고 하위 배열을 재귀적으로 정렬합니다.
트리 알고리즘은 트리 데이터 구조 내에서 탐색, 조작 또는 검색하는 데 사용됩니다.
이진 트리 순회: 특정 순서로 노드를 방문하기 위한 순차, 선순, 후순 순회와 같은 기술입니다.
이진 검색 트리(BST): 각 노드가 왼쪽(더 작은) 자식과 오른쪽(큰) 자식을 갖는 이진 트리입니다.
AVL 트리: 자체 균형 이진 검색 트리
Red-Black Tree: 균형을 이루기 위해 특정 색상 규칙을 따르는 균형 잡힌 BST입니다.
세그먼트 트리: 범위 쿼리 및 업데이트에 사용됩니다.
이러한 알고리즘은 노드(정점)와 모서리로 구성된 그래프에서 작동합니다.
깊이 우선 검색(DFS): 역추적하기 전에 각 분기를 따라 최대한 멀리 탐색합니다.
폭우선탐색(BFS): 다음 레벨로 이동하기 전에 모든 이웃을 탐색합니다.
Dijkstra 알고리즘: 가중치 그래프에서 노드 간 최단 경로를 찾습니다.
Bellman-Ford 알고리즘: 최단 경로를 찾지만 음수 가중치가 있는 그래프에서도 작동합니다.
Floyd-Warshall 알고리즘: 모든 노드 쌍 사이의 최단 경로를 계산합니다.
동적 프로그래밍(DP)은 복잡한 문제를 겹치는 하위 문제로 나누어 해결하는 데 사용됩니다.
피보나치 수열: 상향식 접근 방식을 사용하여 n번째 피보나치 수를 계산합니다.
배낭 문제: 자원 할당에 대한 최적화 문제를 해결합니다.
LCS(Longest Common Subsequence): 두 문자열에 공통되는 가장 긴 시퀀스를 찾습니다.
행렬 연쇄 곱셈: 행렬을 곱하는 최적의 방법을 결정합니다.
그리디 알고리즘은 전체 최적값을 찾기 위해 각 단계에서 최상의 로컬 선택을 수행합니다.
프림의 알고리즘: 그래프의 최소 스패닝 트리를 찾습니다.
Kruskal 알고리즘: 또한 최저 비용 간선을 추가하여 최소 스패닝 트리를 찾습니다.
허프만 코딩: 가장 일반적인 기호에 대해 가장 짧은 코드로 이진 트리를 구축하여 데이터를 압축합니다.
활동 선택: 시간상 중복되지 않는 최대 활동 개수를 선택합니다.
이러한 알고리즘은 해결책을 점진적으로 시도하고 막다른 골목에 도달하면 되돌립니다.
N-퀸 문제: 충돌 없이 N×N 보드에 N개의 퀸을 배치합니다.
스도쿠 해결사: 역추적 방식을 사용하여 퍼즐 그리드를 채웁니다.
미로 해결사: 각 가능성을 탐색하여 미로에서 길을 찾습니다.
분할 정복 알고리즘은 문제를 더 작은 하위 문제로 나누어 문제를 해결합니다.
병합 정렬: 목록을 반으로 나누고, 각각을 정렬한 후 병합합니다.
빠른 정렬: 피벗을 중심으로 목록을 나눕니다.
이진 검색: 검색 간격을 나누어 로그 시간으로 대상을 찾습니다.
이러한 각 범주는 다양한 유형의 계산 문제를 처리하기 위한 다양한 접근 방식을 제공하므로 특정 작업에 적합한 알고리즘을 더 쉽게 선택할 수 있습니다.
위 내용은 데이터 구조 및 알고리즘 | 알고리즘 | DSA의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!