Asymptotisches Wachstum und Laufzeitanalyse
점근적 성장과 반복문 실행시간
중요한 독일어·영어 용어는 유지하되 설명과 학습 동선은 한국어 중심으로 제공합니다.
이 챕터의 문항별 독립 학습 페이지
단원 페이지에는 개요와 학습 순서만 둡니다. 각 문항의 용어·비유·수식·단계별 풀이·실제 채점은 아래 독립 페이지에서 이어집니다.
I-1 · 1개 선택
다음 함수들을 증가하는 복잡도 순서로 배열하시오:\(f_{1}(n)=n \log n\)
독립 개념 강의와 실제 채점 열기 →f₁(n)=n log n\(f_{2}(n)=n^{2}\)f₂(n)=n²\(f_{3}(n)=2^{n}\)f₃(n)=2ⁿ\(f_{4}(n)=n^{\log n}.\)f₄(n)=n^(log n).II-2 · 2개 선택
f를 다음 알고리즘 Alg(n)의 실행시간이라고 하자: \(c=0\)
독립 개념 강의와 실제 채점 열기 →c=0; \(i=1\)i=1부터 n까지 반복하고, 매번 \(j=1\)j=1에서 시작하여 \(j<i\)j<i동안 j를 2*j로 바꾸고 c에 j를 더한다.
30초 핵심 요약
점근 표기(asymptotic notation)는 작은 n의 실제 초수가 아니라 n이 충분히 커진 뒤 어떤 항이 성장을 지배하는지를 본다. O는 위에서 누르는 upper bound, Ω는 아래에서 받치는 lower bound, Θ는 둘 다 맞는 tight bound다. I-1의 성장 순서는 \(n \log n < n^{2} < n^{\log n} < 2^{n}. \text{II}-2\)n log n < n² < n^(log n) < 2ⁿ. II-2는 각 i에서 while이 \(\Theta(\log i)\)Θ(log i)번 돌기 때문에 전체가 \(\sum \log i = \Theta(n \log n)\)Σ log i = Θ(n log n)이고, 그래서 \(O(n^{2})\)O(n²)도 참이다.
k가 고정 상수이고 \(c>1\)c>1일 때 성장 순서는 \(\log n < n < n \log n < n^{2} < n^{k} < n^{\log n} < c^{n}\)log n < n < n log n < n² < nᵏ < n^(log n) < cⁿ이다. 또한 \(\sum_{i=1}^n \log i = \log(n!) = \Theta(n \log n)\)Σ[i=1]ⁿ log i = log(n!) = Θ(n log n)이다.
보기의 'in \(O(...)\)O(...)'와 'in \(\Theta(...)\)Θ(...)'를 같은 말로 읽으면 틀린다. \(O(n^{2})\)O(n²)는 느슨한 upper bound로 참일 수 있지만 \(\Theta(n^{2})\)Θ(n²)는 tight해야 한다.
시험 연결
- I-1
- II-2
I부에서는 정답을 정확히 1개, II부에서는 정확히 2개 골라야 한다.
정답 순서를 외우는 것이 아니라 각 보기를 독립적인 true/false claim으로 바꾸고, O와 Θ의 의미를 분리해서 판단하게 한다.
시험 복기 자료(Gedächtnisprotokoll)는 문항 표현을 복원한 자료일 뿐 공식 정답지가 아니다. 각 판정은 현재 2026년 여름학기 강의와 연습문제 2(Sheet02)를 기준으로 확인했다.
현재 강의는 \(f \in O(g)\)f ∈ O(g)를 집합 포함 관계로 명시한다. 이 관례에서는 실행시간이 \(\Theta(n \log n)\)Θ(n log n)일 때 \(O(n^{2})\)O(n²)도 느슨한 상한(upper bound)으로 참이다.
먼저 알아야 할 용어와 전제
- 란다우 기호(Landau symbols):\(O\)
O\(\Omega\)Ω\(\Theta\)Θ\(o\)o - 상수배와 낮은 차수 항은 점근적 성장급을 바꾸지 않는다는 사실
- 고정된 로그 밑은 Θ 관점에서 상수배 차이만 만든다는 사실
- O는 upper bound이고 Θ는 upper bound와 lower bound가 동시에 맞는 tight bound라는 구분
- 반복문 실행시간은 문법상 중첩 깊이가 아니라 실제 반복 횟수의 합으로 계산한다
개념 강의
점근 분석은 알고리즘의 속도를 작은 입력에서 실험한 값으로 재는 것이 아니라, 입력 크기 n이 커질수록 어떤 항이 결국 지배하는지를 보는 언어다. 예를 들어 \(2n^{2}+3n+4\)2n²+3n+4에서는 \(n^{2}\)n²항이 지배하고 상수 2, 낮은 차수 3n, 상수항 4는 성장급을 바꾸지 않는다. 따라서 가장 제한적인 표기(restriktivste Notation)는 \(\Theta(n^{2})\)Θ(n²)다. 반대로 \(O(n^{3})\)O(n³)도 참이지만 시험에서 tight한 답을 묻는 상황에서는 너무 느슨하다.
\(f \in O(g)\)f ∈ O(g)는 충분히 큰 n에서 \(f(n) \le c g(n)\)f(n) ≤ c g(n)가 되는 upper bound다. \(f \in \Omega(g)\)f ∈ Ω(g)는 충분히 큰 n에서 \(c g(n) \le f(n)\)c g(n) ≤ f(n)가 되는 lower bound다. \(f \in \Theta(g)\)f ∈ Θ(g)는 두 조건이 동시에 성립하는 tight bound다. little-o는 \(f(n)/g(n) \to 0\)f(n)/g(n) → 0인 strictly smaller growth를 뜻한다.
- \(a,b>1\)
a,b>1이 고정된 로그 밑이면 \(\log_{a} n = \Theta(\log_{b} n)\)log_a n = Θ(log_b n)이다. - \(\Theta(g)\)
Θ(g)는 \(O(g)\)O(g)와 \(\Omega(g)\)Ω(g)의 교집합이다:\(\Theta(g) = O(g) ∩ \Omega(g).\)Θ(g) = O(g) ∩ Ω(g). - \(f \in O(g)\)
f ∈ O(g)라는 사실만으로는 \(f \in \Theta(g)\)f ∈ Θ(g)를 결론낼 수 없다. - 로그 밑이 2일 때 \(n^{\log n} = 2^{(\log_{2} n)^{2}}\)
n^(log n) = 2^((log₂ n)²)로 바꿔 쓸 수 있다.
II-2의 while loop에서 k번 update한 뒤에는 \(j=2^{k}\)j=2ᵏ다. \(j<i\)j<i조건이 깨지는 최초 k는 \(\text{ceil}(\log_{2} i)\)ceil(log₂ i)근처이므로 i번째 outer iteration의 inner iteration 수는 \(\Theta(\log i)\)Θ(log i)다.
전체 실행시간은 \(\sum_{i=1}^n \Theta(\log i) = \Theta(\log(n!)) = \Theta(n \log n)\)Σ[i=1]ⁿ Θ(log i) = Θ(log(n!)) = Θ(n log n)이다. 따라서 \(f(n) \in O(n^{2})\)f(n) ∈ O(n²)와 \(f(n) \in \Theta(n \log n)\)f(n) ∈ Θ(n log n)은 참이고, \(f(n) \in O(n)\)f(n) ∈ O(n)과 \(f(n) \in \Theta(n^{2})\)f(n) ∈ Θ(n²)는 거짓이다. 변수 c, i, j만 보면 추가 공간은 \(O(1)\)O(1)이다.
로그 밑이 고정 상수이면 Θ-class는 바뀌지 않는다. \(n^{\log n}\)n^(log n)은 모든 고정 차수 다항식보다 빠르게 자라지만 \(2^{n}\)2ⁿ같은 고정 밑 지수함수보다는 느리다. 작은 n에서 우연히 값이 뒤집혀도 점근 비교는 충분히 큰 n 이후만 본다.
- genau eine
- genau zwei
- in O
- \(\text{in} \Theta\)
in Θ - restriktivste Notation
- konstante Faktoren
- Eingabelänge
- worst case
- \(\text{while} j < i\)
while j < i - \(j = 2 \cdot j\)
j = 2 * j
증가율·반복문 실행시간 실험실
다음 상태를 먼저 예측한 뒤 한 단계 실행하여 확인하세요.
새 문장 판별 체크리스트
- 먼저 selection rule을 표시한다: I-1은 \(\text{exactly}_{\text{one}}, \text{II}-2\)
exactly(one), II-2는 \(\text{exactly}_{\text{two}}\)exactly(two)다. - 각 보기를 독립적인 명제로 바꾸고 true/false를 따로 판정한다.
- O, Ω, Θ의 방향을 확인한다. O는 느슨한 upper bound도 허용한다.
- 성장률은 \(\log < \text{polynomial} < n^{\log n} < \text{fixed}-\text{base} \text{exponential}\)
log < polynomial < n^(log n) < fixed-base exponential순서로 정리한다. - 중첩 반복문은 모양만 보고 \(n^{2}\)
n²로 찍지 말고, inner update가 +1인지 곱하기 2인지 먼저 본다. - 거짓 보기에는 가장 작은 반례 또는 최소 수정 문장을 붙인다.
능동 회상
- \(O(g)\)
O(g), \(\Omega(g)\)Ω(g), \(\Theta(g)\)Θ(g)를 각각 한 문장으로 말하라. — O는 충분히 큰 n에서의 upper bound, Ω는 lower bound, Θ는 두 방향이 동시에 맞는 tight bound다. - 왜 \(n \log n \in O(n^{2})\)
n log n ∈ O(n²)이지만 n log n ∉ \(\Theta(n^{2})\)Θ(n²)인가. — \(\log n \le n\)log n ≤ n이라 upper bound는 맞지만, \((n \log n)/n^{2} = \log n/n \to 0\)(n log n)/n² = log n/n → 0이라 quadratic lower bound가 없다. - \(j=1\)
j=1에서 시작해 매번 \(j=2\cdot j\)j=2*j를 수행하고 \(j<i\)j<i동안 반복하면 몇 번 도는가. — \(\Theta(\log i)\)Θ(log i)번 돈다. k번 update 후 \(j=2^{k}\)j=2ᵏ이고 \(2^{k} \ge i\)2ᵏ ≥ i가 되면 멈춘다. - \(\sum_{i=1}^n \log i\)
Σ[i=1]ⁿ log i의 tight bound는 무엇인가. — \(\Theta(n \log n)\)Θ(n log n)이다. 이 합은 log(n!)이고, 뒤쪽 절반 항으로 lower bound를 보일 수 있다. - \(n^{2}, n^{\log n}, 2^{n}\)
n², n^(log n), 2ⁿ의 점근 순서를 말하라. — 충분히 큰 n에서 \(n^{2} < n^{\log n} < 2^{n}\)n² < n^(log n) < 2ⁿ이다.
구두시험 질문
- II-2 알고리즘의 실행시간을 처음부터 유도하라. 먼저 각 i에서 while이 몇 번 도는지 말하라.
- O와 Θ의 차이를 반례 하나로 설명하라.
- I-1에서 \(n^{\log n}\)
n^(log n)이 \(n^{2}\)n²보다 크고 \(2^{n}\)2ⁿ보다 작은 이유를 설명하라.
시험 직전 요약
O는 위, Ω는 아래, Θ는 양쪽. O가 참이라고 tight하다는 뜻은 아니다.
II-2에서는 각 i마다 while 반복 횟수가 \(\Theta(\log i)\)Θ(log i)이고, 전체 합은 \(\Theta(n \log n)\)Θ(n log n)이다. 따라서 \(O(n^{2})\)O(n²)와 \(\Theta(n \log n)\)Θ(n log n)이 모두 참이다.
작은 n의 값은 점근 판정에서 결정적이지 않다. log base is fixed라는 조건은 비율이 상수배라는 뜻이다.
성장 순서는 ladder로, loop runtime은 합으로, MC 보기는 독립 true/false로 처리한다.
출처
- 출처 파일: AuD Gedächtnisprotokoll SoSe 2025.md; 근거 페이지·구간: Multiple Choice I.1 and II.2; 뒷받침하는 내용: SoSe 2025 복기 문항 I-1과 II-2의 문제 문장, 선택지, 섹션 규칙, 의사코드를 뒷받침한다.; 검증 상태: reconstructed; 자료의 역할: reconstructed_exam; 추출 품질: \(\text{clean}_{\text{text}}\)
clean(text) - 출처 파일: Vorlesung\02Sorting_updated.pdf; 근거 페이지·구간: pp. 25-30; data/aud_chunks.jsonl lines 196-197; 뒷받침하는 내용: 실행시간 분석은 입력 크기의 함수로 실제 실행 단계 수를 세며, 일반적인 계산 모델에서는 기본 연산을 상수 시간으로 취급한다는 내용을 뒷받침한다.; 검증 상태: verified; 자료의 역할: current_lecture; 추출 품질: \(\text{clean}_{\text{text}}\)
clean(text) - 출처 파일: Vorlesung\02Sorting_updated.pdf; 근거 페이지·구간: pp. 31-41; data/aud_chunks.jsonl lines 198-201; 뒷받침하는 내용: 지배항으로 식을 단순화하는 방법과 상수 및 n0를 사용한 Θ, O, Ω의 형식적 정의를 뒷받침한다.; 검증 상태: verified; 자료의 역할: current_lecture; 추출 품질: \(\text{clean}_{\text{text}}\)
clean(text) - 출처 파일: Vorlesung\02Sorting_updated.pdf; 근거 페이지·구간: pp. 46-49; data/aud_chunks.jsonl lines 203-204; 뒷받침하는 내용: O와 Ω는 각각 상한과 하한의 집합이고, \(\Theta(g)\)
Θ(g)는 \(O(g)\)O(g)와 \(\Omega(g)\)Ω(g)가 모두 성립할 때 정확히 성립하며, 더 느슨한 O 상한도 참일 수 있다는 내용을 뒷받침한다.; 검증 상태: verified; 자료의 역할: current_lecture; 추출 품질: \(\text{clean}_{\text{text}}\)clean(text) - 출처 파일: Übung\AuD26_Sheet02.pdf; 근거 페이지·구간: pp. 1-3; data/aud_chunks.jsonl line 15; 뒷받침하는 내용: 공식 연습문제가 점근 표기, 상수와 낮은 차수 항의 생략, 성장률 비교, 란다우 규칙을 연습한다는 점을 뒷받침한다.; 검증 상태: verified; 자료의 역할: exercise_sheet; 추출 품질: \(\text{clean}_{\text{text}}\)
clean(text) - 출처 파일: Übung\AuD26_Sheet02-Sol.pdf; 근거 페이지·구간: pp. 1-6; data/aud_chunks.jsonl lines 13-14; 뒷받침하는 내용: 공식 해설이 O, Ω, Θ, 작은 o의 정의와 집합 규칙, 성장률 표, \(\log(n!) \in \Theta(n \log n)\)
log(n!) ∈ Θ(n log n)을 확인한다.; 검증 상태: verified; 자료의 역할: official_solution; 추출 품질: \(\text{clean}_{\text{text}}\)clean(text)
AI 후속 학습 프롬프트
마지막 생성: 2026-08-03 03:24