Post

🀍 μ•Œκ³ λ¦¬μ¦˜ - μ‹œκ°„λ³΅μž‘λ„μ™€ κ³΅κ°„λ³΅μž‘λ„κ°€ 높을 경우 μ·¨ν•  수 μžˆλŠ” 일반 μ „λž΅ 3κ°€μ§€ 정도 μ„€λͺ…ν•˜μ‹œμ˜€.

🀍 μ•Œκ³ λ¦¬μ¦˜ - μ‹œκ°„λ³΅μž‘λ„μ™€ κ³΅κ°„λ³΅μž‘λ„κ°€ 높을 경우 μ·¨ν•  수 μžˆλŠ” 일반 μ „λž΅ 3κ°€μ§€ 정도 μ„€λͺ…ν•˜μ‹œμ˜€.

6) μ•Œκ³ λ¦¬μ¦˜ - μ‹œκ°„λ³΅μž‘λ„μ™€ κ³΅κ°„λ³΅μž‘λ„κ°€ 높을 경우 μ·¨ν•  수 μžˆλŠ” 일반 μ „λž΅ 3κ°€μ§€ 정도 μ„€λͺ…ν•˜μ‹œμ˜€.

  • μ‹œκ°„ λ³΅μž‘λ„

    • μ‹œκ°„ λ³΅μž‘λ„μ˜ μˆ˜ν•™μ  μ •μ˜λŠ” λ‹€μŒκ³Ό κ°™λ‹€. 1

    • μ΄λ•Œ f(n)은 λ§Œλ“  μ•Œκ³ λ¦¬μ¦˜μ˜ μ‹€μ œ running time을 μ˜λ―Έν•œλ‹€.

    • μ˜ˆμ‹œλ‘œ

      1 1

    • λ‹€μŒκ³Ό 같이 κ°€μ •ν•œλ‹€λ©΄

      1

    • κ°€ μ„±λ¦½λ˜λŠ” k와 n이 μ‘΄μž¬ν•˜κΈ° λ•Œλ¬Έμ— λ‚΄κ°€ λ§Œλ“  μ•Œκ³ λ¦¬μ¦˜ f(n)은 λΉ…-였 ν‘œκΈ°λ²•μœΌλ‘œ

      1

    • 으둜 λ‚˜νƒ€λ‚Ό 수 μžˆλ‹€.

  • 이것을 λ³Ό λ•Œ μ™œ λΉ…-였λ₯Ό n^2 으둜 μž‘λŠ”μ§€, μ–΄λ–»κ²Œ n^2+2n+3의 μƒν•œμ§€κ°€ 될 수 μžˆμ„κΉŒ 생각할 수 μžˆλ‹€. μ΄μœ λŠ” μ‹œκ°„ λ³΅μž‘λ„κ°€ 점근적 ν‘œκΈ°λ²•μ„ λ”°λ₯΄κΈ° λ•Œλ¬Έμ΄λ‹€. 점근적 ν‘œκΈ°λ²•μ€ n β†’ ∞일 λ•Œμ˜ μ‹œκ°„ λ³΅μž‘λ„λ₯Ό ν‘œν˜„ν•˜λŠ” 방법이닀.

  • μ‹œκ°„ λ³΅μž‘λ„λŠ” 보톡 μ΅œμ•…μ˜ 경우λ₯Ό λ”°μ§€λŠ” λΉ…-였 ν‘œκΈ°λ²•μœΌλ‘œ ν‘œν˜„λœλ‹€. κ·Έλ ‡λ‹€λ©΄ μ΅œμ„ μ˜ κ²½μš°λ„ λ³΅μž‘λ„λ₯Ό λ‚˜νƒ€λ‚Ό 수 μžˆμ§€ μ•Šλ‚˜? λΌλŠ” 의문이 λ“€μ—ˆλ‹€.

    • 예λ₯Ό λ“€μ–΄, 5 4 7 10 1 2 λΌλŠ” 숫자 배열이 μžˆμ„ λ•Œ, 5λΌλŠ” 숫자λ₯Ό 순차 νƒμƒ‰ν•œλ‹€κ³  κ°€μ •ν•˜λ©΄ 첫 번째 νƒμƒ‰μ—μ„œ λ°”λ‘œ 5λ₯Ό 찾게 λœλ‹€. 이게 λ°”λ‘œ μ΅œμ„ μ˜ κ²½μš°μ΄λ‹€.

    • n^2 μ•Œκ³ λ¦¬μ¦˜μ²˜λŸΌ λ³΅μž‘ν•œ μ•Œκ³ λ¦¬μ¦˜λ„ μ΅œμ„ μ˜ κ²½μš°μ—λŠ” νŠΉμ • 값을 ν•œ λ²ˆμ— 찾을 수 μžˆμ–΄ λ³΅μž‘λ„κ°€ O(1)일 수 μžˆλ‹€. ν•˜μ§€λ§Œ μ΅œμ„ μ˜ κ²½μš°λŠ” λͺ¨λ“  μ•Œκ³ λ¦¬μ¦˜μ— λŒ€ν•΄μ„œ μ„±λŠ₯ 차이가 크게 λ‚˜μ§€ μ•ŠκΈ° λ•Œλ¬Έμ— 일반적으둜 비ꡐ가 μ–΄λ ΅λ‹€. κ·Έλž˜μ„œ 보편적으둜 μ΅œμ•…μ˜ 경우λ₯Ό κΈ°μ€€μœΌλ‘œ μ‹œκ°„ λ³΅μž‘λ„λ₯Ό λΉ„κ΅ν•˜λŠ” 것이닀.



μ‹œκ°„λ³΅μž‘λ„κ°€ 높은 경우 μ·¨ν•  수 μžˆλŠ” 일반 μ „λž΅

  • μ½”λ“œ μ΅œμ ν™” : λΆˆν•„μš”ν•œ 연산을 μ œκ±°ν•˜κ±°λ‚˜ 효율적인 μ•Œκ³ λ¦¬μ¦˜μ„ μ„ νƒν•˜λŠ” 것이 μ€‘μš”ν•˜λ‹€. O(n^2) μ•Œκ³ λ¦¬μ¦˜ λŒ€μ‹  O(n log n) μ•Œκ³ λ¦¬μ¦˜μ„ μ‚¬μš©ν•˜λŠ” 것이 큰 차이λ₯Ό λ§Œλ“€ 수 μžˆλ‹€. 이λ₯Ό 톡해 처리 μ‹œκ°„μ„ 쀄이고 μ„±λŠ₯을 ν–₯μƒμ‹œν‚¬ 수 μžˆλ‹€.

  • λ©”λͺ¨μ œμ΄μ…˜ : 이전에 κ³„μ‚°ν•œ κ²°κ³Όλ₯Ό μ €μž₯ν•΄ λΆˆν•„μš”ν•œ 계산을 쀄인닀. 이둜써 λ™μΌν•œ 연산을 λ°˜λ³΅ν•˜μ§€ μ•Šκ²Œ λ˜μ–΄ μ‹œκ°„ λ³΅μž‘λ„λ₯Ό 쀄일 수 μžˆλ‹€. 특히 μž¬κ·€μ μΈ μ•Œκ³ λ¦¬μ¦˜μ—μ„œ 많이 μ‚¬μš©λœλ‹€.

  • 병렬 처리 : μ—¬λŸ¬ 처리 μœ λ‹›μ„ ν™œμš©ν•˜μ—¬ μž‘μ—…μ„ λ™μ‹œμ— μˆ˜ν–‰ν•œλ‹€. 병렬화 κ°€λŠ₯ν•œ μž‘μ—…μ΄λΌλ©΄, μ—¬λŸ¬ μ½”μ–΄λ‚˜ μ“°λ ˆλ“œλ₯Ό ν™œμš©ν•΄ ν•œκΊΌλ²ˆμ— μ²˜λ¦¬ν•  수 있기 λ•Œλ¬Έμ— μž‘μ—… 속도λ₯Ό 크게 κ°œμ„ ν•  수 μžˆλ‹€.



κ³΅κ°„λ³΅μž‘λ„κ°€ 높은 경우 μ·¨ν•  수 μžˆλŠ” 일반 μ „λž΅

  • κ³ μ • 곡간보닀 κ°€λ³€ 곡간을 μ‚¬μš©ν•  수 μžˆλŠ” 자료ꡬ쑰λ₯Ό μ‚¬μš©ν•œλ‹€. ν•„μš”μ— 따라 곡간을 λ™μ μœΌλ‘œ ν• λ‹Ήν•˜λŠ” 자료ꡬ쑰, 예λ₯Ό λ“€μ–΄ μ—°κ²° λ¦¬μŠ€νŠΈλ‚˜ 동적 배열을 μ‚¬μš©ν•˜λ©΄ κ³ μ •λœ 크기의 배열보닀 λ©”λͺ¨λ¦¬λ₯Ό 효율적으둜 μ‚¬μš©ν•  수 μžˆλ‹€.

  • ν•¨μˆ˜ 호좜 μ‹œ μƒμ„±λ˜λŠ” μ§€μ—­ λ³€μˆ˜λ‚˜ λ™μ μœΌλ‘œ ν• λ‹Ήλ˜λŠ” κ°μ²΄λŠ” λͺ¨λ‘ λ©”λͺ¨λ¦¬λ₯Ό μ°¨μ§€ν•˜λ―€λ‘œ, 이런 μžμ› μ‚¬μš©μ„ μ΅œμ†Œν™”ν•˜λŠ” 것이 μ’‹λ‹€. κ°€λŠ₯ν•˜λ©΄ ν•œ λ²ˆμ— ν•„μš”ν•œ 만큼만 λ©”λͺ¨λ¦¬λ₯Ό μ‚¬μš©ν•˜λ„λ‘ μ„€κ³„ν•œλ‹€.

  • μž¬κ·€ ν•¨μˆ˜λŠ” 호좜될 λ•Œλ§ˆλ‹€ μŠ€νƒ λ©”λͺ¨λ¦¬λ₯Ό μ‚¬μš©ν•˜κΈ° λ•Œλ¬Έμ— λ™μΌν•œ λ‘œμ§μ„ 반볡문으둜 κ΅¬ν˜„ν•  수 μžˆλŠ” 경우라면 λ°˜λ³΅λ¬Έμ„ μ‚¬μš©ν•˜λŠ” 것이 더 νš¨μœ¨μ μ΄λ‹€. 특히 κΉŠμ€ μž¬κ·€λŠ” λ©”λͺ¨λ¦¬ λˆ„μˆ˜λ₯Ό μœ λ°œν•  수 μžˆμœΌλ―€λ‘œ μ£Όμ˜ν•΄μ•Ό ν•œλ‹€.

This post is licensed under CC BY 4.0 by the author.