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

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



            10 октября 2008 г.


              Лекция основана на результатах из:
              «Beier, R. and V¨cking, B. (2003). In
                               o
              Proceedings of the 35th ACM Symposium on
              Theory of Computing (STOC), pages
              232–241».

                                              1 / 15
Полиномиальность в среднем
Определение
 «Полиномиальный в среднем (точно)»
Алгоритм A называется полиномиальным в среднем, если среднее
время его работы ограничено полиномом от длины входа, т.е.
существует константа c > 0, такая, что En TA = O(nc ).

Упражнение
Приведите пример функции TA (времени работы некоторого
алгоритма A) и распределения исходных данных Pn (I ), для которых
TA является полиномиальной в среднем (En TA = O(nc )), а TA — нет.
                                                            2


Определение
«Полиномиальный в среднем»
Алгоритм называется полиномиальным в среднем, если существует
константа ε > 0, такая, что En T ε = O(n), где T — время работы
алгоритма.                                                    2 / 15
Задача о рюкзаке
Задача
«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 / 15
def KnapsackNemhauserUllman (Items, B) :
    ParetoS ← [Solution ()]                    # Парето-оптимальные по весу
    for item ∈ Items :
         newSolutions ← [ ]
         for solution ∈ ParetoS :
              if solution.weight + item.weight ≤ B :
                   newSolutions.append (solution + item)
         mergedSolution ← mergeSolutions (ParetoS, newSolutions)
         ParetoS ← mergedSolution
    return ParetoS[−1], len (ParetoS)


                     Предметы ( стоимость ): [ 6 ,
                                   вес         3
                                                           3 2 3 6
                                                            , , , ],
                                                           4 5 3 8
                                                                       B = 10


                     ParetoS            newSolutions         mergedSolution
                     [0]
                      0
                                                [6]
                                                 3
                                                             [0, 6]
                                                               0 3
                     [0, 6]
                      0 3
                                             [3, 9]
                                               4 7
                                                             [0, 6, 7]
                                                               0 3
                                                                       9

                      0 3
                            9
                     [0, 6, 7]               [2, 8]
                                               5 8
                                                               0 6 9
                                                             [0, 3, 7]
                      0 6 9                 3 9 12
                     [0, 3, 7]            [ 3 , 6 , 10 ]     [ 0 , 6 , 6 , 12 ]
                                                               0 3
                                                                       9
                                                                           10
                     [0, 6, 6,
                      0 3
                            9    12
                                 10
                                    ]           [6]
                                                 8
                                                                       9
                                                             [ 0 , 6 , 6 , 12 ]
                                                               0 3         10

                                                                12
                                  Оптимальное решение:          10




                                                                                  4 / 15
def KnapsackNemhauserUllman (Items, B) :
    ParetoS ← [Solution ()]                    # Парето-оптимальные по весу
    for item ∈ Items :
         newSolutions ← [ ]
         for solution ∈ ParetoS :
              if solution.weight + item.weight ≤ B :
                   newSolutions.append (solution + item)
         mergedSolution ← mergeSolutions (ParetoS, newSolutions)
         ParetoS ← mergedSolution
    return ParetoS[−1], len (ParetoS)


                     Предметы ( стоимость ): [ 6 ,
                                   вес         3
                                                           3 2 3 6
                                                            , , , ],
                                                           4 5 3 8
                                                                       B = 10


                     ParetoS            newSolutions         mergedSolution
                     [0]
                      0
                                                [6]
                                                 3
                                                             [0, 6]
                                                               0 3
                     [0, 6]
                      0 3
                                             [3, 9]
                                               4 7
                                                             [0, 6, 7]
                                                               0 3
                                                                       9

                      0 3
                            9
                     [0, 6, 7]               [2, 8]
                                               5 8
                                                               0 6 9
                                                             [0, 3, 7]
                      0 6 9                 3 9 12
                     [0, 3, 7]            [ 3 , 6 , 10 ]     [ 0 , 6 , 6 , 12 ]
                                                               0 3
                                                                       9
                                                                           10
                     [0, 6, 6,
                      0 3
                            9    12
                                 10
                                    ]           [6]
                                                 8
                                                                       9
                                                             [ 0 , 6 , 6 , 12 ]
                                                               0 3         10

                                                                12
                                  Оптимальное решение:          10




                                                                                  5 / 15
Сложность алгоритма — O(n · |ParetoSolutions|).




                                                  6 / 15
Мат. ожидание сложности алгоритма полиномиально


Теорема
Пусть:
          ai — «веса», произвольные положительные числа;
          ci — «стоимости», независимые случайные величины,
             равномерно распределенные на [0, 1];
q = max |ParetoSolutions| — число доминирующих подмножеств для
            всех n предметов.
Тогда
                          E(q) = O(n3 ).




                                                           7 / 15
Определения

m = 2n , S1 , . . . , Sm — подмножества [n] в порядке неубывания весов.
(Веса i∈Sk ai множеств Sk в нашей теме не возникают.)
Для любых 2 ≤ u ≤ m, 1 ≤ k ≤ u:

       Plusk   = Su  Sk
     Minusk    = Sk  Su
         Δ+
          k    =             ci
                   i∈Plusk

         Δ−
          k    =              ci
                   i∈Minusk
         Δu =       min Δ+ − Δ−
                         k    k
                   1≤k<u
∀u ≥ 2, Su — доминирующее множество ⇔ Δu > 0.


                                                                  8 / 15
События

Рассмотрим некоторое u, пусть Su = [1, . . . , t] (иначе перенумеруем).

        ∀ 1 ≤ k < u Plusk ⊆ [1, . . . , t], Minusk ⊆ [t + 1, . . . , n]
Пусть 0 < ε < 1.


                     ПаретоНабор   = {Δu > 0}
                      ДельтаМала   =    Δu < ε2
                     ЭлементМалj   = {cj < ε}
                   ЭлементНеМалj   =   ЭлементМалj = {cj ≥   ε}
                                        t
                ВНабореНеМалы      =   ∩j=1 ЭлементНеМалj




                                                                          9 / 15
P(ВНабореНеМалы|ПаретоНабор) ≤ nε
∀j ≤ t и 0 < ε < 1:


 P (cj < ε| ∀k : Δ+ > Δ−
                  k    k      =    P (cj < ε| cj > x)
                                     при x ≥ ε: 0
                              ≤                 ε−x          ε(1−x)       x(1−ε)
                                     при x < ε: 1−x =         1−x     −    1−x
                              ≤ ε
     P(cj < ε|cj > x)
                         -
    0      x      ε      1


        P(ВНабореНеМалы|ПаретоНабор) = P(∪t ЭлементМалj |ПаретоНабор)
                                          j=1
                                          t
                                    ≤         P(ЭлементМалj |ПаретоНабор)
                                        j=1
                                    ≤ t · ε ≤ nε.

                                                                          10 / 15
P(ДельтаМала|ПаретоНабор ∧ ВНабореНеМалы) ≤ nε
Оценим P(ПаретоНабор) при априорности событий (при условии):
«∀j cj ∈ [0, 1]», «ВНабореНеМалы»(и, следовательно, «Δ+ ≥ ε»):
                                                      k

  P(ПаретоНабор|ВНабореНеМалы) = P ∀k Δ− ≤ Δ+ , ∀j > t cj ∈ [0, 1] =
                                        k      k
             1
    =               P ∀k Δ− ≤ (1 − ε) Δ+ , ∀j > t cj ∈ [0, 1 − ε] ≤
                             k            k
       (1 − ε)n−t
               1
      ≤              P ∀k Δ− ≤ Δ+ − ε2 , ∀j > t cj ∈ [0, 1 − ε] ≤
                               k    k
         (1 − ε)n−t
                                       1
                                 ≤            P (ДельтаМала|ВНабореНеМалы)
                                   (1 − ε)n−t
С другой стороны,   ДельтаМала   ⊂ ПаретоНабор, и

  P(ДельтаМала|ПаретоНабор ∧ ВНабореНеМалы) =
           P(ДельтаМала|ВНабореНеМалы)
       =                                 ≥ (1 − ε)n−t ≥ (1 − ε)n ≥ 1 − nε
           P(ПаретоНабор|ВНабореНеМалы)

                                                                  11 / 15
P(A|B) = P(A|B ∩ C ) · P(C |B) + P(A|B ∩ C ) · P(C |B)


                                                x +y
                                  P(A|B) =
                                             x +y +z +w

событие A           событие C
                                P(A|B ∩ C ) · P(C |B) =
                                           y          y +z
                y                     =         ·
       x              z                  y +z x +y +z +w

            w
       событие B                P(A|B ∩ C ) · P(C |B) =
                                           x          x +w
                                     =          ·
                                        x +w x +y +z +w

                                                    12 / 15
P(ДельтаМала|ПаретоНабор) ≤ 2nε



         P(A|B) = P(A|B ∩ C ) · P(C |B) + P(A|B ∩ C ) · P(C |B)
Оценим P(ДельтаМала|ПаретоНабор):

  P(ДельтаМала|ПаретоНабор) =
   = P(ДельтаМала|ПаретоНабор ∩ ВНабореНеМалы) · P(ВНабореНеМалы|ПаретоНабор)
   + P(ДельтаМала|ПаретоНабор ∩ ВНабореНеМалы) · P(ВНабореНеМалы|ПаретоНабор)
  ≤ P(ДельтаМала|ПаретоНабор ∩ ВНабореНеМалы) + P(ВНабореНеМалы|ПаретоНабор)
                                                           ≤ nε + nε = 2nε




                                                                     13 / 15
E(q) = O(n3 )
               1
Возьмем ε =   3n ,   тогда

      E(Δu |Δu > 0) ≥ ε2 · P(ДельтаМала|ПаретоНабор)
                             = ε2 · (1 − P[ДельтаМала|ПаретоНабор])
                                                  1          2       1
                             ≥ ε2 · (1 − 2nε) = 2 · (1 − ) =
                                                 9n          3      27n2
Обозначим мат. ожидание стоимости Sm через Cm . Имеем две оценки:

          n · E(ci ) = n
                       2
  Cm =       m                                        1     m
             u=2 P(Δu > 0) E(Δu |Δu > 0) ≥           27n2   u=2 P(Δu   > 0)
                             m
                                                   n
          E(q) = 1 +             P(Δu > 0) ≤ 1 +     · 27n2 = O(n3 )
                                                   2
                         u=2




                                                                       14 / 15
Интернет поддержка курса




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



                           15 / 15

Contenu connexe

En vedette

P Reducibility And Npc
P Reducibility And NpcP Reducibility And Npc
P Reducibility And Npc
Stas Fomin
 
Greedy Covering Almost Ok
Greedy Covering Almost OkGreedy Covering Almost Ok
Greedy Covering Almost Ok
Stas Fomin
 
Derandomization Maxsat
Derandomization MaxsatDerandomization Maxsat
Derandomization Maxsat
Stas Fomin
 
activity sriram
activity sriramactivity sriram
activity sriram
siranee
 
Max Cut Semidefinite
Max Cut SemidefiniteMax Cut Semidefinite
Max Cut Semidefinite
Stas Fomin
 
Levenstein distance.beam
Levenstein distance.beamLevenstein distance.beam
Levenstein distance.beam
Stas Fomin
 
Intro And Samples
Intro And SamplesIntro And Samples
Intro And Samples
Stas Fomin
 

En vedette (11)

P Reducibility And Npc
P Reducibility And NpcP Reducibility And Npc
P Reducibility And Npc
 
Greedy Covering Almost Ok
Greedy Covering Almost OkGreedy Covering Almost Ok
Greedy Covering Almost Ok
 
Derandomization Maxsat
Derandomization MaxsatDerandomization Maxsat
Derandomization Maxsat
 
activity sriram
activity sriramactivity sriram
activity sriram
 
Integrating Open Source Software Environments into Software Development Pro...
Integrating  Open Source Software Environments  into Software Development Pro...Integrating  Open Source Software Environments  into Software Development Pro...
Integrating Open Source Software Environments into Software Development Pro...
 
Max Cut Semidefinite
Max Cut SemidefiniteMax Cut Semidefinite
Max Cut Semidefinite
 
Теория ограничений и Линейное программирование
Теория ограничений и Линейное программированиеТеория ограничений и Линейное программирование
Теория ограничений и Линейное программирование
 
Fake Flash Drives from TopKeen
Fake Flash Drives from TopKeenFake Flash Drives from TopKeen
Fake Flash Drives from TopKeen
 
Levenstein distance.beam
Levenstein distance.beamLevenstein distance.beam
Levenstein distance.beam
 
Intro And Samples
Intro And SamplesIntro And Samples
Intro And Samples
 
Какой у вас Agile: свежевыжатый или порошковый?
Какой у вас Agile: свежевыжатый или порошковый?Какой у вас Agile: свежевыжатый или порошковый?
Какой у вас Agile: свежевыжатый или порошковый?
 

Plus de Stas Fomin

average-knapsack.beam.pdf
average-knapsack.beam.pdfaverage-knapsack.beam.pdf
average-knapsack.beam.pdf
Stas Fomin
 
testopia-missing-link
testopia-missing-linktestopia-missing-link
testopia-missing-link
Stas Fomin
 
Randomized Complexity
Randomized ComplexityRandomized Complexity
Randomized Complexity
Stas Fomin
 
Probabilistically Checkable Proofs
Probabilistically Checkable ProofsProbabilistically Checkable Proofs
Probabilistically Checkable Proofs
Stas Fomin
 
Obfuscation Curstate Review
Obfuscation Curstate ReviewObfuscation Curstate Review
Obfuscation Curstate Review
Stas Fomin
 
Greedy Knapsack
Greedy KnapsackGreedy Knapsack
Greedy Knapsack
Stas Fomin
 
Dynamic Programming Knapsack
Dynamic Programming KnapsackDynamic Programming Knapsack
Dynamic Programming Knapsack
Stas Fomin
 
Randomized Rounding
Randomized RoundingRandomized Rounding
Randomized Rounding
Stas Fomin
 
Derandomization Luby
Derandomization LubyDerandomization Luby
Derandomization Luby
Stas Fomin
 
Amplifying Reduction Non Approx
Amplifying Reduction Non ApproxAmplifying Reduction Non Approx
Amplifying Reduction Non Approx
Stas Fomin
 

Plus de Stas Fomin (15)

average-knapsack.beam.pdf
average-knapsack.beam.pdfaverage-knapsack.beam.pdf
average-knapsack.beam.pdf
 
testopia-missing-link
testopia-missing-linktestopia-missing-link
testopia-missing-link
 
«Собор или базар»: системы контроля версий — централизованные или распределен...
«Собор или базар»: системы контроля версий — централизованные или распределен...«Собор или базар»: системы контроля версий — централизованные или распределен...
«Собор или базар»: системы контроля версий — централизованные или распределен...
 
Mindmaps: история и идеология
Mindmaps: история и идеологияMindmaps: история и идеология
Mindmaps: история и идеология
 
Randomized Complexity
Randomized ComplexityRandomized Complexity
Randomized Complexity
 
Probabilistically Checkable Proofs
Probabilistically Checkable ProofsProbabilistically Checkable Proofs
Probabilistically Checkable Proofs
 
Obfuscation Curstate Review
Obfuscation Curstate ReviewObfuscation Curstate Review
Obfuscation Curstate Review
 
Intro Erevan
Intro ErevanIntro Erevan
Intro Erevan
 
Greedy Knapsack
Greedy KnapsackGreedy Knapsack
Greedy Knapsack
 
Dynamic Programming Knapsack
Dynamic Programming KnapsackDynamic Programming Knapsack
Dynamic Programming Knapsack
 
Randomized Rounding
Randomized RoundingRandomized Rounding
Randomized Rounding
 
Dnf Counting
Dnf CountingDnf Counting
Dnf Counting
 
Derandomization Luby
Derandomization LubyDerandomization Luby
Derandomization Luby
 
Christofides
ChristofidesChristofides
Christofides
 
Amplifying Reduction Non Approx
Amplifying Reduction Non ApproxAmplifying Reduction Non Approx
Amplifying Reduction Non Approx
 

Dernier

+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 

Dernier (20)

Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 

Average Knapsack

  • 1. Полиномиальный в среднем алгоритм для «Рюкзака» Н.Н. Кузюрин С.А. Фомин 10 октября 2008 г. Лекция основана на результатах из: «Beier, R. and V¨cking, B. (2003). In o Proceedings of the 35th ACM Symposium on Theory of Computing (STOC), pages 232–241». 1 / 15
  • 2. Полиномиальность в среднем Определение «Полиномиальный в среднем (точно)» Алгоритм A называется полиномиальным в среднем, если среднее время его работы ограничено полиномом от длины входа, т.е. существует константа c > 0, такая, что En TA = O(nc ). Упражнение Приведите пример функции TA (времени работы некоторого алгоритма A) и распределения исходных данных Pn (I ), для которых TA является полиномиальной в среднем (En TA = O(nc )), а TA — нет. 2 Определение «Полиномиальный в среднем» Алгоритм называется полиномиальным в среднем, если существует константа ε > 0, такая, что En T ε = O(n), где T — время работы алгоритма. 2 / 15
  • 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 / 15
  • 4. def KnapsackNemhauserUllman (Items, B) : ParetoS ← [Solution ()] # Парето-оптимальные по весу for item ∈ Items : newSolutions ← [ ] for solution ∈ ParetoS : if solution.weight + item.weight ≤ B : newSolutions.append (solution + item) mergedSolution ← mergeSolutions (ParetoS, newSolutions) ParetoS ← mergedSolution return ParetoS[−1], len (ParetoS) Предметы ( стоимость ): [ 6 , вес 3 3 2 3 6 , , , ], 4 5 3 8 B = 10 ParetoS newSolutions mergedSolution [0] 0 [6] 3 [0, 6] 0 3 [0, 6] 0 3 [3, 9] 4 7 [0, 6, 7] 0 3 9 0 3 9 [0, 6, 7] [2, 8] 5 8 0 6 9 [0, 3, 7] 0 6 9 3 9 12 [0, 3, 7] [ 3 , 6 , 10 ] [ 0 , 6 , 6 , 12 ] 0 3 9 10 [0, 6, 6, 0 3 9 12 10 ] [6] 8 9 [ 0 , 6 , 6 , 12 ] 0 3 10 12 Оптимальное решение: 10 4 / 15
  • 5. def KnapsackNemhauserUllman (Items, B) : ParetoS ← [Solution ()] # Парето-оптимальные по весу for item ∈ Items : newSolutions ← [ ] for solution ∈ ParetoS : if solution.weight + item.weight ≤ B : newSolutions.append (solution + item) mergedSolution ← mergeSolutions (ParetoS, newSolutions) ParetoS ← mergedSolution return ParetoS[−1], len (ParetoS) Предметы ( стоимость ): [ 6 , вес 3 3 2 3 6 , , , ], 4 5 3 8 B = 10 ParetoS newSolutions mergedSolution [0] 0 [6] 3 [0, 6] 0 3 [0, 6] 0 3 [3, 9] 4 7 [0, 6, 7] 0 3 9 0 3 9 [0, 6, 7] [2, 8] 5 8 0 6 9 [0, 3, 7] 0 6 9 3 9 12 [0, 3, 7] [ 3 , 6 , 10 ] [ 0 , 6 , 6 , 12 ] 0 3 9 10 [0, 6, 6, 0 3 9 12 10 ] [6] 8 9 [ 0 , 6 , 6 , 12 ] 0 3 10 12 Оптимальное решение: 10 5 / 15
  • 6. Сложность алгоритма — O(n · |ParetoSolutions|). 6 / 15
  • 7. Мат. ожидание сложности алгоритма полиномиально Теорема Пусть: ai — «веса», произвольные положительные числа; ci — «стоимости», независимые случайные величины, равномерно распределенные на [0, 1]; q = max |ParetoSolutions| — число доминирующих подмножеств для всех n предметов. Тогда E(q) = O(n3 ). 7 / 15
  • 8. Определения m = 2n , S1 , . . . , Sm — подмножества [n] в порядке неубывания весов. (Веса i∈Sk ai множеств Sk в нашей теме не возникают.) Для любых 2 ≤ u ≤ m, 1 ≤ k ≤ u: Plusk = Su Sk Minusk = Sk Su Δ+ k = ci i∈Plusk Δ− k = ci i∈Minusk Δu = min Δ+ − Δ− k k 1≤k<u ∀u ≥ 2, Su — доминирующее множество ⇔ Δu > 0. 8 / 15
  • 9. События Рассмотрим некоторое u, пусть Su = [1, . . . , t] (иначе перенумеруем). ∀ 1 ≤ k < u Plusk ⊆ [1, . . . , t], Minusk ⊆ [t + 1, . . . , n] Пусть 0 < ε < 1. ПаретоНабор = {Δu > 0} ДельтаМала = Δu < ε2 ЭлементМалj = {cj < ε} ЭлементНеМалj = ЭлементМалj = {cj ≥ ε} t ВНабореНеМалы = ∩j=1 ЭлементНеМалj 9 / 15
  • 10. P(ВНабореНеМалы|ПаретоНабор) ≤ nε ∀j ≤ t и 0 < ε < 1: P (cj < ε| ∀k : Δ+ > Δ− k k = P (cj < ε| cj > x) при x ≥ ε: 0 ≤ ε−x ε(1−x) x(1−ε) при x < ε: 1−x = 1−x − 1−x ≤ ε P(cj < ε|cj > x) - 0 x ε 1 P(ВНабореНеМалы|ПаретоНабор) = P(∪t ЭлементМалj |ПаретоНабор) j=1 t ≤ P(ЭлементМалj |ПаретоНабор) j=1 ≤ t · ε ≤ nε. 10 / 15
  • 11. P(ДельтаМала|ПаретоНабор ∧ ВНабореНеМалы) ≤ nε Оценим P(ПаретоНабор) при априорности событий (при условии): «∀j cj ∈ [0, 1]», «ВНабореНеМалы»(и, следовательно, «Δ+ ≥ ε»): k P(ПаретоНабор|ВНабореНеМалы) = P ∀k Δ− ≤ Δ+ , ∀j > t cj ∈ [0, 1] = k k 1 = P ∀k Δ− ≤ (1 − ε) Δ+ , ∀j > t cj ∈ [0, 1 − ε] ≤ k k (1 − ε)n−t 1 ≤ P ∀k Δ− ≤ Δ+ − ε2 , ∀j > t cj ∈ [0, 1 − ε] ≤ k k (1 − ε)n−t 1 ≤ P (ДельтаМала|ВНабореНеМалы) (1 − ε)n−t С другой стороны, ДельтаМала ⊂ ПаретоНабор, и P(ДельтаМала|ПаретоНабор ∧ ВНабореНеМалы) = P(ДельтаМала|ВНабореНеМалы) = ≥ (1 − ε)n−t ≥ (1 − ε)n ≥ 1 − nε P(ПаретоНабор|ВНабореНеМалы) 11 / 15
  • 12. P(A|B) = P(A|B ∩ C ) · P(C |B) + P(A|B ∩ C ) · P(C |B) x +y P(A|B) = x +y +z +w событие A событие C P(A|B ∩ C ) · P(C |B) = y y +z y = · x z y +z x +y +z +w w событие B P(A|B ∩ C ) · P(C |B) = x x +w = · x +w x +y +z +w 12 / 15
  • 13. P(ДельтаМала|ПаретоНабор) ≤ 2nε P(A|B) = P(A|B ∩ C ) · P(C |B) + P(A|B ∩ C ) · P(C |B) Оценим P(ДельтаМала|ПаретоНабор): P(ДельтаМала|ПаретоНабор) = = P(ДельтаМала|ПаретоНабор ∩ ВНабореНеМалы) · P(ВНабореНеМалы|ПаретоНабор) + P(ДельтаМала|ПаретоНабор ∩ ВНабореНеМалы) · P(ВНабореНеМалы|ПаретоНабор) ≤ P(ДельтаМала|ПаретоНабор ∩ ВНабореНеМалы) + P(ВНабореНеМалы|ПаретоНабор) ≤ nε + nε = 2nε 13 / 15
  • 14. E(q) = O(n3 ) 1 Возьмем ε = 3n , тогда E(Δu |Δu > 0) ≥ ε2 · P(ДельтаМала|ПаретоНабор) = ε2 · (1 − P[ДельтаМала|ПаретоНабор]) 1 2 1 ≥ ε2 · (1 − 2nε) = 2 · (1 − ) = 9n 3 27n2 Обозначим мат. ожидание стоимости Sm через Cm . Имеем две оценки: n · E(ci ) = n 2 Cm = m 1 m u=2 P(Δu > 0) E(Δu |Δu > 0) ≥ 27n2 u=2 P(Δu > 0) m n E(q) = 1 + P(Δu > 0) ≤ 1 + · 27n2 = O(n3 ) 2 u=2 14 / 15
  • 15. Интернет поддержка курса http://discopal.ispras.ru/ Вопросы? 15 / 15