Slide 1

Slide 1 text

࠷ߴPG࠷ߴΛ ܾΊΔ࠷ߴͷ΍Γ͔ͨ 5PLZV3VCZձٞ !IJHIXJEF

Slide 2

Slide 2 text

͜Μʹͪ͸ ʮ಺ࢁߴ޿ʯͱ͍͏໊લͳͷͰΠϯλʔωοτ্Ͱ͸ IJHIXJEFΛ໊৐͍ͬͯ·͢ ϦϒηϯεͰʮϚοϋόΠτʯͷΤϯδχΞϦϯάϚωʔ δϟʔΛ΍͍ͬͯ·͢ ೥લͷ5PLZV3VCZձٞͰ͸ϥοϓΛ͠·ͨ͠

Slide 3

Slide 3 text

5PLZV3VCZձٞɺ࠷ߴͰ͢Ͷʂʂ Ϗʔϧ͕͏·͍ ൧͕͏·͍ -5͕͓΋͠Ζ͍

Slide 4

Slide 4 text

Ͱ͸ɺ͋ͳͨʹͱͬͯͷ ࠷ߴPG࠷ߴ͸ͳΜͰ͔͢ʁ ࠷ߴͷϏʔϧ͸ʁ εϙϯαʔͷαϯτϦʔ͞ΜͷϏʔϧ͕࠷ߴͰ͢ ࠷ߴͷ൧͸ʁ ౤ථʹΑΔʮ൧Ԧʯͷܾఆ ࠷ߴͷ-5͸ʁ ౤ථʹΑΔʮ-5Ԧʯͷܾఆ

Slide 5

Slide 5 text

࠷ߴPG࠷ߴΛܾΊΔʹ͋ͨͬͯ ౤ථͱ͍͏΋ͷ͕ ॏཁͳ΋ͷͳΜͰ͢Ͷʁ

Slide 6

Slide 6 text

5PLZV3VCZձٞʹ͓͚Δ
 ౤ථϧʔϧͷ໌ྎੑ͕͍͢͝ IUUQTCJUMZ5T1L+4

Slide 7

Slide 7 text

Ͱ΋ ຊ౰ʹɺօ͞Μͷຽҙ͕ ൓ө͞ΕΔ࢓૊Έʹ ͳ͍ͬͯΔͰ͠ΐ͏͔ʁ

Slide 8

Slide 8 text

ͨͱ͑͹ɺࠓճͷ࣋ͪدΓ൧ʹ͓͚Δ ͜ΜͳέʔεΛߟ͑ͯΈ·͢ " # $

Slide 9

Slide 9 text

"͞ΜʮτϯΧπΛͳɺτϯΧπΛ৯͍ͳΑʯ " # $

Slide 10

Slide 10 text

#͞Μʮࠓ೔͸ΧϨʔϥΠεͩͧʂ͓͔ΘΓ΋͍͍ͧʂʯ " # $

Slide 11

Slide 11 text

$͞ΜʮੜϋϜͷݪ໦ങ͖ͬͯͨΑʙʯ " # $

Slide 12

Slide 12 text

͜ͷऀ͕͖࣋ͬͯͨ൧Λ ਓͰ౤ථͯ͠ɺ࠷ߴͷ൧ΛܾΊ͍ͨͱࢥ͍·͢ " # $

Slide 13

Slide 13 text

" # $ ͜Μͳײ͡Ͱ౤ථ͞Ε·ͨ͠

Slide 14

Slide 14 text

݁ՌੜϋϜͷউརʂ " # $ ථ ථ ථ

Slide 15

Slide 15 text

Ͱɺຊ౰ʹ͍͍ͷʁʁʁʁ " # $ ථ ථ ථ

Slide 16

Slide 16 text

Ͱɺຊ౰ʹ͍͍ͷʁʁʁʁ " # $ ա൒਺ ͱΕͯΔΘ͚ ͡Όͳ͍

Slide 17

Slide 17 text

Ͱɺຊ౰ʹ͍͍ͷʁʁʁʁ " # $ ա൒਺ ͱΕͯΔΘ͚ ͡Όͳ͍ ࣮͸͜ͷਓୡ͸ ʮख࡞Γྉཧʯʹ Ձ஋Λײ͍ͯͯ͡ ੜϋϜ͡Όͳ͚Ε͹ ͳΜͰ΋Α͔ͬͨ

Slide 18

Slide 18 text

ͦ͜Ͱ*37ͱ͍͏΋ͷ͕͍͟͝·͢ ΠϯελϯτɾϥϯΦϑɾϰΥʔςΟϯά *37ɺ JOTUBOUSVOP⒎WPUJOH ͸ɺ༗ݖऀ͕༏ઌॱҐʹ͕ͨͬ͠ ͯީิΛϥϯΫ͚ͮ͢Δબڍํ๏ͷΞϝϦΧӳޠͰͷ༻ ޠɻ೔ຊޠͰ͸ʮ༏ઌॱҐ෇౤ථ੍ʯͳͲͱ༁͞ΕΔɻ ୯਺બग़ͷબ޷౤ථʹ͓͍ͯ࠷΋Ұൠతͳख๏Ͱ͋Δ XJLJQFEJB༏ઌॱҐ෇౤ථ੍ ೥݄೔Ӿཡ IUUQTKBXJLJQFEJBPSHXJLJ&""&&"&#%%&##&"&""&#

Slide 19

Slide 19 text

΍Γ͔ͨ ౤ථ༻ࢴ ͱΜ͔ͭ<> ΧϨʔ<> ੜϋϜ<> ౤ථ༻ࢴ ͱΜ͔ͭ<> ΧϨʔ<> ੜϋϜ<> ౤ථ༻ࢴ ͱΜ͔ͭ<> ΧϨʔ<> ੜϋϜ<> ౤ථ༻ࢴ ͱΜ͔ͭ<> ΧϨʔ<> ੜϋϜ<> ౤ථ༻ࢴ ͱΜ͔ͭ<> ΧϨʔ<> ੜϋϜ<> ౤ථ༻ࢴ ͱΜ͔ͭ<> ΧϨʔ<> ੜϋϜ<> ౤ථ༻ࢴ ͱΜ͔ͭ<> ΧϨʔ<> ੜϋϜ<> ީิऀ͕ॻ͍ͯ͋Δ౤ ථ༻ࢴʹɺ֤ʑʹͱͬ ͯͷʮॱҐʯΛهೖ͠ ͯ౤ථ͢Δ

Slide 20

Slide 20 text

উऀܾఆ΁ͷϩδοΫ ूܭ ҐථͰա൒਺Λͱ͍ͬͯΔީิ͕͍Δʁ ҐථͰ୯ಠͷ࠷ԼҐΛܾΊΒΕΔʁ \O^ҐථͰ୯ಠͷ࠷ԼҐΛܾΊΒΕΔʁ ࠷ԼҐΛআ֎ͯ͠ɺ ࠷ԼҐΛର৅ʹͨ͠౤ථͷॱҐ෇͚Λ܁Γ্͛Δ উऀܾఆ :FT /P :FT /P /P :FT

Slide 21

Slide 21 text

ूܭ͢Δ ϥ΢ϯυ B C D E F G H ܭ ͱΜ͔ͭ Ґථ Ґථ Ґථ ΧϨʔ Ґථ Ґථ Ґථ ੜϋϜ Ґථ Ґථ Ґථ

Slide 22

Slide 22 text

ूܭ͢Δ ϥ΢ϯυ B C D E F G H ܭ ͱΜ͔ͭ Ґථ Ґථ Ґථ ΧϨʔ Ґථ Ґථ Ґථ ੜϋϜ Ґථ Ґථ Ґථ ա൒਺ͱΕͯͳ͍

Slide 23

Slide 23 text

ूܭ͢Δ ϥ΢ϯυ B C D E F G H ܭ ͱΜ͔ͭ Ґථ Ґථ Ґථ ΧϨʔ Ґථ Ґථ Ґථ ੜϋϜ Ґථ Ґථ Ґථ ա൒਺ͱΕͯͳ͍ ҐථͰ͸ ࠷ԼҐܾΊΒΕͳ͍

Slide 24

Slide 24 text

ूܭ͢Δ ϥ΢ϯυ B C D E F G H ܭ ͱΜ͔ͭ Ґථ Ґථ Ґථ ΧϨʔ Ґථ Ґථ Ґථ ੜϋϜ Ґථ Ґථ Ґථ ա൒਺ͱΕͯͳ͍ ҐථͰ͸ ࠷ԼҐܾΊΒΕͳ͍ Ґථ͕ Ұ൪গͳ͍ΧϨʔ͕ ࠷ԼҐ

Slide 25

Slide 25 text

ूܭ͢Δ ϥ΢ϯυ ΧϨʔʹ౤ථ͍ͯͨ͠ॱҐ͕શͯ܁Γ্͕Δ B C D E F G H ܭ ͱΜ͔ͭ 
 
 Ґථ Ґථ ΧϨʔ ੜϋϜ 
 Ґථ Ґථ

Slide 26

Slide 26 text

ूܭ͢Δ ϥ΢ϯυ ΧϨʔʹ౤ථ͍ͯͨ͠ॱҐ͕શͯ܁Γ্͕Δ B C D E F G H ܭ ͱΜ͔ͭ 
 
 Ґථ Ґථ ΧϨʔ ੜϋϜ 
 Ґථ Ґථ ա൒਺ͱͬͨ

Slide 27

Slide 27 text

ͱΜ͔ͭ༏উʂʂʂʂ

Slide 28

Slide 28 text

উऀܾΊΔ·Ͱͷ ϓϩηε೉͍͠͠ ूܭ͢ΔਓɺେมͰ͢ΑͶ

Slide 29

Slide 29 text

ʮ೉ղ͗͢Δʯͱ͔ݴΘΕͯΔ͠ IUUQTXJUIOFXTKQBSUJDMFGRR8RR"

Slide 30

Slide 30 text

͡Ό͋ϓϩάϥϜʹ ೚ͤΕ͹Α͘ͳ͍Ͱ͔͢

Slide 31

Slide 31 text

HFN࡞Γ·ͨ͠

Slide 32

Slide 32 text

࢖͍ํ require 'irv' irv = Irv.new(['とんかつ', 'カレー', '生ハム']) p irv.candidates # => ["とんかつ", "カレー", "生ハム"] ballots = [] 7.times do ballots << irv.issue_ballot end ballots[0].fill!(['とんかつ', 'カレー']) ballots[1].fill!(['とんかつ', 'カレー']) ballots[2].fill!(['カレー', 'とんかつ', '生ハム']) ballots[3].fill!(['カレー', 'とんかつ']) ballots[4].fill!(['生ハム', 'カレー', 'とんかつ']) ballots[5].fill!(['生ハム', 'とんかつ', 'カレー']) ballots[6].fill!(['生ハム', 'とんかつ']) ballots.each { |ballot| irv.poll!(ballot) } p irv.winner # => "とんかつ"

Slide 33

Slide 33 text

࢖͍ํ require 'irv' irv = Irv.new(['とんかつ', 'カレー', '生ハム']) p irv.candidates # => ["とんかつ", "カレー", "生ハム"] HFNJOTUBMMJSWͰΠϯετʔϧ *SWOFXͷҾ਺ʹ౤ථީิΛ౉ͯ͋͛͠Δ DBOEJEBUFTͰީิऀ͕Θ͔Δ

Slide 34

Slide 34 text

࢖͍ํ ballots = [] 7.times do ballots << irv.issue_ballot end ballots[0].fill!(['とんかつ', 'カレー']) ballots[1].fill!(['とんかつ', 'カレー']) ballots[2].fill!(['カレー', 'とんかつ', '生ハム']) ballots[3].fill!(['カレー', 'とんかつ']) ballots[4].fill!(['生ハム', 'カレー', 'とんかつ']) ballots[5].fill!(['生ハム', 'とんかつ', 'カレー']) ballots[6].fill!(['生ハム', 'とんかつ']) ballots.each { |ballot| irv.poll!(ballot) } JTTVF@CBMMPUͰ౤ථ༻ࢴ CBMMPU Λൃߦ CBMMPUʹީิΛॱҐ෇͖Ͱهೖ pMM ͢Δ هೖͨ͠༻ࢴΛ౤ථ QPMM ͢Δ

Slide 35

Slide 35 text

్தͷථ਺΋Θ͔ΔΑ͏ʹ͠·ͨ͠ p irv.winner result = irv.result result.process.each do |round| puts "\n" puts "round: #{round.order}" puts "majority: #{round.majority}" unless round.majority.nil? puts "loser: #{round.loser}" unless round.loser.nil? p round.tallied_votes end _ "とんかつ" round: 1 loser: カレー [{:とんかつ=>2, :カレー=>2, :生ハム=>3}, {:とんかつ=>4, :カレー =>3, :生ハム=>0}] round: 2 majority: とんかつ [{:とんかつ=>4, :生ハム=>3}]

Slide 36

Slide 36 text

͋Ε͜Ε ஏ͔ͣ͠ͳ͕ΒॳΊͯHF̼࡞Γ·ͨ͠ SVCZHFNTPSHͷ'"ઃఆ͠·ͨ͠ ࣗ෼ͷHFN͕ʮJSWʯͱ͍͏HFOFSBM͔ͭจࣈ਺͕୹໊͍લऔͬ ͯΑ͔ͬͨͩΖ͏͔ʁ ͔͠΋ʮJSCʯͱࣅͯΔ͠ ਓʹͲ͏࢖ΘΕΔ͔ߟ͑ͳ͕ΒΠϯλʔϑΣʔεߟ͑Δͷ೉͍͠ 4USJOH͔OJM͕ฦΔϝιουΛ༻ҙͪ͠Ό͏ਃ͠༁ແ͞ དྷ೥Ҏ߱ͷ൧Ԧ-5Ԧͷܾఆϓϩηεʹ͜ͷHFNΛ૊ΈࠐΜͰ΋ Β͏ͱ͔Α͔ͬͨΒͪΐͬͱ͚ͩͰ΋͝ݕ౼͍͚ͨͩͨΒ ͱͬͯ΋͏Ε͍͠Ͱ͢ʂʂ

Slide 37

Slide 37 text

)BQQZ )BDLJOH7PUJOH