https://blog.with2.net/my/link#

2026/10/31

比例代表制選挙における投票数比例配分方式

投票数に比例した議席を割り当てるというのが比例代表制の趣旨だが、議席総数を投票数で比例配分した理想的な議席数は、必ずしも整数にならない。このことから、端数処理をいかに行うかということでいろいろな方法が提案されている。

実際に割り当てられる議席数と理想的な議席数との差の絶対値が1未満であるとき、クォータ条件を満たすと言う。

クォータ条件を必ず満たす方式として、投票数比例配分方式がある。

政党の数を N、投票数を v = (v_1, v_2, ..., v_N)、総議席数を S とする。投票総数を V = v_1 + v_2 + ... + v_N とし、政党 i の理想的な議席数を q_i = S ( v_i / V ) とし、理想的な議席配分を q = (q_1, q_2, ..., q_N ) とする。政党 i に割り当てられる議席数を s_i とし、議席配分を s = ( s_1, s_2, ..., s_N) とする。

投票数比例配分方式は、割り当てられる議席数と理想的な議席数との差の絶対値の和

 U(s) =  | s_1 - q_1 | + | s_2 - q_2 | + ... + | s_N - q_N | 

を最小にする議席配分を求める。 

そのアルゴリズムは、

 各政党 i の理想的な議席数 q_i の整数部分 P_i をその政党に割り当て、

 残った K 個の議席を理想的な議席数の小数部分 r_i の大きいものから割り当てる

という非常に簡単で効率的な方法である。

例えば、政党数 N=4、投票数 v=(59, 23, 14, 4)、総議席数 S=10 とするとき、総投票数は V=100、理想的な議席数は q=(5.9, 2.3, 1.4, 0.4) となる。

まず、理想的な議席数の整数部分 P_i を各党に割り当てる。

P=(5, 2, 1, 0)

残りの議席数は K=10-(5+2+1+0)=2

理想的な議席数の小数部分 r_i の大きいものから K=2 議席を割り当て

s_1 = 5 + 1 = 6, s_3 = 1 + 1 = 2, s_4 = 0 + 0 = 0, s_3 = 2 + 0 = 2, s = ( 6, 2, 2, 0 )

が得られる。

 i  q_i  P_i  r_i  s_i   | s_i - q_i |

 1  5.9   5   0.9  5+1=6    0.1

 3  1.4   1   0.4  1+1=2    0.6

 4  0.4   0   0.4  0+0=0    0.4

 2  2.3   2   0.3  2+0=2    0.3

実際に割り当てられる議席数と理想的な議席数との差の絶対値  | s_i - q_i | はどれも1未満であり、クォータ条件を満たす。

また、このアルゴリズムで得られる議席配分は、実際に割り当てられる議席数と理想的な議席数との差の絶対値の総和

  U(s) = | s_1 - q_1 | + | s_2 - q_2 | + | s_3 - q_3 | + | s_4 - q_4 | 

を最小化することが証明されている。

総議席数が S=9 のときは q=(6.55, 2.55, 1.55, 0.44)、K=9-(6+2+1+0)=0、より s=(6, 2, 1, 0)

S=11 のときは q=(5.36, 2.09, 1.27, 0.36)、K=11-(5+2+1+0)=3

 i  q_i  P_i  r_i  s_i

 1  5.36  5  0.36  5+1=6

 4  0.36  0  0.36  0+1=1

 3  1.27  1  0.27  1+1=2

 2  2.09  2  0.09  2+0=2

s=(6, 2, 2, 1)

現在話題になっているサンラグ方式は、クォータ条件を満たさない場合がある。
このことから、選挙において投票数比例配分方式が採用されることを期待する。

2026/10/30

比例代表制選挙におけるサンラグ方式等の議席配分方式の比較検討

 比例代表制選挙におけるサンラグ方式等の議席配分方式の比較検討 — 概要

比例代表制の選挙において、公平に議席を配分する方法としてサンラグ方式が提案されている。

投票数に比例した議席を割り当てるというのが比例代表制の趣旨であるが、議席総数を投票数で比例配分した理想的な議席数は必ずしも整数にならない。

そこで本稿では、不公平さを表す

 議席誤差絶対値和、議席誤差二乗和、票価誤差二乗和、議席票価誤差積和

の4種の評価関数を導入する。

これらの評価関数の値を最小化する議席配分を求める方式の特徴を例を示しながら解説する。

議席誤差絶対値和や議席誤差二乗和を最小化する方法は、この理想的な議席数と1以上異なることのない議席配分が求まる方法である。また、議席誤差絶対値和を最小化する議席配分と議席誤差二乗和を最小化する議席配分は一致する。これらの方式を投票数比例配分方式と呼ぶ。これらの評価関数を最小化する議席配分を効率的に求める簡潔なアルゴリズムが存在する。

票価誤差二乗和を最小化する方式は、理想的な議席数と1以上異なることがある議席配分方法である。

議席票価誤差積和を最小化する方式も、理想的な議席数と1以上異なることがある議席配分方法である。この方法には、議席配分を効率的に求めることができる簡潔なアルゴリズムが存在する。

サンラグ方式は議席票価誤差積和を最小化する方式と等価な議席配分方法である。

ドント方式についても議席配分のアルゴリズムを示す。

これらの方式での議席配分のシミュレーション結果を示す。

結論を述べたのちに、補題や定理などの証明を示す。

---------------------------------------------
本文は 議席配分方式 にあります。


2021/08/19

20. 円錐の半分?

17-19 で三角形、四角形の面積を半分にする問題を解いた。

今回は円錐を半分にする実験をしてみよう。

まず、円錐を作るための図形をスクラッチで描いてみた。



これを実行すると、円錐を作るための型紙が表示される。
これを印刷し、内側から1から10まで線に番号をつける。
赤線で切り、右下ののりしろにのりをつけて、線が繋がるようにはり合わせる。


体積を測る方法として、水を入れその重さで体積を測る。



10の目盛りまでの体積の半分の体積になるのはどの目盛りだろうか。



2021/08/14

19. 正方形の中に面積が半分の正方形を折る (2)

 前回とは別の方法で、内側の正方形の面積が外側の正方形の面積の半分になるように、
折り紙で面積が半分の正方形を折ってみよう。

1. 赤い線で示した対角線の折り目をつける。

2. もう一つの赤い線で示した対角線の折り目をつける。

3. 左下の頂点から左上の頂点への辺を右上がりの対角線に合わせて折り、緑の線で示した折り目をつける。




ここで、元の図形が正方形であったことから、上図の a は全て45° である。
 故に、錯角が等しいことにより、正方形の上辺と水平になった赤い線は平行である。

4. 水平になった赤い線で示される折り目に沿って、黒の線で示した折り目をつける。


5. 元の正方形に戻す。

6. 正方形の右側の縦線を底辺とし、正方形の中点を頂点とする赤線で囲まれた三角形が直角二等辺三角形であることを確認する。


7. 黒線で囲われた三角形は、右下の頂点の角度が 45° であり、上の辺が正方形の上辺と平行であることより、右上の頂点の角度は直角である。したがって、黒線で囲われた三角形は、直角二等辺三角形である。


赤線と黒線の交点から正方形の下辺に垂線を下ろす。


 この赤い線で囲まれた三角形も直角二等辺三角形である。この三角形と黒い線で囲まれた直角二等辺三角形と縦の辺の長さが同じであることから合同である。
 赤い線で囲まれた三角形の斜辺の長さは、最初に緑色の線で示した折線を作るときの作り方から、正方形の辺の長さに等しい。したがって、黒い線で囲まれた直角二等辺三角形の斜辺の長さも正方形の辺の長さに等しい。
 このことから、黒い線で囲まれた直角二等辺三角形は、6. で確認した赤線で囲まれた直角三角形と合同である。
 すなわち、これらの直角二等辺三角形の面積は等しく、元の正方形の4分の1の面積であることを確認した。

8. 上記と同様に、右上の頂点から左上の頂点への辺を左下がりの対角線に合わせて折り、緑の線で示した折り目をつける。垂直になった赤い線で示される折り目に沿って、黒の線で示した折り目をつける。



この黒の線で囲われた四角形は正方形であり、外側の正方形の面積の半分であることは、良いだろうか。

上記の図を表示するスクラッチのプログラム

2021/08/13

18. 正方形の中に面積が半分の正方形を折る

 前回、内側の正方形の面積が、外側の正方形の面積の半分である場合は、どのように見えるかを確かめてみた。


答えは C である。A か B だと思ったのではないだろうか。

正方形の面積を 1/2 にするには、一辺の長さを 1/(√2) ≃ 0.707106781186548 にすればよい。物差しで測ればよいが、見た目だけでは、面積が 1/2 であることに引きずられ、一辺の長さが 1/(√2) より小さい図形を選んでしまったのではないか。

そこで、今回は物差しで測ることなしに、折り紙で半分の面積の正方形を折ってみよう。

簡単な方法


まず、縦の赤い線で示した折り目をつける。横にも同じ。
次に、赤い線で示した折り目の交点に正方形の各頂点を合わせるように折り、緑の線で示した折り目をつける。
この緑の線で示した折り目で囲われた四角形は正方形であり、外側の正方形の面積の半分であることは、良いだろうか。
この緑の線で示した折り目で囲われた正方形をハサミで切り、元の大きさの折り紙に重ねると、外側の正方形の面積の半分の正方形がどのように見えるかを確認できる。
C のようになるか、確かめてみよう。




2021/08/10

17. 三角形のケーキを半分に切るにはどこで切る?

三角形のケーキを半分に切るにはどこで切ったらよいでしょうか。
下の図の A から D のどれが、上部の三角形の面積と下部の台形の面積が等しくなるでしょうか。


スクラッチのプロジェクト halftriangleQ としてアップしてありますので
を開いて答え合わせをしてみましょう。

以下は三角形を描画するスクラッチの関数。
頂点の座標を (x,y)、高さを h、底辺の長さを w とする三角形を描く関数です。
 


では次に、建ぺい率50%のときに正方形の土地の真ん中に最大の正方形の建物を作るとします。下の図の A から D のどれが、内側の正方形の面積が外側の正方形の面積の半分に等しいでしょうか。


スクラッチのプロジェクト halfsquareQ としてアップしてありますので
を開いて答え合わせをしてみましょう。

以下は中心の座標を (cx, cy)、辺の長さを s とする正方形を描画する関数。


2021/05/15

16. 分数の掛け算の出題プログラムをスクラッチで

 分数の掛け算の出題プログラムをスクラッチで書いてみよう。

1. 表示画面とスプライトは以下のようにした。



2. プログラムの入り口は以下の通り。


 5問出題し、正答数を変数 p で数え、タイマーで経過時間を計り、表示する。

3. 掛け算の最初の分数 A=an/ad を乱数を用いて作る。
 n は分子 (numerator) を、d は分母 (denominator) を表す。


 まず 分母の数 ad を 2 から 20 までの乱数にし、
 分子 an は 1 から 30 までの乱数とする。
 このままでは、an/ad は約分できるかもしれないので、an と ad の最大公約数を求め、
 約分する。約分した結果、分母が 1 になってしまったら、やり直す。

4. 掛け算の2番目の分数 B=bn/bd を分数 A と同様に作る。


5. 掛け算の結果 AxB=(anxbn)/(adxbd)=cn/cd とし、これを約分し C=cn/cd とする。


6. 次に、解答 X=xn/xd を入力する。


7.  解答 X が掛け算の結果 C と等しいか判定する。合っているときは変数 p を1増やし、
 正答数を数える。



8. 上記 2. の繰り返しの部分に、3. から 8. までのコードをいれる。 

9. 最大公約数を求めるコードは前々回 「14. 分数の約分をスクラッチで」に示した
 以下のコードを用いる。


10. この分数の掛け算の練習問題を生成するプログラム multiplication_of_fraction を 

比例代表制選挙における投票数比例配分方式

投票数に比例した議席を割り当てるというのが比例代表制の趣旨だが、議席総数を投票数で比例配分した理想的な議席数は、必ずしも整数にならない。このことから、端数処理をいかに行うかということでいろいろな方法が提案されている。 実際に割り当てられる議席数と理想的な議席数との差の絶対値が1未...