본문 바로가기
IT 정보/Java

[Java] 완전 탐색 알고리즘 (Brute-Force Algorithm)

by 동그리가조아 2022. 5. 31.
반응형

Brute-Force !? 

컴퓨터 과학에서 시행착오 방법론이라고 말하고, 암호학에서도 사용한다. 이는 어떤 암호를 풀기 위해 모든 값을 대입해서 찾아내는 방법으로 지능적인 전략을 사용하지 않는다. 예를 들어 0000 ~ 9999 자물쇠가 있다면 모든 수를 대입해보는 방식인 것이다. 

 

Brute Force Algorithm ?!

 

의미

  • 위 뜻과 마찬가지로 무차별 적인 대입하는 방법으로 모든 가능성을 시도하는 것이다. 따라서 공간 복잡도와 시간 복잡도를 전혀 고려하지 않은 방법이다. 때문에 최적의 솔루션이 될 수 없다. 

 

사용 조건 

  • 프로세스 속도를 높이는 데 사용할 다른 방법이 없을 경우
  • 문제를 해결할 여러 솔루션이 있고 각 솔루션을 확인해야 할 때

 

주요 활용 알고리즘

  • 순차 검색 알고리즘 (Sequential Search
     : 배열 안에 특정 값이 존재하는지 인덱스 0부터 순차적으로 검색

  • 문열 매칭 알고리즘 (Brute-Force String Matching)
     : 길이가 n인 전체 문자열이 m인 문자열 패턴을 포함하는지 검색할 때 

  • 선택 정렬 알고리즘 (Selection Sort)
     :  전체 배열을 검색하여 현재 인덱스 값과 순회하는 배열 값과 비교하여 오름차순/ 내림차순에 따라 정렬하는 것

 

그 외 활용 알고리즘

  • 버블 정렬 알고리즘 (Bubble Sort)
  • Tree 자료 구조의 완전 탐색 알고리즘 Exhausive Search (BFS, DFS)
  • 동적 프로그래밍 - DP(Dynamic Programing)

 

반응형