SlideShare ist ein Scribd-Unternehmen logo
1 von 15
Downloaden Sie, um offline zu lesen
Полиномиальный в среднем алгоритм для
             «Рюкзака»

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



            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

Weitere ähnliche Inhalte

Andere mochten auch

P Reducibility And Npc
P Reducibility And NpcP Reducibility And Npc
P Reducibility And NpcStas Fomin
 
Greedy Covering Almost Ok
Greedy Covering Almost OkGreedy Covering Almost Ok
Greedy Covering Almost OkStas Fomin
 
Derandomization Maxsat
Derandomization MaxsatDerandomization Maxsat
Derandomization MaxsatStas Fomin
 
activity sriram
activity sriramactivity sriram
activity sriramsiranee
 
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...Stas Fomin
 
Max Cut Semidefinite
Max Cut SemidefiniteMax Cut Semidefinite
Max Cut SemidefiniteStas Fomin
 
Теория ограничений и Линейное программирование
Теория ограничений и Линейное программированиеТеория ограничений и Линейное программирование
Теория ограничений и Линейное программированиеStas Fomin
 
Fake Flash Drives from TopKeen
Fake Flash Drives from TopKeenFake Flash Drives from TopKeen
Fake Flash Drives from TopKeenStas Fomin
 
Levenstein distance.beam
Levenstein distance.beamLevenstein distance.beam
Levenstein distance.beamStas Fomin
 
Intro And Samples
Intro And SamplesIntro And Samples
Intro And SamplesStas Fomin
 
Какой у вас Agile: свежевыжатый или порошковый?
Какой у вас Agile: свежевыжатый или порошковый?Какой у вас Agile: свежевыжатый или порошковый?
Какой у вас Agile: свежевыжатый или порошковый?Stas Fomin
 

Andere mochten auch (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: свежевыжатый или порошковый?
 

Mehr von Stas Fomin

average-knapsack.beam.pdf
average-knapsack.beam.pdfaverage-knapsack.beam.pdf
average-knapsack.beam.pdfStas Fomin
 
testopia-missing-link
testopia-missing-linktestopia-missing-link
testopia-missing-linkStas Fomin
 
«Собор или базар»: системы контроля версий — централизованные или распределен...
«Собор или базар»: системы контроля версий — централизованные или распределен...«Собор или базар»: системы контроля версий — централизованные или распределен...
«Собор или базар»: системы контроля версий — централизованные или распределен...Stas Fomin
 
Mindmaps: история и идеология
Mindmaps: история и идеологияMindmaps: история и идеология
Mindmaps: история и идеологияStas Fomin
 
Randomized Complexity
Randomized ComplexityRandomized Complexity
Randomized ComplexityStas Fomin
 
Probabilistically Checkable Proofs
Probabilistically Checkable ProofsProbabilistically Checkable Proofs
Probabilistically Checkable ProofsStas Fomin
 
Obfuscation Curstate Review
Obfuscation Curstate ReviewObfuscation Curstate Review
Obfuscation Curstate ReviewStas Fomin
 
Greedy Knapsack
Greedy KnapsackGreedy Knapsack
Greedy KnapsackStas Fomin
 
Dynamic Programming Knapsack
Dynamic Programming KnapsackDynamic Programming Knapsack
Dynamic Programming KnapsackStas Fomin
 
Randomized Rounding
Randomized RoundingRandomized Rounding
Randomized RoundingStas Fomin
 
Derandomization Luby
Derandomization LubyDerandomization Luby
Derandomization LubyStas Fomin
 
Amplifying Reduction Non Approx
Amplifying Reduction Non ApproxAmplifying Reduction Non Approx
Amplifying Reduction Non ApproxStas Fomin
 

Mehr von 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
 

Kürzlich hochgeladen

Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentPim van der Noll
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demoHarshalMandlekar2
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Farhan Tariq
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationKnoldus Inc.
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rick Flair
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Hiroshi SHIBATA
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfNeo4j
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfpanagenda
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI AgeCprime
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesAssure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesThousandEyes
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfIngrid Airi González
 

Kürzlich hochgeladen (20)

Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demo
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog Presentation
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdf
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI Age
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesAssure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdf
 

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