알고리즘이란 무엇입니까?
알고리즘은 문제를 해결하기 위한 단계별 절차입니다. 좋은 알고리즘은 시간과 공간 측면에서 최적화되어야 합니다. 다양한 유형의 문제를 가장 최적화된 방식으로 해결하려면 다양한 유형의 알고리즘 기술이 필요합니다. 알고리즘에는 여러 유형이 있지만 이 문서에서는 가장 중요하고 기본적인 알고리즘에 대해 설명합니다.
1. 무차별 대입 알고리즘 :
이것은 가장 기본적이고 간단한 유형의 알고리즘입니다. 무차별 대입 알고리즘은 문제에 대한 직접적인 접근 방식, 즉 문제를 볼 때 우리 마음에 떠오르는 첫 번째 접근 방식입니다. 보다 기술적으로 이는 해당 문제를 해결하기 위해 가능한 모든 가능성을 반복하는 것과 같습니다.
예:
비밀번호 4자리 잠금이 되어 있는 경우. 0-9 중에서 선택할 숫자는 올바른 PIN을 얻을 때까지 0001, 0002, 0003, 0004 등과 같이 가능한 모든 조합을 하나씩 시도합니다. 최악의 경우 올바른 조합을 찾는 데 10,000번의 시도가 필요합니다.
2. 재귀 알고리즘 :
이 유형의 알고리즘은 다음을 기반으로 합니다. 재귀 . 재귀에서는 문제를 동일한 유형의 하위 문제로 나누고 기본 조건의 도움으로 문제가 해결될 때까지 자신의 self를 계속해서 호출하여 문제를 해결합니다.
재귀 알고리즘을 사용하여 해결되는 몇 가지 일반적인 문제는 다음과 같습니다. 숫자의 계승 , 피보나치 시리즈 , 하노이 타워 , 그래프용 DFS , 등.
ㅏ) 분할 정복 알고리즘 :
Divide and Conquer 알고리즘에서는 두 섹션으로 문제를 해결하는 것이 아이디어이며, 첫 번째 섹션에서는 문제를 동일한 유형의 하위 문제로 나눕니다. 두 번째 섹션에서는 더 작은 문제를 독립적으로 해결한 다음 결합된 결과를 추가하여 문제에 대한 최종 답을 생성하는 것입니다.
분할 및 정복 알고리즘을 사용하여 해결되는 몇 가지 일반적인 문제는 다음과 같습니다. 이진 검색 , 병합 정렬 , 퀵 정렬, Strassen의 행렬 곱셈 , 등.
비) 동적 프로그래밍 알고리즘 :
이러한 유형의 알고리즘은 다음과 같이 알려져 있습니다. 메모화 기술 왜냐하면 이 아이디어는 반복해서 계산하는 것을 피하기 위해 이전에 계산된 결과를 저장하는 것이기 때문입니다. 동적 프로그래밍에서는 복잡한 문제를 더 작은 문제로 나눕니다. 중복되는 하위 문제 나중에 사용할 수 있도록 결과를 저장합니다.
동적 프로그래밍 알고리즘을 사용하면 다음 문제를 해결할 수 있습니다. 배낭 문제 , 가중 작업 스케줄링 , 플로이드 워샬 알고리즘 , 등.
씨) 그리디 알고리즘 :
Greedy 알고리즘에서는 솔루션이 부분별로 구축됩니다. 다음 부분을 선택하는 결정은 즉각적인 이점을 제공한다는 점을 토대로 이루어집니다. 이전에 취해진 선택은 결코 고려되지 않습니다.
Greedy Algorithm을 통해 해결할 수 있는 몇 가지 일반적인 문제는 다음과 같습니다. Dijkstra 최단 경로 알고리즘 , 프림의 알고리즘 , 크루스칼의 알고리즘 , 허프만 코딩 , 등.
디) 역추적 알고리즘 :
역추적 알고리즘에서 문제는 증분 방식으로 해결됩니다. 즉, 한 번에 한 조각씩 증분적으로 솔루션을 구축하려고 시도하여 문제의 제약 조건을 충족하지 못하는 솔루션을 제거함으로써 문제를 재귀적으로 해결하는 알고리즘 기술입니다. 시점.
역추적 알고리즘을 통해 해결할 수 있는 몇 가지 일반적인 문제는 다음과 같습니다. 해밀턴 사이클 , M-채색 문제 , N 퀸 문제 , 미로 속의 쥐 문제 , 등.
삼. 무작위 알고리즘 :
무작위 알고리즘에서는 난수를 사용합니다. 이는 예상되는 결과를 결정하는 데 도움이 됩니다. 즉각적인 이익을 제공하기 위해 난수를 선택하기로 한 결정
무작위 알고리즘을 통해 해결할 수 있는 몇 가지 일반적인 문제는 Quicksort입니다. Quicksort에서는 피벗을 선택하기 위해 무작위 숫자를 사용합니다.
4. 정렬 알고리즘 :
정렬 알고리즘은 데이터를 오름차순 또는 내림차순으로 정렬하는 데 사용됩니다. 또한 효율적이고 유용한 방식으로 데이터를 정렬하는 데에도 사용됩니다.
정렬 알고리즘을 통해 해결할 수 있는 일반적인 문제로는 버블 정렬, 삽입 정렬, 병합 정렬, 선택 정렬, 퀵 정렬 등이 있습니다.
5. 검색 알고리즘 :
검색 알고리즘은 특정 정렬 또는 정렬되지 않은 데이터에서 특정 키를 검색하는 데 사용되는 알고리즘입니다. 검색 알고리즘을 통해 해결할 수 있는 몇 가지 일반적인 문제는 이진 검색 또는 선형 검색이 검색 알고리즘의 한 예입니다.
6. 해싱 알고리즘 :
해싱 알고리즘은 검색 알고리즘과 동일하게 작동하지만 키 ID가 있는 인덱스, 즉 키-값 쌍을 포함합니다. 해싱에서는 특정 데이터에 키를 할당합니다.
비밀번호 확인 시 해싱 알고리즘을 통해 몇 가지 일반적인 문제를 해결할 수 있습니다.