NB. Game theory//Voting Power Indices NB. Shapley Shubik index NB. * 65 ss0 20 30 40 NB. Banzhaf index NB. !!!very danderous !!! over memory NB. * 115 bz a=: 30 40 80 50 NB. Deegan Packel index NB. * 24 dp 20 4 3 1 1 NB. ------------------------------------- NB. util tap=: i.@! A. i. NB. Table of all permutations cp=: {@(,&<) NB. Cartesian products/ 0 1 cp 2 3 4 mean=: +/%# drop_item=: 4 : '( x ~: i. # y) # y' NB. 1 drop_item i.4 NB.========================================== NB. ---------------------------------- ss0=: 4 : 0 NB. Shapley Shubik index NB. Usage: 65 ss0 20 30 40 'TAP PIVOT CUM'=: x ss0_sub y CV0=.{."1 PIVOT #"1 TAP NB. index of casting vote CV=.+/"1(i.# y)=/ CV0 NB. classify pivot (1 x: CV % +/ CV); CV0 ) NB. 65 ss0 a NB. +---------+-----------+ NB. |0 1r2 1r2|2 1 2 2 1 1| NB. +---------+-----------+ ss0_sub=: 4 : 0 NB. 65 ss_sub a=: 20 30 40 COMBI=. (TAP=.tap # y){ y NB. a=: 20 30 40 COMPARE=. x <:"1 CUM=: +/\"1 COMBI TAP;COMPARE;CUM ) NB. ------------------------- NB. Banzhaf index NB. Usage: 115 bz a=: 30 40 80 50 bz=: 4 : 0 NB. very hard for calc!!! waste many memory NB. 121 u 3 drop_item DC1 ANS=. <'' for_ctr. i. # y do. COMBI=. take_allpair TMP0=. ctr drop_item y NB. drop own 'PIV REM' =. (ctr{ y); TMP0 TMP1=. COMBI bz_sub1 x;PIV;REM ANS=. ANS,: i. NR=: # y ANS=. <'' for_ctr. i. # IND do. TMP=. ~. ,(ctr{IND) take_anypair (L:0) # y ANS=. ANS,TMP end. ({@> i. # y), }. ANS NB. add pivot only ) bz_sub1=: 4 : 0 NB. check swing NB. var is COMBI pivot x;PIV;REM NB. BAR is x of bz NB. x is bz_sub0 (n drop_item y) NB. PIVOT REMDAT is now calking (in ctr) 'BAR PIVOT REMDAT'=. y NB. REMDAT is except pivot TMP0=. ; +/ L:0 x { L:0 REMDAT IND1=.+/ 0 3{ BAR (< , >:) TMP0,: PIVOT+TMP0 IND=. (BAR >: PIVOT), IND1 1 x: (+/ -. IND) % # IND ) take_anypair=: 4 : 0 NB. original script is in combination_pwup.ijs NB. 3 u 5 NB. detail of combination tmp0=., ,./@{ x # < i. y tmp1=. ~. /:~ L:0 tmp0 ((; +/ L:0 +/ L:0 e. L:0 tmp1) e. x)# tmp1 ) NB. ==================------------- dpx=: 4 : 0 NB. Deegan Packel index NB. 24 dp 20 4 3 1 1 COMBI=. x calc_min y WHOLE=. /:~ ~. ; COMBI TABLE0=. WHOLE e. L:0 COMBI VAL0=. 1 x: % ; +/ L:0 TABLE0 VAL=. ;("1),.(TABLE0 * L:0 {@> VAL0) ({. y) = ; +/ L:0 y e. L:0 >{. y ind # y ) order_small=: 3 : ' ~. (/: ; # L:0 y) { y' NB. boxed sort with small combination_all =: 4 : 0 NB. first execute NB. find all combination get over x CTR0=. 2 }. i. # y NB. drop 0 1 // }: is mistake ANS=. <'' for_ctr. i. # CTR0 do. COMBI=. (ctr{CTR0) take_anypair # y TMP=. x <: L:0 +/\ L:0 COMBI{ L:0 y ind=. * ; +/ L:0 TMP COMBI=. ind # COMBI ANS=. ANS,COMBI end. ~. /:~ }. ANS ) NB. ] a1=. 24 dpx a NB. +--------------------+ NB. |1r2 1r2 0 0 0 | NB. |1r3 0 1r3 1r3 0 | NB. |1r3 0 1r3 0 1r3 | NB. +--------------------+ NB. | 7r6 1r2 2r3 1r3 1r3| NB. |7r18 1r6 2r9 1r9 1r9| NB. +--------------------+ NB. Japanese Diet NB. representatibe DR=: 306 116 21 9 7 5 3 3 1 1 1 1 1 1 1 1 NB. comunist party is 9 NB. 480 (absence 2) NB. Council NB. before DC0=: 116 71 21 7 6 9 5 5 1 NB. d ld k c nn+ sec-ld spd non minna NB. absence 1 NB. comunist party is 7 NB. 2010 7/11 DC1=: 106 84 19 6 3 5 4 4 11 NB. 242 NB. comunist party is 6