SlideShare une entreprise Scribd logo
1  sur  10
Télécharger pour lire hors ligne
Жадный алгоритм для «Рюкзака»
 с гарантированной точностью 2

     Н.Н. Кузюрин   С.А. Фомин



         10 октября 2008 г.




                                 1 / 10
Приближенный алгоритм с гарантированной точностью

Определение
Алгоритм называется C -приближенным, если при любых исходных
данных он находит допустимое решение со значением целевой
функции, отличающимся от оптимума не более чем в C раз.




                                                       2 / 10
Задача
«0–1 Рюкзак (Knapsack)»
Даны:
c1 , . . . , cn , cj ∈ N — «стоимости» предметов;
a1 , . . . , an , aj ∈ N — «размеры» или «веса»;
     B ∈ N — «размер рюкзака».
Найти максимальное значение f ∗ целевой функции
                                     n
                              f ≡         ci xi → max
                                    i=1

с ограничением на размер «рюкзака»:
                         n
                              ai xi ≤ B,     xi ∈ {0, 1}.
                        i=1


                                                            3 / 10
Тривиально-жадный алгоритм для «Рюкзака»
                                                ci
  Отсортировать предметы в порядке убывания     ai .
  A←0
  for all i ∈ {1..n} do
     if A + ai ≤ B then
        A ← A + ai
        xi ← 1
     else
        xi ← 0
     end if
  end for
  return {x1 , . . . , xn }

Упражнение
Докажите, что ∀k > 1, ∃{ci , ai }, B для которых алгоритм выберет
набор в k раз хуже оптимального.

                                                              4 / 10
Тривиально-жадный алгоритм для «Рюкзака»
                                                ci
  Отсортировать предметы в порядке убывания     ai .
  A←0
  for all i ∈ {1..n} do
     if A + ai ≤ B then
        A ← A + ai
        xi ← 1
     else
        xi ← 0
     end if
  end for
  return {x1 , . . . , xn }

Упражнение
Докажите, что ∀k > 1, ∃{ci , ai }, B для которых алгоритм выберет
набор в k раз хуже оптимального.

                                                              5 / 10
«Жадный-2» для «Рюкзака»

                                                        Вес рюкзака B= 10 кг

                                                        Входной массив   T <= [(3, 6), (4, 3), (5, 2), (6, 5), (7, 5), (8, 1)]

                                                        Отсортированный T => [(8, 1), (5, 2), (7, 5), (4, 3), (6, 5), (3, 6)]
def KnapsackGreedy (T , B) :
                                                         Берем предмет: <= ($8 , 1 кг)
    T .sort (SortByConsumerAppeal)
                                                         Берем предмет: <= ($5 , 2 кг)
    Cmax ← Cg ← Ag ← 0                                   Берем предмет: <= ($7 , 5 кг)

    for (c, a) ∈ T :                                    Cg=$20 или Cmax=$8 ?

                                                        Набран рюкзак стоимостью   $20
        Cmax ← max (c, Cmax)

        if Ag + a ≤ B :        # если лезет в рюкзак
                                                        Вес рюкзака B= 100 кг
             Ag ← Ag + a       # Берем предмет (c, a)   Входной массив   T <= [(10, 1), (150, 100), (50, 40), (40, 20)]

             Cg ← Cg + c                                Отсортированный T => [(10, 1), (40, 20), (150, 100), (50, 40)]

                                                         Берем предмет: <= ($10 , 1 кг)
    return max (Cg, Cmax)      # выбираем что больше
                                                         Берем предмет: <= ($40 , 20 кг)

                                                         Берем предмет: <= ($50 , 40 кг)

                                                        Cg=$100 или Cmax=$150 ?

                                                        Набран рюкзак стоимостью   $150




                                                                                                            6 / 10
Точность «Жадного-2» не меньше 2




        Sg
                    ˜
                    Sg                          ˜
                                                Sg


                  Cg =          ci ,   ˜
                                       Cg =          ci
                         i∈Sg                   ˜
                                              i∈Sg

                                             ˜
                                 Cg + cmax ≥ Cg           ≥ f∗
          2fG ≡ 2 max(Cg , cmax ) ≥ Cg + cmax             ≥ f∗

                                                                 7 / 10
Точность «Жадного-2» не меньше 2




        Sg
                    ˜
                    Sg                          ˜
                                                Sg


                  Cg =          ci ,   ˜
                                       Cg =          ci
                         i∈Sg                   ˜
                                              i∈Sg

                                             ˜
                                 Cg + cmax ≥ Cg           ≥ f∗
          2fG ≡ 2 max(Cg , cmax ) ≥ Cg + cmax             ≥ f∗

                                                                 8 / 10
Точность «Жадного-2» не меньше 2




        Sg
                    ˜
                    Sg                          ˜
                                                Sg


                  Cg =          ci ,   ˜
                                       Cg =          ci
                         i∈Sg                   ˜
                                              i∈Sg

                                             ˜
                                 Cg + cmax ≥ Cg           ≥ f∗
          2fG ≡ 2 max(Cg , cmax ) ≥ Cg + cmax             ≥ f∗

                                                                 9 / 10
Интернет поддержка курса




http://discopal.ispras.ru/
Вопросы?



                           10 / 10

Contenu connexe

Tendances

קיץ א 2007 005
קיץ א 2007 005קיץ א 2007 005
קיץ א 2007 005bagrutonline
 
2006 קיץ ב 005
2006 קיץ ב 0052006 קיץ ב 005
2006 קיץ ב 005bagrutonline
 
0 5-r vrzvvleh tsetsegee
0 5-r vrzvvleh  tsetsegee0 5-r vrzvvleh  tsetsegee
0 5-r vrzvvleh tsetsegeeshand1_dashka
 
קיץ א 2007 006
קיץ א 2007 006קיץ א 2007 006
קיץ א 2007 006bagrutonline
 
期貨籌碼表20080508
期貨籌碼表20080508期貨籌碼表20080508
期貨籌碼表20080508tsu0716
 
2006 קיץ ב 0007
2006 קיץ ב 00072006 קיץ ב 0007
2006 קיץ ב 0007bagrutonline
 
2006 קיץ ב 006
2006 קיץ ב 0062006 קיץ ב 006
2006 קיץ ב 006bagrutonline
 
Ibn e-aadam ka naovel--jadu
Ibn e-aadam ka naovel--jaduIbn e-aadam ka naovel--jadu
Ibn e-aadam ka naovel--jaduMushahid Razvi
 
ڪپڙا پاڪ ڪرڻ جو طريقو ۽ نجاستن جو بيان
ڪپڙا پاڪ ڪرڻ جو طريقو ۽ نجاستن جو بيانڪپڙا پاڪ ڪرڻ جو طريقو ۽ نجاستن جو بيان
ڪپڙا پاڪ ڪرڻ جو طريقو ۽ نجاستن جو بيانIlyas Qadri Ziaee
 
رياضيات سابع دليل المعلم
رياضيات سابع دليل المعلمرياضيات سابع دليل المعلم
رياضيات سابع دليل المعلمMosab Qasem
 
Maulana yunus maleag gulistan e-naat ka sheeri n bayan bulbul
Maulana yunus maleag gulistan e-naat ka sheeri n bayan bulbulMaulana yunus maleag gulistan e-naat ka sheeri n bayan bulbul
Maulana yunus maleag gulistan e-naat ka sheeri n bayan bulbulMushahid Razvi
 
م1 : المفيد في العربية / دليل الأستاذ
م1 : المفيد في العربية / دليل الأستاذم1 : المفيد في العربية / دليل الأستاذ
م1 : المفيد في العربية / دليل الأستاذTEFO1
 
קיץ א 2007 007
קיץ א 2007 007קיץ א 2007 007
קיץ א 2007 007bagrutonline
 
แบบสำรวจประวัติส่วนตัว
แบบสำรวจประวัติส่วนตัวแบบสำรวจประวัติส่วนตัว
แบบสำรวจประวัติส่วนตัวscrambledking
 

Tendances (20)

קיץ א 2007 005
קיץ א 2007 005קיץ א 2007 005
קיץ א 2007 005
 
2006 קיץ ב 005
2006 קיץ ב 0052006 קיץ ב 005
2006 קיץ ב 005
 
0 5-r vrzvvleh tsetsegee
0 5-r vrzvvleh  tsetsegee0 5-r vrzvvleh  tsetsegee
0 5-r vrzvvleh tsetsegee
 
1 T Term 1 Ca(2)
1 T Term 1 Ca(2)1 T Term 1 Ca(2)
1 T Term 1 Ca(2)
 
חורף 2005 006
חורף 2005 006חורף 2005 006
חורף 2005 006
 
Chap15
Chap15Chap15
Chap15
 
קיץ א 2007 006
קיץ א 2007 006קיץ א 2007 006
קיץ א 2007 006
 
期貨籌碼表20080508
期貨籌碼表20080508期貨籌碼表20080508
期貨籌碼表20080508
 
2006 קיץ ב 0007
2006 קיץ ב 00072006 קיץ ב 0007
2006 קיץ ב 0007
 
חורף 2005 007
חורף 2005 007חורף 2005 007
חורף 2005 007
 
2006 קיץ ב 006
2006 קיץ ב 0062006 קיץ ב 006
2006 קיץ ב 006
 
Ibn e-aadam ka naovel--jadu
Ibn e-aadam ka naovel--jaduIbn e-aadam ka naovel--jadu
Ibn e-aadam ka naovel--jadu
 
ڪپڙا پاڪ ڪرڻ جو طريقو ۽ نجاستن جو بيان
ڪپڙا پاڪ ڪرڻ جو طريقو ۽ نجاستن جو بيانڪپڙا پاڪ ڪرڻ جو طريقو ۽ نجاستن جو بيان
ڪپڙا پاڪ ڪرڻ جو طريقو ۽ نجاستن جو بيان
 
رياضيات سابع دليل المعلم
رياضيات سابع دليل المعلمرياضيات سابع دليل المعلم
رياضيات سابع دليل المعلم
 
Maulana yunus maleag gulistan e-naat ka sheeri n bayan bulbul
Maulana yunus maleag gulistan e-naat ka sheeri n bayan bulbulMaulana yunus maleag gulistan e-naat ka sheeri n bayan bulbul
Maulana yunus maleag gulistan e-naat ka sheeri n bayan bulbul
 
م1 : المفيد في العربية / دليل الأستاذ
م1 : المفيد في العربية / دليل الأستاذم1 : المفيد في العربية / دليل الأستاذ
م1 : المفيد في العربية / دليل الأستاذ
 
קיץ א 2007 007
קיץ א 2007 007קיץ א 2007 007
קיץ א 2007 007
 
тактический маркетинг модуль 2
тактический маркетинг   модуль 2тактический маркетинг   модуль 2
тактический маркетинг модуль 2
 
แบบสำรวจประวัติส่วนตัว
แบบสำรวจประวัติส่วนตัวแบบสำรวจประวัติส่วนตัว
แบบสำรวจประวัติส่วนตัว
 
Is12
Is12Is12
Is12
 

En vedette

average-knapsack.beam.pdf
average-knapsack.beam.pdfaverage-knapsack.beam.pdf
average-knapsack.beam.pdfStas Fomin
 
Dynamic Programming Knapsack
Dynamic Programming KnapsackDynamic Programming Knapsack
Dynamic Programming KnapsackStas Fomin
 
Randomized Rounding
Randomized RoundingRandomized Rounding
Randomized RoundingStas Fomin
 
A commutative model composition operator to support software adaptation
A commutative model composition operator to support software adaptationA commutative model composition operator to support software adaptation
A commutative model composition operator to support software adaptationSébastien Mosser
 
Amplifying Reduction Non Approx
Amplifying Reduction Non ApproxAmplifying Reduction Non Approx
Amplifying Reduction Non ApproxStas Fomin
 
testopia-missing-link
testopia-missing-linktestopia-missing-link
testopia-missing-linkStas Fomin
 
Probabilistically Checkable Proofs
Probabilistically Checkable ProofsProbabilistically Checkable Proofs
Probabilistically Checkable ProofsStas Fomin
 

En vedette (9)

average-knapsack.beam.pdf
average-knapsack.beam.pdfaverage-knapsack.beam.pdf
average-knapsack.beam.pdf
 
Dynamic Programming Knapsack
Dynamic Programming KnapsackDynamic Programming Knapsack
Dynamic Programming Knapsack
 
Dnf Counting
Dnf CountingDnf Counting
Dnf Counting
 
Randomized Rounding
Randomized RoundingRandomized Rounding
Randomized Rounding
 
A commutative model composition operator to support software adaptation
A commutative model composition operator to support software adaptationA commutative model composition operator to support software adaptation
A commutative model composition operator to support software adaptation
 
Amplifying Reduction Non Approx
Amplifying Reduction Non ApproxAmplifying Reduction Non Approx
Amplifying Reduction Non Approx
 
testopia-missing-link
testopia-missing-linktestopia-missing-link
testopia-missing-link
 
Probabilistically Checkable Proofs
Probabilistically Checkable ProofsProbabilistically Checkable Proofs
Probabilistically Checkable Proofs
 
Intro Erevan
Intro ErevanIntro Erevan
Intro Erevan
 

Plus de Stas Fomin

Levenstein distance.beam
Levenstein distance.beamLevenstein distance.beam
Levenstein distance.beamStas Fomin
 
«Собор или базар»: системы контроля версий — централизованные или распределен...
«Собор или базар»: системы контроля версий — централизованные или распределен...«Собор или базар»: системы контроля версий — централизованные или распределен...
«Собор или базар»: системы контроля версий — централизованные или распределен...Stas Fomin
 
Какой у вас Agile: свежевыжатый или порошковый?
Какой у вас Agile: свежевыжатый или порошковый?Какой у вас Agile: свежевыжатый или порошковый?
Какой у вас Agile: свежевыжатый или порошковый?Stas Fomin
 
Mindmaps: история и идеология
Mindmaps: история и идеологияMindmaps: история и идеология
Mindmaps: история и идеологияStas Fomin
 
Теория ограничений и Линейное программирование
Теория ограничений и Линейное программированиеТеория ограничений и Линейное программирование
Теория ограничений и Линейное программированиеStas Fomin
 
Введение в Subversion
Введение в SubversionВведение в Subversion
Введение в SubversionStas Fomin
 
Fake Flash Drives from TopKeen
Fake Flash Drives from TopKeenFake Flash Drives from TopKeen
Fake Flash Drives from TopKeenStas Fomin
 
Randomized Complexity
Randomized ComplexityRandomized Complexity
Randomized ComplexityStas Fomin
 
P Reducibility And Npc
P Reducibility And NpcP Reducibility And Npc
P Reducibility And NpcStas Fomin
 
Packing Average
Packing AveragePacking Average
Packing AverageStas Fomin
 
Obfuscation Curstate Review
Obfuscation Curstate ReviewObfuscation Curstate Review
Obfuscation Curstate ReviewStas Fomin
 
Maximal Independent Set
Maximal Independent SetMaximal Independent Set
Maximal Independent SetStas Fomin
 
Max Cut Semidefinite
Max Cut SemidefiniteMax Cut Semidefinite
Max Cut SemidefiniteStas Fomin
 
Intro And Samples
Intro And SamplesIntro And Samples
Intro And SamplesStas Fomin
 
Greedy Covering Almost Ok
Greedy Covering Almost OkGreedy Covering Almost Ok
Greedy Covering Almost OkStas Fomin
 
Greedy Covering
Greedy CoveringGreedy Covering
Greedy CoveringStas Fomin
 
Derandomization Maxsat
Derandomization MaxsatDerandomization Maxsat
Derandomization MaxsatStas Fomin
 
Derandomization Luby
Derandomization LubyDerandomization Luby
Derandomization LubyStas Fomin
 

Plus de Stas Fomin (20)

Levenstein distance.beam
Levenstein distance.beamLevenstein distance.beam
Levenstein distance.beam
 
«Собор или базар»: системы контроля версий — централизованные или распределен...
«Собор или базар»: системы контроля версий — централизованные или распределен...«Собор или базар»: системы контроля версий — централизованные или распределен...
«Собор или базар»: системы контроля версий — централизованные или распределен...
 
Какой у вас Agile: свежевыжатый или порошковый?
Какой у вас Agile: свежевыжатый или порошковый?Какой у вас Agile: свежевыжатый или порошковый?
Какой у вас Agile: свежевыжатый или порошковый?
 
Mindmaps: история и идеология
Mindmaps: история и идеологияMindmaps: история и идеология
Mindmaps: история и идеология
 
Теория ограничений и Линейное программирование
Теория ограничений и Линейное программированиеТеория ограничений и Линейное программирование
Теория ограничений и Линейное программирование
 
Введение в Subversion
Введение в SubversionВведение в Subversion
Введение в Subversion
 
Fake Flash Drives from TopKeen
Fake Flash Drives from TopKeenFake Flash Drives from TopKeen
Fake Flash Drives from TopKeen
 
Randomized Complexity
Randomized ComplexityRandomized Complexity
Randomized Complexity
 
Ptas Knapsack
Ptas KnapsackPtas Knapsack
Ptas Knapsack
 
P Reducibility And Npc
P Reducibility And NpcP Reducibility And Npc
P Reducibility And Npc
 
Packing Average
Packing AveragePacking Average
Packing Average
 
Obfuscation Curstate Review
Obfuscation Curstate ReviewObfuscation Curstate Review
Obfuscation Curstate Review
 
Maximal Independent Set
Maximal Independent SetMaximal Independent Set
Maximal Independent Set
 
Max Cut Semidefinite
Max Cut SemidefiniteMax Cut Semidefinite
Max Cut Semidefinite
 
Intro And Samples
Intro And SamplesIntro And Samples
Intro And Samples
 
Greedy Covering Almost Ok
Greedy Covering Almost OkGreedy Covering Almost Ok
Greedy Covering Almost Ok
 
Greedy Covering
Greedy CoveringGreedy Covering
Greedy Covering
 
Sat Average
Sat AverageSat Average
Sat Average
 
Derandomization Maxsat
Derandomization MaxsatDerandomization Maxsat
Derandomization Maxsat
 
Derandomization Luby
Derandomization LubyDerandomization Luby
Derandomization Luby
 

Greedy Knapsack

  • 1. Жадный алгоритм для «Рюкзака» с гарантированной точностью 2 Н.Н. Кузюрин С.А. Фомин 10 октября 2008 г. 1 / 10
  • 2. Приближенный алгоритм с гарантированной точностью Определение Алгоритм называется C -приближенным, если при любых исходных данных он находит допустимое решение со значением целевой функции, отличающимся от оптимума не более чем в C раз. 2 / 10
  • 3. Задача «0–1 Рюкзак (Knapsack)» Даны: c1 , . . . , cn , cj ∈ N — «стоимости» предметов; a1 , . . . , an , aj ∈ N — «размеры» или «веса»; B ∈ N — «размер рюкзака». Найти максимальное значение f ∗ целевой функции n f ≡ ci xi → max i=1 с ограничением на размер «рюкзака»: n ai xi ≤ B, xi ∈ {0, 1}. i=1 3 / 10
  • 4. Тривиально-жадный алгоритм для «Рюкзака» ci Отсортировать предметы в порядке убывания ai . A←0 for all i ∈ {1..n} do if A + ai ≤ B then A ← A + ai xi ← 1 else xi ← 0 end if end for return {x1 , . . . , xn } Упражнение Докажите, что ∀k > 1, ∃{ci , ai }, B для которых алгоритм выберет набор в k раз хуже оптимального. 4 / 10
  • 5. Тривиально-жадный алгоритм для «Рюкзака» ci Отсортировать предметы в порядке убывания ai . A←0 for all i ∈ {1..n} do if A + ai ≤ B then A ← A + ai xi ← 1 else xi ← 0 end if end for return {x1 , . . . , xn } Упражнение Докажите, что ∀k > 1, ∃{ci , ai }, B для которых алгоритм выберет набор в k раз хуже оптимального. 5 / 10
  • 6. «Жадный-2» для «Рюкзака» Вес рюкзака B= 10 кг Входной массив T <= [(3, 6), (4, 3), (5, 2), (6, 5), (7, 5), (8, 1)] Отсортированный T => [(8, 1), (5, 2), (7, 5), (4, 3), (6, 5), (3, 6)] def KnapsackGreedy (T , B) : Берем предмет: <= ($8 , 1 кг) T .sort (SortByConsumerAppeal) Берем предмет: <= ($5 , 2 кг) Cmax ← Cg ← Ag ← 0 Берем предмет: <= ($7 , 5 кг) for (c, a) ∈ T : Cg=$20 или Cmax=$8 ? Набран рюкзак стоимостью $20 Cmax ← max (c, Cmax) if Ag + a ≤ B : # если лезет в рюкзак Вес рюкзака B= 100 кг Ag ← Ag + a # Берем предмет (c, a) Входной массив T <= [(10, 1), (150, 100), (50, 40), (40, 20)] Cg ← Cg + c Отсортированный T => [(10, 1), (40, 20), (150, 100), (50, 40)] Берем предмет: <= ($10 , 1 кг) return max (Cg, Cmax) # выбираем что больше Берем предмет: <= ($40 , 20 кг) Берем предмет: <= ($50 , 40 кг) Cg=$100 или Cmax=$150 ? Набран рюкзак стоимостью $150 6 / 10
  • 7. Точность «Жадного-2» не меньше 2 Sg ˜ Sg ˜ Sg Cg = ci , ˜ Cg = ci i∈Sg ˜ i∈Sg ˜ Cg + cmax ≥ Cg ≥ f∗ 2fG ≡ 2 max(Cg , cmax ) ≥ Cg + cmax ≥ f∗ 7 / 10
  • 8. Точность «Жадного-2» не меньше 2 Sg ˜ Sg ˜ Sg Cg = ci , ˜ Cg = ci i∈Sg ˜ i∈Sg ˜ Cg + cmax ≥ Cg ≥ f∗ 2fG ≡ 2 max(Cg , cmax ) ≥ Cg + cmax ≥ f∗ 8 / 10
  • 9. Точность «Жадного-2» не меньше 2 Sg ˜ Sg ˜ Sg Cg = ci , ˜ Cg = ci i∈Sg ˜ i∈Sg ˜ Cg + cmax ≥ Cg ≥ f∗ 2fG ≡ 2 max(Cg , cmax ) ≥ Cg + cmax ≥ f∗ 9 / 10