[μκ³ λ¦¬μ¦] μκ³ λ¦¬μ¦ λΆμ λ°©λ²
π‘ μκ³ λ¦¬μ¦μ λΆμ
μκ³ λ¦¬μ¦μ μ±λ₯μ νκ°νκΈ° μν λΆμμΌλ‘, ν¬κ² μν μκ°(μκ° λ³΅μ‘λ)κ³Ό νμν κΈ°μ΅ μ₯μΉμ μ(κ³΅κ° λ³΅μ‘λ)μΌλ‘ νκ°λλλ°, λλΆλΆμ κ²½μ°μ μν μκ°μ΄ λ μ€μν μλ―Έλ₯Ό μ§λλ€. λ°λΌμ, ν΄λΉ κΈμμλ μκ° λ³΅μ‘λ λΆμμ ν΅ν΄ μ€κ³ν μκ³ λ¦¬μ¦μ΄ μΌλ§λ ν¨μ¨μ μΌλ‘ λ¬Έμ λ₯Ό νμ΄λ΄λκ°μ λν μ§νλ₯Ό μ μνκ³ νλ¨μ κ·Όκ±°λ₯Ό μ μνλ λ°©λ²μ λμ΄νλ€.
μκ° λ³΅μ‘λ λΆμμ΄λ μ λ ₯ν¬κΈ°μ λ°λΌ λ¨μμ°μ°μ΄ λͺ λ² μνλλμ§ κ²°μ νλ μ μ°¨μ΄λ€.
π‘ λΆμ λ°©λ²μ μ’ λ₯
1. μΌμ μκ° (λͺ¨λ κ²½μ°) λΆμ (Every-case analysis)
μ λ ₯ κ°μλ μ’ μλμ§ μμΌλ©°, μ λ ₯ ν¬κΈ°μλ§ μ’ μλμ΄ μλ κ²½μ°μ΄λ€. μ¦, μ λ ₯ κ°μ μκ΄μμ΄ νμ μ°μ°μ μ€ν νμκ° λμΌν κ²½μ°λ₯Ό μλ―Ένλ©°, μλμμμ $T(n)$μ ꡬνλ κ³Όμ μ΄ μκ° λ³΅μ‘λ λΆμμ΄λ€.
μμ1 : ν©κ³ μκ³ λ¦¬μ¦
(1) μ λ ₯ν¬κΈ° : Sλ°°μ΄μ μμ κ°μ
(2) λ¨μμ°μ° : λ°°μ΄μ μμλ₯Ό resultμ λν¨
result = 0
S = [1, 2, 3, 4, 5]
for i in S:
result += i
λ°°μ΄μ κ° μμμ κ°(μ λ ₯ κ°)κ³Όλ 무κ΄νκ² forλ¬Έμ λ°λμ λ°°μ΄μ ν¬κΈ°(μ λ ₯ ν¬κΈ°)λ§νΌ μ€νλλ€.
λ°λΌμ, λ¨μ μ°μ°μ μ΄ νμ(μκ°λ³΅μ‘λ)λ $T(n) = n$
μμ2 : κ΅νμ λ ¬ μκ³ λ¦¬μ¦
(1) μ λ ₯ν¬κΈ° : λ°°μ΄μ μμ κ°μ ($len(S)$)
(2) λ¨μμ°μ° : $S[j] < S[i]$ λΉκ΅ (쑰건문)
for i in range(len(S)):
for j in range(i + 1, len(S)):
if S[j] < S[i]:
S[i], S[j] = S[j], S[i]
μ λ ₯ κ°μ μκ΄μμ΄ μ λ ₯ ν¬κΈ°(λ°°μ΄μ ν¬κΈ°)λ§νΌ κ°μ λΉκ΅κ° μΌμ΄λκΈ° λλ¬Έμ μΌμ μκ° λΆμμ μ€νν μ μλ€.
λ°λΌμ, μΌμ μκ° λΆμ κ²°κ³Ό 쑰건문μ μ΄ μννμλ
$$T(n) = (n - 1) + (n - 2) + ... + 1 = \frac {(n - 1) n} {2}$$
$i = 0$μΌ λ, λΉκ΅νμλ $n - 1$λ²
$i = 1$μΌ λ, λΉκ΅νμλ $n - 2$λ²
$...$
2. μ΅μ μ κ²½μ° λΆμ (Worst-case analysis)
μ λ ₯ κ°κ³Ό μ λ ₯ ν¬κΈ° λͺ¨λμ μ’ μλμ΄ μλ κ²½μ°λ‘, λ¨μμ°μ°μ΄ μνλλ νμκ° μ΅λμΈ κ²½μ°λ₯Ό μ ννλ λΆμλ°©λ²μ΄λ€.
μμ : μμ°¨κ²μ μκ³ λ¦¬μ¦
(1) μ λ ₯ν¬κΈ° : λ°°μ΄μ μμ κ°μ ($len(S)$)
(2) λ¨μμ°μ° : λ°°μ΄μ κ° κ°κ³Ό x(μ°Ύκ³ μ νλ κ°)κ°μ λΉκ΅
x = 4
S = [1, 2, 3, 4, 5]
cnt = 0
for i in S:
if i == x:
break;
cnt += 1
λ°°μ΄μ ν¬κΈ°κ° nμ΄λΌκ³ ν λ, xμ ν΄λΉνλ κ°μ΄ λ°°μ΄μ 맨 λ§μ§λ§μ μμΉνκ±°λ xκ° λ°°μ΄μ μλ κ²½μ° forλ¬Έμ΄ nλ§νΌ μ€νλλ€. μ¦, λ¨μμ°μ°μ΄ nλ² μνλκ³ μ΄μ λ°λΌ μ΅μ μ κ²½μ° λΆμμ μκ° λ³΅μ‘λλ $W(n) = n$μ΄λ€.
μ°Έκ³ λ‘, μμ°¨ κ²μμ κ²½μ° μ λ ₯λ λ°°μ΄μ κ°μ λ°λΌ κ²μνλ νμκ° λ¬λΌμ§κΈ° λλ¬Έμ μ λ ₯ κ°μ μ’ μλμ§ μλλ€λ λͺ¨λ κ²½μ° λΆμμ 쑰건μ λ§μ‘±νμ§ λͺ»νκ² λλ©° μ΄μ λ°λΌ λͺ¨λ κ²½μ° λΆμμ λΆκ°λ₯νλ€.
3. νκ· μ κ²½μ° λΆμ (Average-case analysis)
μ λ ₯ κ°κ³Ό μ λ ₯ ν¬κΈ° λͺ¨λμ μ’ μλμ΄ μλ κ²½μ°λ‘, λͺ¨λ μ λ ₯μ λν΄ λ¨μμ°μ°μ΄ μνλλ νκ· νμ(κΈ°λμΉ)λ₯Ό μλ―Ένλ€. κ° μ λ ₯μ λν΄ νλ₯ ν λΉμ΄ κ°λ₯νλ©°, μ΅μ μ κ²½μ°λ³΄λ€λ κ³μ°μ΄ 볡μ‘ν κ²μ΄ νΉμ§μ΄λ€.
μμ : μμ°¨κ²μ μκ³ λ¦¬μ¦
(1) μ λ ₯ν¬κΈ° : λ°°μ΄μ μμ κ°μ ($len(S) = n$)
(2) λ¨μμ°μ° : λ°°μ΄μ κ° κ°κ³Ό x(μ°Ύκ³ μ νλ κ°)κ°μ λΉκ΅
(3) κ° μ : λ°°μ΄μ μμ΄ν μ λͺ¨λ λ€λ₯΄λ€
x = 4
S = [1, 2, 3, 4, 5]
cnt = 0
for i in S:
if i == x:
break;
cnt += 1
1) Case 1 : xκ° λ°°μ΄ μμ μλ κ²½μ°
$$ A(n) = \sum_{k=1}^n k \times \frac {1} {n} = \frac {n + 1} {2} $$
- $1 \leq k leq n$ μ λν΄ $x$κ° λ°°μ΄μ $k$λ²μ§Έμ μμ νλ₯ $= \frac {1} {n}$
- $x$κ° λ°°μ΄μ $k$λ²μ§Έμ μμ λ, μ΄λ₯Ό μ°ΎκΈ° μν΄ μννλ λ¨μμ°μ° νμ $= k$
2) Case 2 : xκ° λ°°μ΄ μμ μλ κ²½μ°λ₯Ό κ³ λ €
$$ A(n) = \sum_{k=1}^n (k \times \frac {p} {n}) + n(1-p) = n(1 - \frac {p} {2}) + \frac {p} {2} $$
- $x$κ° λ°°μ΄ $S$ μμ μμ νλ₯ = $p$
- $1 \leq k \leq n$ μ λν΄ $x$κ° λ°°μ΄μ $k$λ²μ§Έμ μμ νλ₯ $ = \frac {p} {n}$
- $x$κ° λ°°μ΄μ μμ νλ₯ = $1 - p$
- $x$κ° λ°°μ΄μ $k$λ²μ§Έμ μμ λ, μ΄λ₯Ό μ°ΎκΈ° μν΄ μννλ λ¨μμ°μ° νμ $= k$
4. μ΅μ μ κ²½μ° λΆμ (Best-case analysis)
μ λ ₯ κ°κ³Ό μ λ ₯ ν¬κΈ° λͺ¨λμ μ’ μλμ΄ μλ κ²½μ°λ‘, λͺ¨λ μ λ ₯μ λν΄ λ¨μμ°μ°μ΄ μνλλ νμκ° μ΅μμΈ κ²½μ°λ₯Ό μ ννλ λ°©λ²μ΄λ€.
μμ : μμ°¨κ²μ μκ³ λ¦¬μ¦
(1) μ λ ₯ν¬κΈ° : λ°°μ΄μ μμ κ°μ ($len(S) = n$)
(2) λ¨μμ°μ° : λ°°μ΄μ κ° κ°κ³Ό x(μ°Ύκ³ μ νλ κ°)κ°μ λΉκ΅
x = 4
S = [1, 2, 3, 4, 5]
cnt = 0
for i in S:
if i == x:
break;
cnt += 1
μ°ΎμΌλ €λ κ°($x$)μ΄ λ°°μ΄μ κ°μ₯ μμ μ‘΄μ¬ν λ, μ λ ₯μ ν¬κΈ°μ μκ΄μμ΄ λ¨μμ°μ°μ΄ ν λ²λ§ μνλλ€.
λ°λΌμ, $B(n) = 1$