SlideShare a Scribd company logo
Полиномиальный в среднем алгоритм для
             «Рюкзака»

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



            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

More Related Content

Viewers also liked

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 TopKeen
Stas 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
 

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

More from 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
 

More from 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
 

Recently uploaded

Knowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and backKnowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and back
Elena Simperl
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
James Anderson
 
How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...
Product School
 
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
Product School
 
UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3
DianaGray10
 
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
Product School
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Product School
 
Generating a custom Ruby SDK for your web service or Rails API using Smithy
Generating a custom Ruby SDK for your web service or Rails API using SmithyGenerating a custom Ruby SDK for your web service or Rails API using Smithy
Generating a custom Ruby SDK for your web service or Rails API using Smithy
g2nightmarescribd
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
KatiaHIMEUR1
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
DianaGray10
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
Elena Simperl
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
91mobiles
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Product School
 
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Thierry Lestable
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
Cheryl Hung
 
Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*
Frank van Harmelen
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
Prayukth K V
 
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Tobias Schneck
 

Recently uploaded (20)

Knowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and backKnowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and back
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
 
How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...
 
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
 
UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3
 
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
 
Generating a custom Ruby SDK for your web service or Rails API using Smithy
Generating a custom Ruby SDK for your web service or Rails API using SmithyGenerating a custom Ruby SDK for your web service or Rails API using Smithy
Generating a custom Ruby SDK for your web service or Rails API using Smithy
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
 
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
 
Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
 
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
 

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