[TIL]230320 - 알고리즘 3주차: Brute Force and Exhaustive Search (브루트 포스와 완전 탐색)

Jimin·2023년 3월 21일
0
post-thumbnail

Brute Force

  • 문제의 진술과 관련 개념에 대한 정의를 바탕으로 문제를 해결하기 위한 간단한 접근법
  • 억지 기법(무차별 대입해 억지로 문제를 푸는)

Sort

Bubble Sort(버블 정렬): O(n^2)

Selection Sort(선택 정렬): O(n^2)

Sequential Search(순차 탐색): O(n)

Striig Matching

비교
The worst case: Θ(n * m)
A average natural language text: Θ(n+m) = Θ(n)

Closet Pair Problem

  • k차원 공간에서 n개의 점 집합에서 가장 가까운 두 점 찾기

Euclidean distance

Convex Hull Problem

  • Convex set: 집합 내의 임의의 두 점 P와 Q에 대해, 끝점이 Q 및 Q인 전체 선분 세트에 속함
  • Convex hull(볼록 껍질): 점들의 집합 S의 볼록 껍질은 S를 포함하는 가장 작은 볼록 집합임
    • "가장 작은" 요건은 S의 볼록 껍질이 S를 포함하는 볼록 집합의 부분 집합이어야 한다는 것을 의미함
  • n>2인 점의 임의의 집합 S의 볼록 껍질은 S의 점 중 일부에 꼭짓점이 있는 볼록 다각형임
    • 볼록 집합의 극한점은 집합에 끝점이 있는 선분의 중간점이 아닌 이 집합의 점임

알고리즘

  • n(n-1)/2 쌍의 구별되는 점 각각에 대해 점1 = (x1, y1), 점2 = (x2, y2)
  • a = y2 - y1, b = x2 - x1, c = x1y2 - y1x2일 때, ax + by = c의 직선을 구함
  • 각각의 다른 n-2 포인트에 대해 ax + c를 구함
  • 모든 점이 같은 부호를 갖는 경우 두 점은 극장점 중 하나임
  • 이 알고리즘의 시간 효율: O(n^3)

Exhaustive Search(완전 탐색)

  • State-space search
  • 초기 상태, 목표 상태, 작업 집합에서 초기 상태를 목표 상태로 변환하는 일련의 작업을 찾음
  • 솔루션 과정을 트리로 나타낼 수 있음

조합 문제

  • Traveling Salesman - permutations(순열) Θ((n-1)!): 순회판매원 문제
  • Knapsack - subset(부분 집합) Θ(n!): 배낭 문제
  • Assignment problem(할당 문제) - permutations(순열) Θ(n!)

1. TSP(Traveling Salesman Problem)

  • 주어진 n개 도시를 통과하는 최단 투어를 찾음
  • 출발지 도시로 돌아가기 전에 각 도시를 정확히 한 번 방문
  • 도시를 나타내는 그래프의 정점과 거리를 지정하는 가장자리 가중치를 사용하여 가중치 그래프로 편리하게 모델링
  • 그래프에서 가장 짧은 해필턴 회로를 찾는 것과 같음
    • 해밀턴 회로는 그래프의 모든 꼭짓점을 정확히 한 번 동과하는 주기(cycle)로 정의됨

2. Knapsack Problem

  • 알려진 가중치 w1, w2, ..., wn 및 값 v1, v2, ..., vn 및 용량의 배낭의 n개 항목이 주어짐
  • 0/1 knapsack problem과 TSP는 NP-난해 문제

3. Assignment Problem


DFS and BFS

  • Depth First Search
  • Breadth First Search

결론

강점

  • 광범위한 적용성, 단순성
  • 검색, 문자열 일치 및 행렬 곱셈과 같은 몇 가지 중요한 문제에 대한 합리적인 알고리즘
  • n개의 숫자와 합과 곱, 목록에서 최대값 또는 최소값 찾기와 같은 간단한 계산 작업을 위한 표준 알고리즘

약점

  • Brute Force 접근 방식은 효율적인 알고리즘을 산출하는 경우가 거의 없음
  • 일부 무차별 힘 알고리즘은 허용할 수 없을 정도로 느림
  • Brute Force 접근 방식은 다른 설계 기법만큼 건설적이지도 않고 창의적이지도 않음

0개의 댓글