SlideShare a Scribd company logo
1 of 20
RECURSION & COMPLEXITY
장효원
WHAT IS ALGORITHM?
 문제에 대한 답을 찾기 위해 계산하는 절차
cf. 자료구조 (자료를 효율적으로 이용하기 위해 저장하는 방법)
 프로그램 = 알고리즘 + 자료구조
 https://www.youtube.com/watch?v=6hfOvs8pY1k
 https://youtu.be/zFenJJtAEzE?t=16m25s
ITERATIONVS RECURSION
 S(n) = 𝑖=1
𝑛
𝑖
 S(n) = 1 + 2 + ··· + n
int S1 (int n) {
int s = 0;
for (i=1; i<=n; i++)
s = s + i;
return s;
}
Main : sum = S1(10);
ITERATIONVS RECURSION
 𝑆(𝑛) =
0 𝑖𝑓 𝑛 ≤ 0
𝑆 𝑛 − 1 + 𝑛 𝑖𝑓 𝑛 > 0
int S2 (int n) {
if (n <= 0) return 0;
return ( S2(n-1) + n);
}
Main : sum = S2(10);
FIBONACCI SEQUENCE
THINK
 Tower of Hanoi http://carstart.tistory.com/20
 https://www.acmicpc.net/problem/2270
 http://yaraba.tistory.com/74
 https://www.acmicpc.net/problem/10872
 https://www.acmicpc.net/problem/1850
 https://www.acmicpc.net/problem/1003
COMPLEXITY
 Space Complexity
고정공간요구, 가변공간요구
저장기술의 발달로 그리 중요하게 여기지 않음
 Time Complexity
컴파일 시간 + 실행 시간
컴파일 시간은 정확히 수행된다는 것이 검증되면 다시 하지 않아도 되므로, 실
행 시간만 염두하면 됨
EXECUTIONTIME
 𝑐 × 𝑛 = 𝑐𝑛
EXECUTIONTIME
 𝑐 × 𝑛 × 𝑛 = 𝑐𝑛2
EXECUTIONTIME
 𝑐0 + 𝑐1 𝑛 + 𝑐2 𝑛2
EXECUTIONTIME
 최악의 경우 실행 시간
 𝑐0 + 𝑐1 + (𝑐2 + 𝑐3)𝑛
TIME COMPLEXITY
 Ο 𝑛 : 알고리즘의 최악의 경우의 성능, 수행 시간의 상한
 Ω 𝑛 : 알고리즘의 최선의 경우의 성능, 수행시간의 하한
 Θ 𝑛 : 알고리즘의 상한과 하한을 동시에 나타냄 (평균)
 𝜊(𝑛): 수행시간의 절대적 상한
 https://en.wikipedia.org/wiki/Big_O_notation#Family_of_Bachmann.E2.80.93La
ndau_notations
Ο 𝑛
 Ο 𝑔(𝑛) = {𝑓 𝑛 : 모든 𝑛 > 𝑛0에 대해, 0 ≤ 𝑓 𝑛 ≤ 𝑐𝑔 𝑛 을 만족하는 양의
상수 𝑐와 𝑛0가 존재한다. }
Ο 𝑛
 알고리즘 분석은 n이 매우 큰 값이므로 𝑛0 아래의 성장률은 고려하지 않음.
 𝑓 𝑛 = 3𝑛 + 8
𝑛 ≥ 8 인 모든 𝑛에 대해 3𝑛 + 8 ≤ 4
3𝑛 + 8 = 𝑂 𝑛 에 관해 𝑐 = 4 이고 𝑛0 = 8
 𝑓 𝑛 = 𝑛2
+ 1
𝑛 ≥ 1 인 모든 𝑛에 대해 𝑛2 + 1 ≤ 2𝑛2
𝑛2 + 1 = 𝑂 𝑛2 에 관해 𝑐 = 1 이고 𝑛0 = 1
 𝑛0와 𝑐가 유일한 집합은 아님.
Ω(𝑛)
 Ω 𝑔(𝑛) = {𝑓 𝑛 : 모든 𝑛 > 𝑛0에 대해, 0 ≤ 𝑐𝑔 𝑛 ≤ 𝑓 𝑛 을 만족하는 양의
상수 𝑐와 𝑛0가 존재한다. }
Ω(𝑛)
 𝑓 𝑛 = 5𝑛2
Ω 𝑛2
= 𝑐𝑛2
≤ 5𝑛2
⇒ 𝑐 = 1, 𝑛0 = 1
Θ(𝑛)
 Θ 𝑔(𝑛) = {𝑓 𝑛 : 모든 𝑛 > 𝑛0에 대해, 0 ≤ 𝑐1 𝑔 𝑛 ≤ 𝑓 𝑛 ≤ 𝑐2 𝑔 𝑛 을
만족하는 양의 상수 𝑐1, 𝑐2와 𝑛0가 존재한다. }
Θ(𝑛)
 𝑓 𝑛 =
𝑛2
2
−
𝑛
2
모든 𝑛 ≥ 1 에 대해
𝑛2
5
≤
𝑛2
2
−
𝑛
2
≤ 𝑛2
𝑛2
2
−
𝑛
2
= Θ n2 에 관해 𝑐1 =
1
5
, 𝑐2 = 1, 𝑛0 = 1
𝜊(𝑛)
 𝜊 𝑔(𝑛) = {𝑓 𝑛 : 모든 𝑛 > 0에 대해, 0 ≤ 𝑓 𝑛 ≤ 𝑐𝑔 𝑛 을 만족하는 양의 상수
𝑐이 존재한다. }
근데
 쓰는 건 거의 Ο 𝑛 라서 이것만 알면 됨

More Related Content

Similar to Recursion & Complexity

1.자료구조와 알고리즘(강의자료)
1.자료구조와 알고리즘(강의자료)1.자료구조와 알고리즘(강의자료)
1.자료구조와 알고리즘(강의자료)
fmbvbfhs
 

Similar to Recursion & Complexity (16)

04. logistic regression ( 로지스틱 회귀 )
04. logistic regression ( 로지스틱 회귀 )04. logistic regression ( 로지스틱 회귀 )
04. logistic regression ( 로지스틱 회귀 )
 
[GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기
[GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기[GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기
[GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기
 
해커에게 전해들은 머신러닝 #3
해커에게 전해들은 머신러닝 #3해커에게 전해들은 머신러닝 #3
해커에게 전해들은 머신러닝 #3
 
Neural network (perceptron)
Neural network (perceptron)Neural network (perceptron)
Neural network (perceptron)
 
03. linear regression
03. linear regression03. linear regression
03. linear regression
 
RLCode와 A3C 쉽고 깊게 이해하기
RLCode와 A3C 쉽고 깊게 이해하기RLCode와 A3C 쉽고 깊게 이해하기
RLCode와 A3C 쉽고 깊게 이해하기
 
Computational Complexity
Computational ComplexityComputational Complexity
Computational Complexity
 
Lecture 2: Supervised Learning
Lecture 2: Supervised LearningLecture 2: Supervised Learning
Lecture 2: Supervised Learning
 
하스켈 성능 튜닝
하스켈 성능 튜닝하스켈 성능 튜닝
하스켈 성능 튜닝
 
퍼시스턴트 세그먼트 트리 - Sogang ICPC Team, 2020 Winter
퍼시스턴트 세그먼트 트리 - Sogang ICPC Team, 2020 Winter퍼시스턴트 세그먼트 트리 - Sogang ICPC Team, 2020 Winter
퍼시스턴트 세그먼트 트리 - Sogang ICPC Team, 2020 Winter
 
Deep Learning from scratch 3장 : neural network
Deep Learning from scratch 3장 : neural networkDeep Learning from scratch 3장 : neural network
Deep Learning from scratch 3장 : neural network
 
1.자료구조와 알고리즘(강의자료)
1.자료구조와 알고리즘(강의자료)1.자료구조와 알고리즘(강의자료)
1.자료구조와 알고리즘(강의자료)
 
선형대수 08. 선형 변환 (Linear Transformation)
선형대수 08. 선형 변환 (Linear Transformation)선형대수 08. 선형 변환 (Linear Transformation)
선형대수 08. 선형 변환 (Linear Transformation)
 
페리 수열(Farey sequence)
페리 수열(Farey sequence)페리 수열(Farey sequence)
페리 수열(Farey sequence)
 
[Probability for machine learning]
[Probability for machine learning][Probability for machine learning]
[Probability for machine learning]
 
세그먼트 트리 느리게 업데이트하기 - Sogang ICPC Team, 2020 Winter
세그먼트 트리 느리게 업데이트하기 - Sogang ICPC Team, 2020 Winter세그먼트 트리 느리게 업데이트하기 - Sogang ICPC Team, 2020 Winter
세그먼트 트리 느리게 업데이트하기 - Sogang ICPC Team, 2020 Winter
 

Recursion & Complexity

  • 2. WHAT IS ALGORITHM?  문제에 대한 답을 찾기 위해 계산하는 절차 cf. 자료구조 (자료를 효율적으로 이용하기 위해 저장하는 방법)  프로그램 = 알고리즘 + 자료구조  https://www.youtube.com/watch?v=6hfOvs8pY1k  https://youtu.be/zFenJJtAEzE?t=16m25s
  • 3. ITERATIONVS RECURSION  S(n) = 𝑖=1 𝑛 𝑖  S(n) = 1 + 2 + ··· + n int S1 (int n) { int s = 0; for (i=1; i<=n; i++) s = s + i; return s; } Main : sum = S1(10);
  • 4. ITERATIONVS RECURSION  𝑆(𝑛) = 0 𝑖𝑓 𝑛 ≤ 0 𝑆 𝑛 − 1 + 𝑛 𝑖𝑓 𝑛 > 0 int S2 (int n) { if (n <= 0) return 0; return ( S2(n-1) + n); } Main : sum = S2(10);
  • 6. THINK  Tower of Hanoi http://carstart.tistory.com/20  https://www.acmicpc.net/problem/2270  http://yaraba.tistory.com/74  https://www.acmicpc.net/problem/10872  https://www.acmicpc.net/problem/1850  https://www.acmicpc.net/problem/1003
  • 7. COMPLEXITY  Space Complexity 고정공간요구, 가변공간요구 저장기술의 발달로 그리 중요하게 여기지 않음  Time Complexity 컴파일 시간 + 실행 시간 컴파일 시간은 정확히 수행된다는 것이 검증되면 다시 하지 않아도 되므로, 실 행 시간만 염두하면 됨
  • 8. EXECUTIONTIME  𝑐 × 𝑛 = 𝑐𝑛
  • 9. EXECUTIONTIME  𝑐 × 𝑛 × 𝑛 = 𝑐𝑛2
  • 10. EXECUTIONTIME  𝑐0 + 𝑐1 𝑛 + 𝑐2 𝑛2
  • 11. EXECUTIONTIME  최악의 경우 실행 시간  𝑐0 + 𝑐1 + (𝑐2 + 𝑐3)𝑛
  • 12. TIME COMPLEXITY  Ο 𝑛 : 알고리즘의 최악의 경우의 성능, 수행 시간의 상한  Ω 𝑛 : 알고리즘의 최선의 경우의 성능, 수행시간의 하한  Θ 𝑛 : 알고리즘의 상한과 하한을 동시에 나타냄 (평균)  𝜊(𝑛): 수행시간의 절대적 상한  https://en.wikipedia.org/wiki/Big_O_notation#Family_of_Bachmann.E2.80.93La ndau_notations
  • 13. Ο 𝑛  Ο 𝑔(𝑛) = {𝑓 𝑛 : 모든 𝑛 > 𝑛0에 대해, 0 ≤ 𝑓 𝑛 ≤ 𝑐𝑔 𝑛 을 만족하는 양의 상수 𝑐와 𝑛0가 존재한다. }
  • 14. Ο 𝑛  알고리즘 분석은 n이 매우 큰 값이므로 𝑛0 아래의 성장률은 고려하지 않음.  𝑓 𝑛 = 3𝑛 + 8 𝑛 ≥ 8 인 모든 𝑛에 대해 3𝑛 + 8 ≤ 4 3𝑛 + 8 = 𝑂 𝑛 에 관해 𝑐 = 4 이고 𝑛0 = 8  𝑓 𝑛 = 𝑛2 + 1 𝑛 ≥ 1 인 모든 𝑛에 대해 𝑛2 + 1 ≤ 2𝑛2 𝑛2 + 1 = 𝑂 𝑛2 에 관해 𝑐 = 1 이고 𝑛0 = 1  𝑛0와 𝑐가 유일한 집합은 아님.
  • 15. Ω(𝑛)  Ω 𝑔(𝑛) = {𝑓 𝑛 : 모든 𝑛 > 𝑛0에 대해, 0 ≤ 𝑐𝑔 𝑛 ≤ 𝑓 𝑛 을 만족하는 양의 상수 𝑐와 𝑛0가 존재한다. }
  • 16. Ω(𝑛)  𝑓 𝑛 = 5𝑛2 Ω 𝑛2 = 𝑐𝑛2 ≤ 5𝑛2 ⇒ 𝑐 = 1, 𝑛0 = 1
  • 17. Θ(𝑛)  Θ 𝑔(𝑛) = {𝑓 𝑛 : 모든 𝑛 > 𝑛0에 대해, 0 ≤ 𝑐1 𝑔 𝑛 ≤ 𝑓 𝑛 ≤ 𝑐2 𝑔 𝑛 을 만족하는 양의 상수 𝑐1, 𝑐2와 𝑛0가 존재한다. }
  • 18. Θ(𝑛)  𝑓 𝑛 = 𝑛2 2 − 𝑛 2 모든 𝑛 ≥ 1 에 대해 𝑛2 5 ≤ 𝑛2 2 − 𝑛 2 ≤ 𝑛2 𝑛2 2 − 𝑛 2 = Θ n2 에 관해 𝑐1 = 1 5 , 𝑐2 = 1, 𝑛0 = 1
  • 19. 𝜊(𝑛)  𝜊 𝑔(𝑛) = {𝑓 𝑛 : 모든 𝑛 > 0에 대해, 0 ≤ 𝑓 𝑛 ≤ 𝑐𝑔 𝑛 을 만족하는 양의 상수 𝑐이 존재한다. }
  • 20. 근데  쓰는 건 거의 Ο 𝑛 라서 이것만 알면 됨