Upgrade to Pro — share decks privately, control downloads, hide ads and more …

線形計画法とカーマーカー法 〜プログラマのための数学勉強会#3〜

線形計画法とカーマーカー法 〜プログラマのための数学勉強会#3〜

カーマーカー法はやめて「線形計画法と整数計画法」です。

Shintaro Kaneko

May 22, 2015
Tweet

More Decks by Shintaro Kaneko

Other Decks in Programming

Transcript

  1. ઢܗܭը๏ͱΧʔϚʔΧʔ๏
    ϓϩάϥϚͷͨΊͷ਺ֶษڧձ

    View Slide

  2. ઢܗܭը๏ͱΧʔϚʔΧʔ๏

    View Slide

  3. ΧʔϚʔΧʔͷ࿩͸୭ಘ

    View Slide

  4. ΧʔϚʔΧʔͷ࿩͸୭ಘ
    ͑ͬʂʁ

    View Slide

  5. ઢܗܭը๏ͱΧʔϚʔΧʔ๏

    View Slide

  6. ઢܗܭը๏ͱ੔਺ܭը๏

    View Slide

  7. ࣗݾ঺հ
    Shintaro Kaneko
    ‣ גࣜձࣾΤ΢ϨΧ
    ‣ pairsͷ։ൃશൠ୲౰
    ‣ ࠷ۙ͸GoݴޠͰ։ൃ͍ͯ͠·͢
    ‣ େֶ࣌୅
    ‣ ࠷దԽ໰୊ͷඇઢܗܭը๏Λઐ߈
    ‣ github.com/kaneshin/lbfgs ʢݹʣ
    ‣ ඍ෼ํఔ͕ࣜ޷͖ͩͬͨ
    kaneshin
    kaneshinth
    shintaro.kaneko

    View Slide

  8. ࣗݾ঺հ
    Shintaro Kaneko
    ‣ גࣜձࣾΤ΢ϨΧ
    ‣ pairsͷ։ൃશൠ୲౰
    ‣ ࠷ۙ͸GoݴޠͰ։ൃ͍ͯ͠·͢
    ‣ େֶ࣌୅
    ‣ ࠷దԽ໰୊ͷඇઢܗܭը๏Λઐ߈
    ‣ github.com/kaneshin/lbfgs ʢݹʣ
    ‣ ඍ෼ํఔ͕ࣜ޷͖ͩͬͨ
    kaneshin
    kaneshinth
    shintaro.kaneko
    ٱ͠ৼΓͷ਺ֶʂ

    View Slide

  9. Copyright © 2009-2015 eureka, Inc. All rights reserved.

    View Slide

  10. Copyright © 2009-2015 eureka, Inc. All rights reserved.

    View Slide

  11. Copyright © 2009-2015 eureka, Inc. All rights reserved.
    ‣ pairs͸ϚονϯάΞϧΰϦζϜ͕ඇৗʹॏཁ
    ‣ ๛෋ͳϢʔβʔͷσʔλͷ׆༻
    ‣ ΤϯδχΞ͕Ϗδωε໘͔ΒΞϧΰϦζϜΛߟ͑Δ
    ‣ ࣾ಺ษڧձͰRษڧʴ౷ܭֶͷษڧձ΋։࠵
    ‣ ϏοάσʔλΛਖ਼͍͠஌ࣝͰ࢖༻͢Δ
    ‣ ౷ܭΛؒҧͬͨೝࣝͰ࢖༻͠ͳ͍ʢภͬͨσʔλΛ࢖Θͳ͍

    View Slide

  12. ຊ೔͸౷ܭͷ࿩Ͱ͸
    ͋Γ·ͤΜʂ

    View Slide

  13. ຊ೔ͷΰʔϧ

    View Slide

  14. ຊ೔ͷΰʔϧ
    ࠷దԽʢ਺ཧܭըʣΛ
    ͪΐͬͱͰ΋஌ͬͯ΋Β͏

    View Slide

  15. ຊ೔࿩͢͜ͱ

    View Slide

  16. ຊ೔࿩͢͜ͱ
    ΦϖϨʔγϣϯζɾϦαʔν
    ࠷దԽ໰୊ʢ਺ཧܭը໰୊ʣ
    ઢܗܭը໰୊ͱ੔਺ܭը໰୊

    View Slide

  17. ຊ೔΍Βͳ͍͜ͱ
    ΍Βͳ͍͜ͱ
    ϓϩάϥϜͰγϛϡϨʔγϣϯ
    ΍Γ͔ͨͬͨΜͰ͕͢
    ͕࣌ؒݫ͍͠ͷͰׂѪ

    View Slide

  18. ຊ೔࿩͢͜ͱ
    ΦϖϨʔγϣϯζɾϦαʔν
    ࠷దԽ໰୊ʢ਺ཧܭը໰୊ʣ
    ઢܗܭը໰୊ͱ੔਺ܭը໰୊

    View Slide

  19. ΦϖϨʔγϣϯζɾϦαʔν

    View Slide

  20. ΦϖϨʔγϣϯζɾϦαʔνʢORʣ
    ‣ OR͸૬౰޿͍෼໺Λࢦ͢
    ‣ ༷ʑͳܭըʹରͯ͠࠷΋ޮ཰తʹͳΔΑ͏ҙࢥܾఆ͢Δ
    ‣ ਺ֶɾ౷ܭతϞσϧɺΞϧΰϦζϜͷར༻
    ‣ ʮγϛϡϨʔγϣϯʯͷཱ֬͸ORཱ͕໾ऀ
    ‣ ORͰ͸ݱ࣮ͷ໰୊Λ਺ཧϞσϧʹஔ͖׵͑Δ
    ‣ ࠷దԽɼ଴ͪߦྻɼ֬཰ͳͲ
    ‣ ܉ࣄతؔ৺ͱܦࡁతؔ৺͕ڧ͍෼໺

    View Slide

  21. ͭ·Γʁ

    View Slide

  22. ྫ͑͹ɼேͷ௨ۈిं

    View Slide

  23. ேͷ௨ۈిं
    ‣ ܦ࿏ݕࡧʹʮYahoo!࿏ઢʯ࢖͍ͬͯΔͱࢥ͍·͢
    ‣ ཪଆͰ͸ʮܦ࿏ޮ཰ʯ΍ʮίετޮ཰ʯͷߟྀ
    ‣ Ո͔ΒӺ·Ͱʹཁ͢Δ࣌ؒΛܭࢉ
    ‣ ెา΍ӺͰిंΛ଴ͨͳ͍Α͏ʹग़ൃ͢Δܭը
    ‣ ࢁखઢͷَͷΑ͏ͳμΠϠ
    ‣ γϛϡϨʔγϣϯ͕Կສճ΋͞Εͨ݁Ռ

    View Slide

  24. ேͷ௨ۈిं
    ‣ ܦ࿏ݕࡧʹʮYahoo!࿏ઢʯ࢖͍ͬͯΔͱࢥ͍·͢
    ‣ ཪଆͰ͸ʮܦ࿏ޮ཰ʯ΍ʮίετޮ཰ʯͷߟྀ
    ‣ Ո͔ΒӺ·Ͱʹཁ͢Δ࣌ؒΛܭࢉ
    ‣ ెา΍ӺͰిंΛ଴ͨͳ͍Α͏ʹग़ൃ͢Δܭը
    ‣ ࢁखઢͷَͷΑ͏ͳμΠϠ
    ‣ γϛϡϨʔγϣϯ͕Կສճ΋͞Εͨ݁Ռ
    ͜ΕΒ΋ORͷҰछ

    View Slide

  25. ׂͱ਎ۙʹOR

    View Slide

  26. ຊ೔࿩͢͜ͱ
    ΦϖϨʔγϣϯζɾϦαʔν
    ࠷దԽ໰୊ʢ਺ཧܭը໰୊ʣ
    ઢܗܭը໰୊ͱ੔਺ܭը໰୊

    View Slide

  27. ࠷దԽ໰୊

    View Slide

  28. ࠷దԽ໰୊͸ORͷҰཁૉ

    View Slide

  29. ઢܗܭը໰୊
    ඇઢܗܭը໰୊
    ੔਺ܭը໰୊
    ήʔϜཧ࿦
    OR
    σʔλ
    ϚΠχϯά
    :
    :
    :
    :
    ۚ༥޻ֶ
    ࠷దԽ໰୊

    View Slide

  30. ࠷దԽ໰୊ͱ͸
    ʢoptimization problemʣ
    ਺ཧܭը໰୊ͱ΋Α͹ΕΔ
    ʢMathematical Programming Problemʣ

    View Slide

  31. ࠷దԽ໰୊ͱ͸
    ༩͑ΒΕͨ৚݅ͷ΋ͱͰ
    ԿΒ͔ͷؔ਺Λ࠷খԽɾ࠷େԽ͢Δ໰୊

    View Slide

  32. ࠷దԽ໰୊ͱ͸
    ༩͑ΒΕͨ৚݅ͷ΋ͱͰ
    ԿΒ͔ͷؔ਺Λ࠷খԽɾ࠷େԽ͢Δ໰୊

    View Slide

  33. ࠷దԽ໰୊ͱ͸

    View Slide

  34. ࠷దԽ໰୊ͱ͸
    ੍໿৚݅ͷ΋ͱͰ

    View Slide

  35. ࠷దԽ໰୊ͱ͸
    ੍໿৚݅ͷ΋ͱͰɼ໨తؔ਺ͷ

    View Slide

  36. ࠷దԽ໰୊ͱ͸
    ੍໿৚݅ͷ΋ͱͰɼ໨తؔ਺ͷ
    ࠷ద஋ͱͳΔ

    View Slide

  37. ࠷దԽ໰୊ͱ͸
    ੍໿৚݅ͷ΋ͱͰɼ໨తؔ਺ͷ
    ࠷ద஋ͱͳΔ࠷దղΛ

    View Slide

  38. ࠷దԽ໰୊ͱ͸
    ੍໿৚݅ͷ΋ͱͰɼ໨తؔ਺ͷ
    ࠷ద஋ͱͳΔ࠷దղΛ࣮ߦՄೳྖҬ͔Β୳͢

    View Slide

  39. ࠷దԽ໰୊ͱ͸
    ੍໿৚݅ͷ΋ͱͰɼ໨తؔ਺ͷ
    ࠷ద஋ͱͳΔ࠷దղΛ࣮ߦՄೳྖҬ͔Β୳͢

    View Slide

  40. ໨తؔ਺ɾ੍໿৚݅ʹΑͬͯ
    ࠷దԽ໰୊͸෼ྨ͞ΕΔ

    View Slide

  41. ࠷దԽ໰୊ͷ෼ྨʢ෦෼తʣ
    ‣ ઢܗܭը໰୊
    ‣ ໨తؔ਺ɾ੍໿৚݅ͷू߹͕̍࣍ࣜͷΈ
    ‣ ඇઢܗܭը໰୊
    ‣ ໨తؔ਺ɾ੍໿৚݅ʹඇઢܗ͕ࣜଘࡏ͢Δ
    ‣ ੔਺ܭը໰୊ʢࠞ߹੔਺ɾ७੔਺ʣ
    ‣ ੍໿৚݅ͷҰ෦·ͨ͸શͯͷม਺ͷͱΔ஋͕੔਺
    ‣ ̎࣍ܭը໰୊
    ‣ ໨తؔ਺͕̎࣍ࣜɼ੍໿৚݅ͷू߹͕̍࣍ࣜ
    etc…

    View Slide

  42. ઢܗܭը໰୊
    ඇઢܗܭը໰୊
    ੔਺ܭը໰୊
    ήʔϜཧ࿦
    OR
    ࠷దԽ໰୊
    σʔλ
    ϚΠχϯά
    :
    :
    :
    :
    ۚ༥޻ֶ

    View Slide

  43. ઢܗܭը໰୊
    ඇઢܗܭը໰୊
    ੔਺ܭը໰୊
    ήʔϜཧ࿦
    OR
    ࠷దԽ໰୊
    σʔλ
    ϚΠχϯά
    :
    :
    :
    :
    ۚ༥޻ֶ

    View Slide

  44. ຊ೔࿩͢͜ͱ
    ΦϖϨʔγϣϯζɾϦαʔν
    ࠷దԽ໰୊ʢ਺ཧܭը໰୊ʣ
    ઢܗܭը໰୊ͱ੔਺ܭը໰୊

    View Slide

  45. ઢܗܭը໰୊

    View Slide

  46. ઢܗܭը໰୊
    ໨తؔ਺ɾ੍໿৚݅ͷू߹͕̍࣍ࣜͷΈ

    View Slide

  47. ྫɿੜ࢈ܭը໰୊

    View Slide

  48. ̎ม਺ͷੜ࢈ܭը໰୊
    ‣ M1, M2, M3ͷݪྉΛ༻͍ͯɼP1, P2Λੜ࢈͍ͯ͠Δ

    View Slide

  49. ̎ม਺ͷੜ࢈ܭը໰୊
    ‣ M1, M2, M3ͷݪྉΛ༻͍ͯɼP1, P2Λੜ࢈͍ͯ͠Δ
    ‣ ར༻ՄೳྔɿM1 ≦ 27t, M2 ≦ 45t, M3 ≦15t

    View Slide

  50. ̎ม਺ͷੜ࢈ܭը໰୊
    ‣ M1, M2, M3ͷݪྉΛ༻͍ͯɼP1, P2Λੜ࢈͍ͯ͠Δ
    ‣ ར༻ՄೳྔɿM1 ≦ 27t, M2 ≦ 45t, M3 ≦15t
    ‣ P1ͷੜ࢈
    ‣ M1Λ2t, M2Λ8t, M3Λ3t
    ‣ ར५͸2ສʂ

    View Slide

  51. ̎ม਺ͷੜ࢈ܭը໰୊
    ‣ M1, M2, M3ͷݪྉΛ༻͍ͯɼP1, P2Λੜ࢈͍ͯ͠Δ
    ‣ ར༻ՄೳྔɿM1 ≦ 27t, M2 ≦ 45t, M3 ≦15t
    ‣ P1ͷੜ࢈
    ‣ M1Λ2t, M2Λ8t, M3Λ3t
    ‣ ར५͸2ສʂ
    ‣ P2ͷੜ࢈
    ‣ M1Λ6t, M2Λ6t, M3Λ1t
    ‣ ར५͸5ສʂ

    View Slide

  52. ̎ม਺ͷੜ࢈ܭը໰୊
    ‣ M1, M2, M3ͷݪྉΛ༻͍ͯɼP1, P2Λੜ࢈͍ͯ͠Δ
    ‣ ར༻ՄೳྔɿM1 ≦ 27t, M2 ≦ 45t, M3 ≦15t
    ‣ P1ͷੜ࢈
    ‣ M1Λ2t, M2Λ8t, M3Λ3t
    ‣ ར५͸2ສʂ
    ‣ P2ͷੜ࢈
    ‣ M1Λ6t, M2Λ6t, M3Λ1t
    ‣ ར५͸5ສʂ
    ར५Λ࠷େԽ͍ͨ͠

    View Slide

  53. ̎ม਺ͷੜ࢈ܭը໰୊
    ݪྉʘ੡඼ P1 P2 ར༻Մೳྔ
    M1 2 6 27
    M2 8 6 45
    M3 3 1 15
    ར५ 2 5

    View Slide

  54. ̎ม਺ͷੜ࢈ܭը໰୊
    ݪྉʘ੡඼ P1 P2 ར༻Մೳྔ
    M1 2 6 27
    M2 8 6 45
    M3 3 1 15
    ར५ 2 5

    View Slide

  55. ̎ม਺ͷੜ࢈ܭը໰୊
    ੡඼P1, P2ͷੜ࢈ྔΛมྔ (x1, x2) ͱ͢Δͱ
    Λ࠷େԽͤ͞Δ࠷దԽ໰୊ͱͳΔ

    View Slide

  56. ̎ม਺ͷੜ࢈ܭը໰୊
    ݪྉʘ੡඼ P1 P2 ར༻Մೳྔ
    M1 2 6 27
    M2 8 6 45
    M3 3 1 15
    ར५ 2 5

    View Slide

  57. ̎ม਺ͷੜ࢈ܭը໰୊
    ੍໿৚݅͸ར༻Մೳͳݪྉͷྔͱ੡඼͸ඇෛ

    View Slide

  58. ̎ม਺ͷੜ࢈ܭը໰୊
    ੍໿৚݅͸ར༻Մೳͳݪྉͷྔͱ੡඼͸ඇෛ

    View Slide

  59. ̎ม਺ͷੜ࢈ܭը໰୊
    ઢܗܭը໰୊ͱͯ͠ఆࣜԽ

    View Slide

  60. ̎ม਺ͷੜ࢈ܭը໰୊
    ઢܗܭը໰୊ͱͯ͠ఆࣜԽ
    ͜ͷ໰୊ͷ࠷దղΛٻΊ͍ͨ

    View Slide

  61. ͱ͜ΖͰ

    View Slide

  62. ੡඼͸࿈ଓ஋͔ʁ

    View Slide

  63. ੔਺ܭը໰୊

    View Slide

  64. ੔਺ܭը໰୊
    ੍໿৚݅ͷҰ෦·ͨ͸શͯͷม਺ͷͱΔ஋͕੔਺

    View Slide

  65. ྫɿੜ࢈ܭը໰୊ʢ੔਺ʣ

    View Slide

  66. ̎ม਺ͷੜ࢈ܭը໰୊ʢ੔਺ʣ
    ‣ M1, M2, M3ͷݪྉΛ༻͍ͯɼP1, P2Λੜ࢈͍ͯ͠Δ
    ‣ ར༻ՄೳྔɿM1 ≦ 27t, M2 ≦ 45t, M3 ≦15t
    ‣ P1ͷੜ࢈
    ‣ M1Λ2t, M2Λ8t, M3Λ3t
    ‣ ར५͸2ສʂ
    ‣ P2ͷੜ࢈
    ‣ M1Λ6t, M2Λ6t, M3Λ1t
    ‣ ར५͸5ສʂ
    ར५Λ࠷େԽ͍ͨ͠

    View Slide

  67. ̎ม਺ͷੜ࢈ܭը໰୊ʢ੔਺ʣ
    ‣ M1, M2, M3ͷݪྉΛ༻͍ͯɼP1, P2Λੜ࢈͍ͯ͠Δ
    ‣ ར༻ՄೳྔɿM1 ≦ 27t, M2 ≦ 45t, M3 ≦15t
    ‣ P1ͷੜ࢈ɹݸ਺ͰΫϨ
    ‣ M1Λ2t, M2Λ8t, M3Λ3t
    ‣ ར५͸2ສʂ
    ‣ P2ͷੜ࢈ɹݸ਺ͰΫϨ
    ‣ M1Λ6t, M2Λ6t, M3Λ1t
    ‣ ར५͸5ສʂ
    ར५Λ࠷େԽ͍ͨ͠

    View Slide

  68. ̎ม਺ͷੜ࢈ܭը໰୊ʢ੔਺ʣ
    ‣ M1, M2, M3ͷݪྉΛ༻͍ͯɼP1, P2Λੜ࢈͍ͯ͠Δ
    ‣ ར༻ՄೳྔɿM1 ≦ 27t, M2 ≦ 45t, M3 ≦15t
    ‣ P1ͷੜ࢈ɹݸ਺ͰΫϨ
    ‣ M1Λ2t, M2Λ8t, M3Λ3t
    ‣ ར५͸2ສʂ
    ‣ P2ͷੜ࢈ɹݸ਺ͰΫϨ
    ‣ M1Λ6t, M2Λ6t, M3Λ1t
    ‣ ར५͸5ສʂ
    ར५Λ࠷େԽ͍ͨ͠
    ੔਺
    ੔਺

    View Slide

  69. ̎ม਺ͷੜ࢈ܭը໰୊ʢ੔਺ʣ
    ઢܗܭը໰୊ͱͯ͠ఆࣜԽ

    View Slide

  70. ̎ม਺ͷੜ࢈ܭը໰୊ʢ੔਺ʣ
    ઢܗܭը໰୊ͱͯ͠ఆࣜԽ
    ੔਺ͰΫϨ
    ੔਺ͰΫϨ

    View Slide

  71. ̎ม਺ͷੜ࢈ܭը໰୊ʢ੔਺ʣ
    ੔਺ܭը໰୊ͱͯ͠ఆࣜԽ

    View Slide

  72. ̎ม਺ͷੜ࢈ܭը໰୊ʢ੔਺ʣ
    ੔਺ܭը໰୊ͱͯ͠ఆࣜԽ
    ͜ͷ໰୊ͷ࠷దղΛٻΊ͍ͨ

    View Slide

  73. άϥϑͰΈΔղ๏
    ԼهΛάϥϑͰදݱ͢Δ

    View Slide

  74. View Slide

  75. View Slide

  76. ઢܗܭը໰୊ͷ৔߹

    View Slide

  77. ઢܗܭը໰୊ͷ৔߹

    View Slide

  78. ઢܗܭը໰୊ͷ৔߹

    View Slide

  79. ઢܗܭը໰୊ͷ৔߹
    ࠷దղ

    View Slide

  80. ੔਺ܭը໰୊ͷ৔߹

    View Slide

  81. ੔਺ܭը໰୊ͷ৔߹
    ࠷దղ?

    View Slide

  82. ੔਺ܭը໰୊ͷ৔߹
    ࠷దղ!

    View Slide

  83. ઢܗܭըͱ੔਺ܭըͷҧ͍
    ‣ ઢܗܭը໰୊ͷ࠷దղ
    ‣ ୯ମ๏ͱ͍͏ɺลΛḷ͍ͬͯ͘ํ๏͕࣮༻త
    ‣ ଟ߲ࣜ࣌ؒͰղ͚ͳ͍ͱ͖͕͋Δ
    ‣ ಺఺๏ͱ͍͏ղ๏΋ଘࡏ͢Δ
    ‣ ࣮ߦྖҬͷ಺෦͔ΒղΛ୳ࡧ͢Δ
    ‣ ੔਺ܭըͷ࠷దղ
    ‣ ઢܗܭըͰಘΒΕͨ࠷దղʹ͍ۙ੔਺ͷ఺͕࠷దղʹͳΒͳ͍
    ৔߹͕͋Δ
    ಺఺๏͸
    ϫγ͕ҭͯͨ

    View Slide

  84. ·ͱΊ

    View Slide

  85. ·ͱΊ
    ࠷దԽ໰୊͸
    ͳΜͱͳ͘ཧղͯ͠΋Β͑ͨͰ͠ΐ͏͔ʁ

    View Slide

  86. ·ͱΊ - ࠷ޙʹ
    ‣ ͜ͷ෼໺͸·ͩ·ͩϓϩάϥϜͷࢿ࢈͕গͳ͍
    ‣ ਺ཧϞσϧʹམͱͨ͢Ίʹ਺ֶͷ஌͕ࣝͳ͍ͱ೉͍͠
    ‣ ઐ໳తͳاۀ͕ಠ઎͍ͯ͠Δײ͕͋Δ
    ‣ ͦΕͧΕͷܭը໰୊͸ߟ͑Δ͜ͱ͕ҧ͏
    ‣ ݚڀ͍ͨ͠৔߹͸෼໺ΛߜΔ΂͖

    View Slide

  87. ·ͱΊ
    ͜ΕҎ্ͷ࠷దԽ໰୊ͷ࿩΍
    γϛϡϨʔγϣϯͳͲ͸
    ୭͔͕΍ͬͯ͘ΕΔͱ৴͍ͯ͡·͢ʂ

    View Slide

  88. Thank you :)

    View Slide

  89. ͓·͚ - ಺఺๏ʢΧʔϚʔΧʔ๏ʣ

    View Slide