알고리즘 문제 풀이/알고리즘 이론 공부

2장 Divide and conquer

2023. 7. 30. 16:22
목차
  1. 3-basic step
  2. binary search = sorted input
  3. recurrence relation Master Theorem
  4. merge sort - every time complexity = not sorted input
  5. quicksort = not sorted input, not every case
  6. multiplication of Tow large integer
  7. multiplication two large matrix

chap2. Divide and conquer

  • problem을 subproblem으로 나누어 따로 풀고 합치는 방식. = top→ down approach

3-basic step

  1. Divide
  2. conquer(solve subP)
  3. if necessary combine

binary search = sorted input

= T(n) = T(n/2) -> time complexity = logn

every time complexity

recurrence relation Master Theorem

재귀방식에 적용 가능한 time complexity 구하는 법

  • 재귀함수가 몇번 불렸는지(a) 몇 개로 나누어 푸는지(b)를 구하고, 함수 T(n)의 재귀 외의 나머지 함수에 대해서 n^d 형태로 만들어 d를 구한다. 그 후 위 공식에 대입.

merge sort - every time complexity = not sorted input

  • mergesort 함수와 merge함수가 있고, 배열을 둘로 나누어 mergesort를 한 후 두 배열을 merge해주는 형태.
  • basic operation= n>1 을 만족할 때까지 Mergesort가 재귀적으로 불리는 operation
  • time complexity = T(n) = 2T(n/2)+f(n)
  • f(n) = division(n) + merge(n) = 1 +n-1 =n
  • a=2 b=2 , d=1(f(n)= n 이 n의 1승이라 1 임.) → nlogn
  • merging 이 linear time (n번)안에 해결되고, mergesort로 분할하는 division과정이 logn만큼 걸려서 저런 complexity가 나옴.
  • 입력배열의 크기만큼 메모리를 추가 사용한다는 단점이 있긴 함.

quicksort = not sorted input, not every case

  • 선택된 값 pivot 값을 기준으로 왼쪽과 오른쪽으로 divide 한다.
  • spliting position인 pivot 값에 따라 complexity가 달라진다.
  • partition을 정하는 함수로 배열을 찢고 찢어진 두 배열에 대해 재귀적으로 quicksort 함수반복 실행하는 형태

partition function1. lomutopartitioning

partition function2. Hoare’s partitioning

  • basic operation = partition부분의 배열값과 pivot값의 비교연산
  • best case = balanced partition = T(n) = 2T(n/2) +n for n>1 T(1)=0 -> nlogn
  • worst case = 이미 정렬된 것 T(n)= n+1 +n+n-1+..+3 = n^2
  • average case = nlogn
  • 즉 quick sort가 효율이 좋으려면 적당한 pivot값 선택이 필요하다.
  • 이를 해결하기 위해 처음 중간 끝의 값 중 중앙값을 pivot으로 선택하거나 random선택하는 방법이 존재한다.
  • 문제점 = 둘 다 추가 저장장소가 필요.

multiplication of Tow large integer

time complexity = M(n) = 3M(n/2), for n>1 , M(1)=1 n^(log_2(3) ~= 1.585)

multiplication two large matrix

time complexity 계산

'알고리즘 문제 풀이 > 알고리즘 이론 공부' 카테고리의 다른 글

4장 Greedy Algorithm  (0) 2023.07.30
3장 Dynamic Programming  (1) 2023.07.30
1장 algorithm efficiency  (0) 2023.07.30
델타 탐색 이론 정리  (1) 2023.07.30
BFS 이론 정리  (0) 2023.07.29
  1. 3-basic step
  2. binary search = sorted input
  3. recurrence relation Master Theorem
  4. merge sort - every time complexity = not sorted input
  5. quicksort = not sorted input, not every case
  6. multiplication of Tow large integer
  7. multiplication two large matrix
'알고리즘 문제 풀이/알고리즘 이론 공부' 카테고리의 다른 글
  • 4장 Greedy Algorithm
  • 3장 Dynamic Programming
  • 1장 algorithm efficiency
  • 델타 탐색 이론 정리
잘잔디
잘잔디
4학년이 되고 취업 준비를 위해 2023-01-01부터 공부한 내용을 정리한 블로그입니다.
잘잔디
MBCS 공부일지
잘잔디
전체
오늘
어제
  • 분류 전체보기 (217)
    • 파이썬 (28)
      • 파이썬 이론 (8)
      • NumPy (3)
      • Pandas (6)
      • 파이썬 시각화 (8)
      • 응용 (2)
    • Java (3)
    • Back (38)
      • DataBase이론 (12)
      • MySQL (2)
      • JSP (8)
      • JSTL (2)
      • Spring (0)
      • Django (8)
      • MongoDB (6)
      • FastAPI (0)
    • Front (8)
      • HTML (3)
      • CSS (2)
      • JS (1)
    • 회고록 (10)
    • 알고리즘 문제 풀이 (95)
      • 알고리즘 이론 공부 (14)
      • 프로그래머스 (69)
      • 백준 (12)
    • 머신러닝 (0)
    • 딥러닝 (0)
    • Git (3)
    • R 프로그래밍 (3)
    • 빅데이터 관리 (16)
      • 리눅스 (4)
      • Hadoop (12)
    • AWS (2)
    • 일상 (10)
      • 책 리뷰 (5)
      • TOEIC (2)
      • 자잘하게 공부한 것들 (2)
    • 사이버보안 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 독산역
  • 골드
  • 객체지향
  • 즐거웠다
  • web
  • 백준
  • Database
  • backend
  • git
  • JavaScript
  • db
  • Encore
  • Java
  • playdata
  • CSS
  • HTML
  • JS
  • 이중우선순위 큐
  • OOP

최근 댓글

최근 글

hELLO · Designed By 정상우.
잘잔디
2장 Divide and conquer
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.