#OK to post homework #George Spahn, 3-27-2022, Assignment 16 #2 IsCondorcet := proc(P) local sv,i: sv := SV(Tour(P)): for i from 0 to nops(sv)-1 do if not(i in sv) then RETURN (true): fi: od: RETURN (false): end: #3 ExactCond := proc(n,v) local rp,c,r: c := 0: rp := RP(n,v): for r in rp do if IsCondorcet(r) then c := c+1: fi: od: c / nops(rp): end: #4 EstCond := proc(n,v,K) local i,c,r: c := 0: for i from 1 to K do r := RandP(n,v): if IsCondorcet(r) then c := c+1: fi: od: evalf(c / K): end: #5 Borda := proc(P) local n,i,p,ret: n := nops(P[1]): for i from 1 to n do ret[i]:=0: od: for p in P do for i from 1 to n do ret[p[i]] := ret[p[i]] + (n-i): od: od: [seq(ret[i],i=1..n)]: end: #7 BordaRank := proc(P): local b,m,ret,i,s1,j: b := Borda(P): m := max(b): ret := []: for i from m to 0 by -1 do s1 := {}: for j from 1 to nops(b) do if b[j] = i then s1 := s1 union {j}: fi: od: if nops(s1) > 0 then ret := [op(ret),s1]: fi: od: ret: end: