このブログは、旧・はてなダイアリー「檜山正幸のキマイラ飼育記 メモ編」(http://d.hatena.ne.jp/m-hiyama-memo/)のデータを移行・保存したものであり、今後(2019年1月以降)更新の予定はありません。

今後の更新は、新しいブログ http://m-hiyama-memo.hatenablog.com/ で行います。

ブール値投票のプロトコル

事前に次の事項を決めておく。

  1. 投票開始と終了の時間
  2. 有権者とその階層分け
  3. 棄権の時の扱い →無効、賛成(true)、反対(false)
  4. 有効投票数の最低値;それに満たないときは、投票そのものが無効となる、ただし、棄権を賛成/反対とみなす規約があれば、棄権は有効票になる。

投票が終わると集計と判定をする。そのとき、判定基準/手続きが必要。有権者が二階層に分けられているとして以下記述する(n階層でも同じ)。階層1と階層2とする。

有権者の投票結果は、数値1と0でエンコードされ、総投票数はN1、N2とする。有効な投票結果を並べたベクトル(ビット列に見える)をv1, v2とする。

判定関数fは、投票結果ベクトルを受け取って、0か1、または[0, 1]内の実数値を返す。次があれば十分だろう。

  1. min(v) -- 全員一致でないと賛成とならない。
  2. floor(ave(v)) -- 多数決。同数なら否決(0 = false)
  3. ceiling(ave(v)) -- 多数決。同数なら可決(1 = true)
  4. ave(v) -- 実数の比率(階層2で決める)

階層1の判定関数をf1として、r1 = f1(v1) とする。整数値とみた値r1を階層2に反映させる関数をgとする。次のようなgが考えられる。

  1. 恒等関数
  2. 定数mを使った m*r1
  3. 定数w(実数の重さ)とN1を使って、w*N1*r1

最終的な結果は、f2(v2, g(r1))で決まる。

全体の結果を可決、否決、未決と分けると、それぞれの後に来るアクションを決めておく必要がある。

  1. 終了 成功裏に終わった
  2. 破棄 なかったことにする
  3. 保留 後日に持ち越す、再投票かもしれない

他に、有権者であることの確認(認証)、重複投票の予防、投票の告知、誘導、催促などが必要