Algorithm Theory

νƒμš•λ²•(Greedy Method)

Meng's Computer 2020. 12. 15. 06:21

πŸ“’  νƒμš•λ²•

  • νƒμš•λ²•(Greedy Method) : 일반적인 μ•Œκ³ λ¦¬μ¦˜ 섀계 기법 κ°€μš΄λ° ν•˜λ‚˜

    πŸ‘‰ ꡬ성(Configuration) : λ‹€μ–‘ν•œ 선택, λͺ¨μŒ, λ˜λŠ” μ°Ύμ•„μ•Ό ν•  κ°’λ“€
    πŸ‘‰ λͺ©ν‘œ(Objective) : ꡬ성에 ν• λ‹Ήλœ μ μˆ˜κ°€ μ‘΄μž¬ν•˜λ©°, 이λ₯Ό μ΅œλŒ€ν™” λ˜λŠ” μ΅œμ†Œν™”ν•΄μ•Ό ν•˜λŠ” 상황

  • νƒμš•μ  선택 속성(Greedy-Choice Property)을 가진 λ¬Έμ œμ— μ μš©ν•  경우 κ°€μž₯ 잘 λ§žλŠ”λ‹€.

    πŸ‘‰ 좜발 κ΅¬μ„±μœΌλ‘œλΆ€ν„° μ‹œμž‘ν•˜μ—¬ 지속적인 지역적 ν–₯상을 톡해, 전체 μ΅œμ ν•΄λ₯Ό 항상 찾을 수 μžˆλ‹€.

  • μ˜ˆμ‹œ

    πŸ‘‰ μž”λˆ 거슀λ₯΄κΈ°
    πŸ‘‰ λΆ€λΆ„ λ°°λ‚­ 문제
    πŸ‘‰ μ΅œμ†Œμ‹ μž₯트리

πŸ“’  μž”λˆ 거슀λ₯΄κΈ° 문제

  • ꡬ성

    πŸ‘‰ κ±°μŠ¬μ•Ό ν•  κΈˆμ•‘ 정보
    πŸ‘‰ μ’…λ₯˜ μ—¬λŸ¬ 개의 동전듀

  • λͺ©ν‘œ

    πŸ‘‰ 동전 수λ₯Ό μ΅œμ†Œν™”

  • νƒμš•ν•΄

    πŸ‘‰ κ°€λŠ₯ν•˜ 항상 제일 큰 λ™μ „μœΌλ‘œ κ±°μŠ¬λŸ¬μ€€λ‹€.

    λ§Œμ•½, 이 λ¬Έμ œκ°€ νƒμš•μ  선택속성을 κ°€μ‘Œλ‹€λ©΄ νƒμš•ν•΄λŠ” μ΅œμ ν•΄κ°€ λœλ‹€.

  • μ˜ˆμ‹œ

    πŸ‘‰ μ˜ˆμ‹œ 1. 동전 μ’…λ₯˜κ°€ 32원, 8원, 1원 인 경우

    νƒμš•μ  선택 속성 : 있음(O) = μ™œλƒλ©΄, 32원 μ΄μƒμ˜ κΈˆμ•‘μ€ 32원을 λΉΌκ³ λŠ” μ΅œμ†Œ 수의 λ™μ „μœΌλ‘œ λ§Œλ“€ μˆ˜κ°€ μ—†κΈ° λ•Œλ¬Έ
    ( 8원을 λ„˜μ§€λ§Œ 32원에 λͺ» λ―ΈμΉ˜λŠ” κΈˆμ•‘μ— λŒ€ν•΄μ„œλ„ λ§ˆμ°¬κ°€μ§€ )

    πŸ‘‰ μ˜ˆμ‹œ 2. 동전 μ’…λ₯˜κ°€ 30원, 20원, 5원, 1원인 경우

    νƒμš•μ  선택 속성 : μ—†μŒ(X) = μ™œλƒλ©΄, 40원은 두 개의 20μ›λ§ŒμœΌλ‘œ λ§Œλ“€ 수 μžˆμœΌλ‚˜, νƒμš•ν•΄λŠ” μ„Έ 개의 동전을 νƒν•˜κΈ° λ•Œλ¬Έμ΄λ‹€. ( 3개의 동전 = 30원 + 5원 + 5원 )

 

πŸ“’  뢀뢄적 λ°°λ‚­ 문제

  • ꡬ성 : N ν•­λͺ©μ˜ 집합 S = 각 ν•­λͺ© iλŠ” λ‹€μŒμ„ 가진닀.

    πŸ‘‰ b(i) : μ–‘μˆ˜μ˜ 이득
    πŸ‘‰ v(i) : μ–‘μˆ˜μ˜ λΆ€ν”Ό

  • λͺ©ν‘œ

    πŸ‘‰ μ΅œλŒ€ λΆ€ν”Ό ν•œλ„ V λ‚΄μ—μ„œ, μ΅œλŒ€μ˜ 총 이득을 μ£ΌλŠ” ν•­λͺ©λ“€μ„ μ„ νƒν•œλ‹€.

  • 뢀뢄적 λ°°λ‚­ 문제(The Fractional Knapsack Problem) : 각 ν•­λͺ©μ˜ μΌλΆ€λ§Œμ„ μ·¨ν•  수 μžˆλŠ” 문제

    πŸ‘‰ x(i)κ°€ ν•­λͺ© iλ₯Ό λœμ–΄ λ‹΄λŠ” 양을 ν‘œμ‹œν•œλ‹€κ³  ν•˜λ©΄
    πŸ‘‰ λͺ©ν‘œ : (i∈S) ∑ b(i) ( x(i) / v(i) )λ₯Ό μ΅œλŒ€ν™”
    πŸ‘‰ μ œμ•½ : (i∈S) ∑ x(i) ≤ V

  • μ˜ˆμ‹œ

    πŸ‘‰ ꡬ성 : n ν•­λͺ©μ˜ 집합 S = 각 ν•­λͺ© iλŠ” λ‹€μŒμ„ 가진닀.

    b(i) : μ–‘μˆ˜μ˜ 이득
    v(i) : μ–‘μˆ˜μ˜ λΆ€ν”Ό

    πŸ‘‰ λͺ©ν‘œ : μ΅œλŒ€ λΆ€ν”Ό ν•œλ„ V λ‚΄μ—μ„œ, μ΅œλŒ€μ˜ 총 이득을 μ£ΌλŠ” ν•­λͺ©λ“€μ„ 선택
ν•­λͺ© A C D E νƒμš•ν•΄(전체배낭 10ml)
이득 32 15 27 5 4 B ( 3ml )
λΆ€ν”Ό 8ml 3ml 9ml 5ml 2ml A ( 7ml )
κ°€μΉ˜ (ml λ‹Ή) 4 5 3 1 2 총이득 = 43 ml
  • μ„€λͺ… : 각 ν•­λͺ©μ˜ μ΅œμ†Œλ‹¨μœ„μΈ 1mlλ‹Ή κ°€μΉ˜λ₯Ό 봀을 λ•Œ, μš°μ„ μ μœΌλ‘œ κ°€μΉ˜κ°€ 높은 BλΆ€ν„° 3ml을 λ‹€ λ‹΄κ³ , λ‚˜λ¨Έμ§€ A 전체 8ml μ—μ„œ 7ml을 담은 것이 κ°€μž₯ 졜적의 이득을 μ·¨ν•  수 μžˆλ‹€.
    이것이 κ°€λŠ₯ν•œ μ΄μœ λŠ”, λΆ€λΆ„μ μœΌλ‘œ, ν•­λͺ©μ„ λ‚˜λˆŒ 수 있기 λ•Œλ¬Έμ΄λ‹€.

πŸ“’  0-1 λ°°λ‚­ 문제

  • 0-1 λ°°λ‚­ 문제 (λ˜λŠ” all-or-nothing knapsack problem) : 각 ν•­λͺ©μ˜ μΌλΆ€λ§Œμ„ μ·¨ν•  μˆ˜λŠ” μ—†λŠ” 문제
  • 0-1 λ°°λ‚­ λ¬Έμ œλŠ” νƒμš•μ  선택 속성을 λ§Œμ‘±ν•˜μ§€ μ•ŠλŠ”λ‹€.
  • 예 : μ΅œμ ν•΄λŠ” 이득 36을 κ°€μ Έλ‹€ μ£ΌλŠ” { A,E }μ§€λ§Œ, νƒμš•ν•΄λŠ” 이득 = 24λ₯Ό κ°€μ Έλ‹€ μ£ΌλŠ” { B,E,D }λ₯Ό κ³ λ₯Έλ‹€.
ν•­λͺ© A C D E νƒμš•ν•΄(전체배낭 10kg)
이득 32 15 27 5 4 B ( 3kg )
무게 8kg 3kg 9kg 5kg 2kg E ( 2kg )
κ°€μΉ˜ (kg λ‹Ή) 4 5 3 1 2 D ( 5kg )
            총 이득 = 24 kg

 

728x90
λ°˜μ‘ν˜•