Università degli Studi di Brescia
Facoltà di Economia e Commercio
Corso di laurea in Economia e Commercio
 
 
Tesi di laurea
Algoritmi per arrotondamenti elettorali
 
 
 
Anno Accademico 1993-1994

 
Laureando  :   Roberto Leonardo Espen     Matricola 009843

Relatrice 

Ch.ma Prof. Maria Grazia Speranza

Correlatore

Ch.mo prof. Gianfranco Gambarelli

 

Sunto:
 

Obiettivo del presente lavoro é l'analisi e lo studio dell'algoritmo elettorale proposto da Gambarelli in [1994,1995].

Tale algoritmo viene utilizzato in un programma di elaborazione automatica e quindi valutato nelle sue caratteristiche .

La formula di arrotondamento elettorale usata tiene conto del fatto che molteplici principi di equità formulati per i sistemi elettorali non possono essere congiuntamente rispettati, in quanto alcuni sono in contraddizione con altri . La soluzione adottata rispetta i più importanti di tali criteri e minimizza le distorsioni attraverso un criterio di preferenza.

 

Il problema

 

Nella storia dell'umanità si possono trovare numerose esperienze relative a forme di governo con sensibili variazioni fra loro. Se si osserva la realtà contemporanea, si trovano risposte diverse allo stesso problema a seconda della tradizione, della cultura, della diversità delle situazioni. L'uomo sceglie lo strumento che ritiene migliore per rispondere all'esigenza particolare del momento storico che vive, ma procede per tentativi ed errori, in un ambiente caotico, legato ad eventi e situazioni imprevedibili ed imponderabili: tutto ciò rende impossibile e inutile pensare ad una forma di governo che risponda esattamente agli obiettivi per cui nasce ferme restando queste condizioni di variabilità. È quindi importante esaminare in maniera più approfondita gli strumenti esistenti per scegliere il più adatto alle necessità contingenti, o per valutare certi accadimenti storici.

Le diverse soluzioni del passato si devono analizzare perché diventino il punto di partenza per possibili miglioramenti. Allo scopo di arrivare a evidenziarne determinate caratteristiche, si possono utilizzare alcune fra le tecniche della teoria dei giochi, che permettono, attraverso uno strumento matematico di elaborazione degli indici di potere, di valutare una spartizione di potere fra un certo numero di candidati. Un esempio chiarificatore permetterà di spiegare questi concetti.

Si supponga un Parlamento di 100 seggi e tre partiti, dei quali A ha ricevuto 47 seggi, B 45 e C8. Se si valutano rispetto alle possibili coalizioni per governare, ci si accorge che le tre compagini sono tutte nella stessa situazione, in quanto occorre almeno una coalizione di due di queste per poter raggiungere la maggioranza e deliberare.

Il partito con otto seggi é dotato dello stesso potere contrattuale degli altri due, almeno per le possibili coalizioni: tale potere é uguale a quello degli altri e una ripartizione è (1/3, 1/3, 1/3).

Si può anzitutto notare una notevole instabilità della soluzione, condizionata da un accordo esclusivo fra due partiti, per ripartire a metà l'intera posta.. A sua volta il partito escluso può intervenire riproponendo la sua partecipazione a vantaggio di uno degli altri due. E così di seguito. Di fronte all'impossibilità di stabilire a priori quale sarà la possibile coalizione, é plausibile assegnare ai partiti una possibilità di vittoria paritetica, dato il perfetto equilibrio dovuto alla perfetta intercambiabilità fra le parti.

Spostando ad esempio ai 2/3 il livello per deliberare ( nel nostro caso a 67 seggi) il partito con 8 seggi non é indispensabile per le coalizioni a due che lo comprendono, tutte minoritarie, per cui é ragionevole questa ripartizione di potere (1/2,1/2/,0), nella quale il potere del terzo partito é uguale a zero.

Per una situazione in cui il partito A ha 50 seggi, B 30 e C 20 si può dedurre questa ripartizione di potere (3/5,1/5,1/5), perché il primo partito é cruciale , in quanto senza di lui non si arriva a nessuna coalizione.

Un calcolo di ripartizione del potere basato unicamente sul numero dei seggi, da delle indicazioni che non tengono conto di affinità, propensioni e avversioni fra i vari partiti: il modello tiene cioè conto di coalizioni che nella realtà sono ideologicamente impossibili. In questo caso gli indici dovranno essere pesati a secondo del partito. In Italia il partito più grosso sceglie fra quelli più simili come indirizzo politico. Di conseguenza nascono particolari contrattazioni allo scopo di ottenere vantaggi maggiori nella ripartizione del potere.

Casi limite sono i referendum o le elezioni presidenziali, in cui partiti antagonisti possono avere interessi comuni e tutte le coalizioni sono possibili.

Un correttivo ai modelli ad indice di potere puro é stato introdotto da Owen (1981) che ha risolto il problema delle affinità utilizzando una distribuzione di probabilità sulle possibili coalizioni. Anche il professor Gambarelli ha lavorato in quella direzione (1992), introducendo nell'analisi variabili esogene ed endogene, quali lo scontento dell'elettorato, la perdita di aiuti finanziari, la probabilità di colpi di stato e l'intervento dei franchi tiratori.

 

 

Sistemi ad una circoscrizione.

 

Si indichino con  i voti ricevuti dagli n partiti, con V il numero totale dei voti e con S il numero totale dei seggi disponibili. Ponendo la sommatoria  , i seggi  da assegnarsi ad ogni partito dovrebbero essere proporzionali ai voti ottenuti. Si avrà  e così generalizzando .

Nella quasi totalità dei casi tali rapporti non sono interi per cui é necessario operare tramite gli arrotondamenti. Si indichi ora come quoziente esatto (Hare quota) di  il valore della  e con  il numero arrotondato per difetto ("Hare minimum") ed  il numero  arrotondato per eccesso ("Hare maximum").

Supposto vi siano 10 seggi disponibili e 80 voti validi così distribuiti: 35 al primo partito, 30 al secondo partito e 15 al terzo, il quoziente esatto =3510/80=4,375; =300,125=3,75; =150,125=1,875.

I quozienti arrotondati per difetto sono =4, =3, =1 e quelli in eccesso =5, =4 e =2. La somma dei  dà 8 e quella degli  11; segue che nessuno dei due arrotondamenti porta ad una esatta ripartizione dei 10 seggi. Nel primo caso dobbiamo trovare, addirittura, un criterio di assegnazione di due seggi al fine di coprire tutti i seggi disponibili.

Vari autori hanno evidenziato inoltre che si devono considerare delle condizioni di logicità democratica, le quali, almeno teoricamente, andrebbero rispettate. Le più significative sono le seguenti:

a) il rispetto della simmetria;

b) il rispetto del principio: più voti, non meno seggi;

c) il rispetto degli arrotondamenti per difetto;

d) il rispetto degli arrotondamenti per eccesso;

e) il rispetto della fusione fra partiti;

f) il rispetto del principio: più seggi totali, non meno seggi individuali;

g) il rispetto delle minoranze.

Tali condizioni, tutte ragionevoli, sono in realtà contraddittorie e non é possibile trovare un modello che rispetti le prime due (a) e (b) e, contemporaneamente, la (d) e la (e). La (g) invece é sempre compatibile con le altre. Una delle possibili operazioni é di scegliere una priorità fra queste condizioni.

 

Proporzionalità

 

Esistono modelli legati alle leggi proporzionali (pura, corretta e con quota) e alla minimizzazione delle distanze.

La proporzionale pura assegna i seggi in avanzo dagli arrotondamenti per difetto  ai partiti con i resti maggiori 

Nell'esempio prima riportato (caso 1) avremo la distribuzione dei due seggi sul terzo e sul secondo partito, data la consistenza del loro arrotondamento. La ripartizione finale diventerebbe quindi (4,4,2). Secondo un'analisi superficiale, tale legge sembrerebbe la più semplice e la più equa, tuttavia non rispetta alcuni dei criteri enunciati precedentemente: il rispetto della fusione fra partiti e il criterio dell'accrescimento del numero dei seggi. Ad esempio: tre partiti con rispettivamente quattordici, sette e sei voti e con tre seggi da spartire riceveranno un seggio per uno, mentre in caso che il secondo ed il terzo si fondessero avremo due seggi al primo e uno alla confederazione.

Inoltre nel caso di tre partiti con cinquantatré, trentatré e quattordici voti e dieci seggi da spartire, essi avrebbero rispettivamente cinque, tre e due seggi rispettivamente. Aumentando fino a undici il numero dei seggi avremo una distribuzione diversa quale sei, quattro e uno. L'aumento del numero dei seggi fa sì che il terzo partito passi da due seggi ad uno.

La proporzionale corretta con il metodo d'Hondt assegna i seggi nel seguente modo: si procede dividendo i risultati dei partiti per 1,2,3 ..., si ottiene una serie di quozienti che, ordinati per grandezza, diranno a chi spettano i seggi. Per una terna di voti 14, 7, 6 si ottiene la seguente distribuzione di tre seggi: 2, 1, 0.

Dati n partiti e s seggi si avranno gli s quozienti più alti (q1...q2) e si assegneranno a ciascun partito tanti seggi quanti  gli competono.

Questo criterio non rispetta, in generale, la condizione dell'arrotondamento per eccesso.

La proporzionale corretta con quota utilizza la proporzionale per assegnare i seggi, non assegnando però quelli che violano gli arrotondamenti per eccesso. Tale criterio quindi non rispetta le minoranze.

 

Leggi a minimizzazione delle distanze

 

Questi criteri di distribuzione hanno come scopo la minimizzazione della 'distanza' (concetto variamente definito) fra esito dell'elezione e distribuzione dei seggi. Si deve scegliere, quale vettore di seggi, quella combinazione di interi che assomiglia o rappresenta di più il vettore dei voti.

La distanza più semplice da concepire fra le combinazioni dei voti in percentuale e le percentuali dei voti é quella geometrica o euclidea: la distanza che congiunge il punto  e il punto  é pari alla misura del segmento che li congiunge, dato dalla formula

.

La distanza euclidea fra la terna dei voti percentuali v=(51,85; 25,93; 22,22) e la terna dei seggi percentuali s=(66,67; 33,33; 0) vale

.

Ripetendo il calcolo per tutte le terne da valutare troveremo qual é quella che minimizza la distanza. Sicuramente questa é la scelta migliore nel caso dovessimo mettere un asse fra questi due punti. Fra due punti n-dimensionali, ovvero un sistema con n partiti, avremo una formula generalizzata:

con a = 2 e b = 1/2.

Altri tipi di distanza ottenibili cambiando i valori di a e b sono stati proposti da Te Riele, 1978. Una distanza angolare é stata proposta da Gambarelli 1992b.

L'utilizzo delle distanze non rispetta in generale due criteri fondamentali: la minimizzazione della massima variazione e la minimizzazione della variazione degli indici di potere. Il grado di arbitrarietà delle assegnazioni é molto elevato e si rischia di stravolgere le percentuali di valori stabilite dall'elettorato: un partito con la maggioranza assoluta, ad esempio il 51,85% dei voti totali, dovrebbe avere un potere pari al 100%, mentre con distribuzioni basate sulle distanze come quelle prima rappresentate l'indice scenderebbe al 33,33%. Un furto.

La minimizzazione della massima variazione consiste nella ricerca di soluzioni che svantaggino o avvantaggino il meno possibile ogni singolo partito. Per rispettare questo criterio si dovrà scegliere la distribuzione che minimizza la singola distanza percentuale riferita ad un partito solo. Tale distanza verrà considerata nel suo valore assoluto in quanto si compenserà con la distanza degli altri partiti, per cui ad un vantaggio di qualcuno si accompagna uno svantaggio per qualcun altro.

 

Il metodo di minimax

 

Non esistono criteri in grado di soddisfare tutte le condizioni di democraticità delle varie situazioni in quanto alcuni escludono altri.

Anche se si possono ottenere gli stessi risultati con formule diverse, i postulati di democraticità di partenza sono diversi. Si può stabilire però un ordine di importanza fra i vari criteri iniziali, con chiari gli obiettivi che si vogliono raggiungere, quali, per esempio, rappresentatività o governabilità del sistema.

I sistemi elettorali, in generale, hanno un problema fondamentale: non hanno la possibilità di garantire il rispetto degli indici di potere. Se ad esempio si considerano tre partiti e due seggi da distribuire non é possibile trovare una distribuzione ottima per una terna percentuale siffatta (50%, 30%, 20%),e indici relativi siffatti (3/5, 1/5, 1/5) in quanto ottenibili dai due seggi solo indici di valore (1, 0, 0) o (1/2, 1/2, 0).

Nasce la necessità di una legge che rispetti gli indici di potere. Gambarelli propone un criterio che si basa sulla minimizzazione della massima variazione.

Un esempio sarà chiarificatore. Si consideri un sistema composto da tre partiti, con due seggi da distribuire e con questi risultati ottenuti alle elezioni: 18 voti ad A, 9 a B e 3 a C. Secondo il metodo del maggior divisore si può ottenere la distribuzione (2,0,0) e con il metodo di Hamilton se ne può ottenere un'altra cioè (1,1,0).

Al fine di rendere confrontabili le varie distribuzioni, si considerino percentualmente.

Per i voti si avrà questa terna (0,6; 0,3; 0,1), per la distribuzione di seggi (1, 1, 0) si avrà (0,5; 0,5; 0)e per l'altra distribuzione di seggi (2, 0, 0) si avrà (1, 0, 0).

Per capire cosa si intende per svantaggio basta fare la differenza tra la percentuale del primo partito secondo i voti percepiti e quella della prima distribuzione: nel caso specifico (0,6-0,5)=0,1, ovvero il 10% in meno del potere espresso dai voti e perso per gli arrotondamenti. Il terzo partito avrà uno svantaggio pari a (0,1-0)=0,1, mentre il secondo partito avrà un vantaggio di 0,2 così ottenuto (0,3-0,5)=0,2, cioè il partito avrà guadagnato rispetto all'espressione democratica degli elettori.

Ripetendo il lavoro per l'altra distribuzione avremo una deviazione massima dello 0,4 . Se si prosegue testando tutte le possibili combinazioni possiamo ottenere una serie di risultati ordinabili secondo il minimo delle massime deviazioni di ogni singolo partito in ogni singola distribuzione. Un riordino sui valori successivi porterà inoltre alla possibilità di scegliere anche situazioni con valori di distanza massima uguali.

 

tabella 1.1

 
seggi % di seggi % di voti - 

% di seggi 

d1 d2 d3

deviazione

 

d1 d2 d3

2, 0, 0 1.0, 0.0, 0.0 0.4, 0.3, 0.1 0.4, 0.3, 0.1
1, 1, 0 0.5, 0.5, 0.0 0.1, 0.2, 0.1 0.2, 0.1, 0.1
1, 0, 1 0.5, 0.0, 0.5 0.1, 0.3, 0.4 0.4, 0.3, 0.1
0, 2, 0 0.0, 1.0, 0.0 0.6, 0.7, 0.1 0.7, 0.6, 0.1
0, 1, 1 0.0, 0.5, 0.5 0.6, 0.2, 0.4 0.6, 0.4, 0.2
0, 0, 2 0.0, 0.0, 1.0 0.6, 0.3, 0.9 0.9, 0.6, 0.3
  Nell'esempio, tratto da Gambarelli, Biella (1992) si ha la soluzione di minimizzazione della massima distanza proprio nella combinazione (1, 1, 0), con svantaggio massimo del 20%.

Si noti che la legge qui introdotta rispetta i criteri fondamentali (a) e (b) di democraticità precedentemente visti e perviene ad un discorso di ottimizzazione globale che, magari non rispettando altri criteri, minimizza la variazione sia in termini di proporzionalità, che in termini di potere. Si tratta quindi di una soluzione compensata, che tende a rimediare all'impossibilità teorica di poter soddisfare contemporaneamente tutti i criteri.

Per situazione più complesse in cui abbiamo più partiti e seggi, l'uso di una fonte di calcolo potente come un elaboratore si rivela indispensabile.

 

Leggi privilegianti la governabilità.

 

Si tratta di quelle formule a "sbarramento" o a "premio", legate a criteri pragmatici più che matematici: esse influenzano la distribuzione dei seggi in modo da favorire una efficiente governabilità, questo anche a discapito dell'equità, in quanto esse garantiscono i criteri (a), (b) e (c), ma non in generale gli altri.

Le leggi a sbarramento percentuale prevedono una soglia minima per ricevere seggi, mentre quelle a sbarramento sul numero di partiti si basano sull'ordinamento in modo decrescente dei voti ottenuti, eliminando il partito posto ad una determinata posizione. I sistemi uninominali rappresentano il solo partito di maggioranza relativa e si possono considerare la forma estrema dello sbarramento sul numero di partiti.

Le leggi a premio di maggioranza sono quelle dove i seggi residui vengono assegnati al partito di maggioranza in modo da favorire la stabilità.

Le leggi a "premio di tendenza" sono una elaborazione del professor Gambarelli e prevedono che i seggi residui siano assegnati al partito che ha ricevuto il maggiore incremento percentuale rispetto alle elezioni precedenti. Queste ultime non favoriscono la governabilità, ma la rappresentatività, inoltre sono premiali e possono spingere verso variazioni.

 

Sistemi a più circoscrizioni.

 

I sistemi a più circoscrizioni hanno per caratteristica la divisione dei votanti in aree, ognuna delle quali elegge uno o più candidati. Per la scelta dei vincitori si adottano varie formule, proporzionali o maggioritarie. Il sistema italiano é misto in quanto combina a queste anche un correttivo proporzionale.

I problemi di equità aumentano, in quanto si assommano quelli di ogni singola circoscrizione, moltiplicando gli eventuali scompensi a livello globale. Spesso il risultato é penalizzante se se ne considerano gli effetti in particolari fasce di partiti. Nei collegi uninominali, ad esempio, si ha il caso dei gruppi minori, che vengono esclusi nonostante rappresentino una parte dell'elettorato . Si manifestano inoltre delle violazioni nei confronti dell'hare minimum, dell'hare maximum e della superadditività. Accade anche che partiti che hanno più voti, abbiano meno seggi o viceversa, a causa della diversa composizione delle circoscrizioni: in questo caso non viene rispettata la monotonia fra i seggi totali di lista e i voti totali di lista. Vari autori hanno esaminato tali problematiche, e hanno evidenziato che nessuna soluzione é priva di paradossi e contraddizioni.

Ricordiamo Brams (1976), Te Riele (1978), Balinski e Young(1982), e gli italiani Bernardi e Menghini (1990).

 

L'analisi del problema.

 

L'assegnazione dei seggi ai partiti politici considerando il più possibile la proporzionalità dei voti ottenuti é un problema matematico di trasformazione di interi non negativi, nel rispetto dei postulati di democraticità. Come accennato precedentemente tali postulati sono in contraddizione fra di loro e le soluzioni proposte devono rispettare quelli più significativi e limitare così le distorsioni..

Il metodo di arrotondamento democratico proposto da Gambarelli rispetta tre dei criteri fondamentali, cioè l'hare minimum, l'hare maximum e la monotonia ed é legato all'ordinamento delle preferenze rispetto alle possibili distorsioni, in termini assoluti con la formula di minimax, mentre in termini di maggioranze possibili secondo un criterio legato anche agli indici di potere, secondo la "power minimax solution".

La formalizzazione del professor Gambarelli è la seguente:

Sia N = {1,.....,n} l'inversa dei partiti del sistema considerato,

sia v = {v1,.......,vn} un elemento del sistema  degli n-vettori reali non negativi, le cui componenti si chiameranno voti e  un numero intero positivo, che rappresenterà il numero totale dei seggi da assegnare. Si indichino con S l'insieme degli n-vettori interi non negativi s = (s1,......,sn), tali che

.

Il problema è determinare una trasformazione  in grado di soddisfare convenientemente ai criteri.

Dato un generico vettore g = (g1,......,gn) si indichi  la somma totale delle sue componenti e  (g1,......,gn) il vettore normalizzato di g, tale che  per tutti gli i da 1 a n ().

Si chiamino dunque i voti totali e per tutti gli i da 1 a n :

("hare quota")

arrotondato verso il basso ("hare minimum")

arrotondato verso l'alto ("hare maximum")

Fissato un vettore di voti v, per ogni  si indichi  la deviazione assoluta normalizzata dell'i-esimo componente di s dall'i-esimo componente di v.

Si definirà maxi-distanza tra v e s :

La soluzione proposta minimizza la maxi-distanza fra v e s e, a parità di tale distanza, minimizza le maxi-distanze successive.

Per definire tale minimizzazione si introdurrà un opportuno ordinamento. Considerando v costante, si chiamerà per semplicità  ogni .

Per ogni vettore  si costruisca il vettore  (s) i cui elementi sono gli stessi di d(s) ordinati in ordine decrescente:

, dove per 

si avrà che per ogni  i vettori  possono essere ordinati in ordine lessicografico decrescente. La soluzione consiste nell'insieme dei vettori s che corrispondono agli ultimi elementi uguali fra loro di tale ordinamento.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Capitolo secondo

 

 

 

 

 

 

 

 

 

 

 

 

Il programma operativo

Il programma si struttura in diversi blocchi operativi, che scandiscono il naturale svolgimento delle operazioni relative al calcolo della composizione del parlamento.

Si avrà un momento di acquisizione dei dati, uno di posizionamento sul simplesso, uno di redistribuzione dei seggi e uno di riordino secondo la distanza che avvantaggia o svantaggia di meno i partiti.

Questa struttura permette una gestione dinamica dello sviluppo, in quanto, operando su ogni singolo, blocco si ha l'opportunità di modificare il processo di assegnazione sia nelle caratteristiche specifiche che in quelle generali con maggiore facilità.

I vari blocchi sono fra di loro legati tramite una struttura a menu, che permette all'utente una maggiore trasparenza e indifferenza rispetto al sistema operativo: richiamando le singole voci attraverso una scelta numerica si otterrà l'attivazione di ogni singola parte della procedura, con la possibilità ulteriore di attivare il tutto in modo automatico secondo la procedura standard.

Il numero di controlli incrociati viene aumentato in quanto ogni singolo programma ripete le attribuzioni dei valori dei campi e i calcoli iniziali. É pensabile anche l'eventuale sviluppo di software di controllo, di riordino crescente o decrescente senza intaccare le strutture di programmi già testati e operanti, secondo le nostre esigenze.

Fig.1 - Menù di presentazione della procedura.

 

 
 
Programma di calcolo del M I N I M A X
 
   
1 - Introduzione dati

 

7 - Uscita 
2 - Calcolo del MINIMAX

 

8 - Informazioni 
3 - Controlli  9 - Indici di potere 
4 - Riordino

 

10 - Stampe 
5 - Risultati a video

 

11 - Riferimenti bibliografici 
6 - Stampa dei risultati  12 - Area di programmazione 
   
  Opzione numero #

 

 

I dati sono tutti standardizzati nel loro immagazzinamento, secondo l'ISO ASCII, che garantisce la possibilità di scambio con altri strumenti operativi, quali programmi di elaborazione grafica o statistica.

Il menu é un classico schema da cui si scelgono nomi di file batch che attivano una serie di comandi utili per posizionarsi ad una determinata zona di immagazzinaggio dei dati, ovvero ad un indirizzo o directory del disco, e per il lancio del programma.

Richiamato il menu dall'elaboratore con sistema operativo MS-DOS, digitando il nome del programma: MINIMAX , ci appare una maschera video impaginata, con in alto un titolo relativo all'argomento, cioè il calcolo del minimax.

Segue un elenco di opzioni e un prompt modificato che permette di operare la scelta.

Al punto 1 del menù si ha l'introduzione dei dati, in quanto preliminare in ogni caso ai calcoli.

Fig.2 - Menù di introduzione dei dati

 

 
SEGGI DA DISTRIBUIRE ====>
NUMERO DEI GIOCATORI ====>
VOTI AL GIOCATORE # ====>
  Viene attivata una maschera che ci domanda di inserire il numero dei seggi, il numero dei partiti e i voti pervenuti ad ogni singolo partito. L'introduzione dei dati é vincolata all'appartenenza dei dati all'insieme dei numeri interi. I voti percepiti da ogni partito non sono in ordine. É possibile aggiungere un programma di utilità per un riordino o crescente o decrescente, le soluzioni sono indifferenti all'ordine dei dati.

Purtroppo il linguaggio di programmazione Fortran ha dei limiti nella gestione dei caratteri grafici, per cui non si è utilizzata una maschera fissa di inserimento dei dati, ma un surrogato, che chiede per ogni giocatore il numero dei voti percepiti, per cui é impossibile dimenticare di inserirne.

Il limite di dati introducibili é di 10 giocatori, visto lo spazio matriciale occupato fisicamente nella memoria al momento dell'elaborazione; se superato a video compare un messaggio di attenzione. (é previsto un ampliamento a 15 partiti).

In ogni momento é possibile interrompere il lavoro schiacciando contemporaneamente il tasto di control e quello del carattere C, la qual cosa é ben evidenziata in un messaggio iniziale, posto sopra alla zona di inserimento dati.

Se l'introduzione avviene senza problemi, all'inserimento del valore relativo all'ultimo partito appare una scritta di introduzione positiva. Diversamente comparirà un messaggio di errore legato al linguaggio di programmazione. Confermando si potrà rientrare nel menu e scegliere il punto di menu utilità dove sono elencate le possibili soluzioni al problema e specificate le caratteristiche che i dati debbono avere per essere accettati dalla procedura.

Immagazzinati i dati, si può attivare la seconda scelta, che permette di ottenere una soluzione che rispetti i criteri di hare minimum e hare maximum e che assegna ai partiti con una distanza minima i seggi da distribuire fino a posizionarsi sul simplesso puntuale delle soluzioni, formato da tutti i punti la cui somma delle coordinate é uguale al numero dei seggi da distribuire.

Si tratta di un percorso di ricerca di una condizione ottima, reiterato per un numero di volte tale da consentire di spostarsi dal simplesso di hare minimum a quello dove abbiamo tutti i seggi assegnati.

Il programma calcola i vettori normalizzati sia dei voti che dei seggi, calcola le distanze effettive di ogni singolo punto dalla soluzione non intera e sceglie la soluzione posta al simplesso di partenza più uno. Vengono nel frattempo fatte delle verifiche, quali: la non negatività di tutte le distribuzioni di seggi, in quanto non possiamo avere seggi negativi, e la non assegnazione di seggi a partiti che non hanno ricevuto voti (qui potremmo inserire gli eventuali sbarramenti) in modo da non assegnare seggi ad un partito sorpassando l'hare maximum.

L'operazione verrà ripetuta fino all'assegnazione di tutti i seggi.

Una volta assegnati i seggi della soluzione con distanza minima sul simplesso finale, si calcoleranno eventuali altri valori che migliorerebbero la situazione, valutando se convenga o meno togliere un seggio ad un partito X e aggiungerne uno al partito Y.

Si calcolerà poi una serie di soluzioni poste nell'intorno del nostro punto di ottimo e da queste si otterrà una matrice con tutte le distanze, che verranno in seguito ordinate e che ci daranno la soluzione o le soluzioni migliori per la distanza.

Il programma ha come limite il dimensionamento della matrice, che potrà essere fatta solo per un limitato spazio memoria riservabile.

L'ultimo blocco di programma riordina le soluzioni secondo due regole.

Anzitutto calcola le distanze fra i valori normalizzati del vettore seggi e quelli del vettore delle distribuzioni. Poi le riordina in modo discendente, prima considerando ogni singolo valore all'interno di ogni singola soluzione, poi tutte le soluzioni a partire dal valore della prima distanza. A parità di distanza esse si ordineranno sul secondo e sul terzo risultato e così via. In caso di distribuzioni uguali saremo di fronte a casi particolari che qui verranno evidenziati. Il tutto condizionato dalla positività dei seggi e il rispetto dell'hare maximum e dell'hare minimum.

 

 

Esempi

 

Si considerino 10 seggi, 3 giocatori che ricevono rispettivamente 2, 5 e 12 voti.

La combinazione ottimale trovata con il programma é di 1, 3 e 6 seggi: tale soluzione rende minima la distanza media dei seggi dalla combinazione di voti normalizzata.

La tabella che segue mostra le possibili soluzioni e le relative distanze fra i vettori normalizzati, e il possibile riordino dei risultati.

 

tabella dei risultati

 

 
1
2
3
4
5
2, 2, 6
0,2; 0,2; 0,6
0,094; 0,063; 0,031
0,09473684
3
1, 3, 6 
0,1; 0,3; 0,6
0,005; 0,036; 0,031
0,03684210
1
1, 2, 7
0,1; 0,2; 0,7
0,005; 0,063; 0,068
0,06842105
3, 1, 6
0,3; 0,1; 0,6
0,194; 0,163; 0,031
0,19473684
6
2, 1, 7
0,2; 0,1; 0,7 
0,094; 0,163; 0,068
0,16315789
5
3, 2, 5
0,3; 0,2; 0,5
0,194; 0,063; 0,131
0,19473684
6
2, 3, 5
0,2; 0,3; 0,5
0,094; 0,063; 0,131
0,13157894
4
  1= soluzioni, 2= seggi normalizzati, 3 = % di voti - % di seggi, 4= deviazione massima minore, 5= valore ordinale.

 

 

 

 

Si faccia ora un altro esempio.

Si considerino 100 seggi, 3 giocatori che ricevono rispettivamente 12, 25 e 33 voti ciascuno.

Il programma trova una soluzione ottimale nella distribuzione di seggi 17, 36 e 47.

La seconda combinazione non é ottenibile in maniera univoca. Si Trova alla stessa distanza sia la combinazione (18, 35, 47), che la (17, 35, 48). Questa coppia di soluzioni non si può ordinare, in quanto le distanze sono uguali per i vari seggi, ma ribaltate. Sono ordinabili invece le soluzioni di quinto grado (vedi ultima colonna), che hanno le seconde distanze differenti, e la scelta cadrà sulla minore. Nelle soluzioni di secondo grado la scelta dovrà essere contingente, istituzionale o politica.

 

tabella dei risultati

 

 
1
2
3
4
5
18, 35, 47 0,18; 0,35; 0,47 0,08; 0,07; 0,01 0,00857 2 *
17, 36, 47 0,17; 0,36; 0,47 0,01; 0,02; 0,01 0,00285 1
17, 35, 48 0,17; 0,35; 0,48 0,01; 0,07; 0,08 0,00857 2 *
19, 34, 47 0,19; 0,34; 0,47 0,18; 0,17; 0,01 0,01857 5 #
18, 34, 48 0,18; 0,34; 0,48 0,085; 0,17; 0,085 0,01714 4
19, 35, 46 0,19; 0,35; 0,46 0,18; 0,07; 0,11 0,01857 5 #
18, 36, 46 0,18; 0,36; 0,46 0,085; 0,028; 0,11 0,01142 3
  1= soluzioni, 2= voti normalizzati, 3 = % di voti - % di seggi, 4= deviazione massima minore, 5= valore ordinale.

 

Conclusioni

 

Con il presente lavoro si é attivato l'algoritmo di minimax all'interno di un gruppo di programmi per calcolatori; ciò ha permesso di evidenziare aspetti più nascosti dello strumento operativo.

Si è constatato che due o più punti di soluzione possono essere posti ad uguale distanza dalla combinazione non arrotondata dei voti, nel tal caso sarà necessario utilizzare criteri non matematici per l'assegnazione di un eventuale seggio fra i contendenti.

I seggi sono ordinati nell'elaborato secondo una regola che considera solo alcuni dei postulati di democraticità limitando l'analisi al caso delle formule elttorali proporzionali. Per una visione esaustiva del lavoro é auspicabile lo sviluppo di un algoritmo che riordini le soluzioni ottenute secondo criteri di governabilità o di premialità. Tale risultato é ottenibile cambiando il criterio ordinatore, cioè il tipo di distanza fra i seggi.

L'utilizzo della formula deve essere considerato come mezzo aggiuntivo di interpretazione delle scelte legislative relative alle varie formule elettorali.

Deve essere inoltre strumento di lettura dei risultati elettorali, permettendo, dove é possibile, di apportare la correzione di un "torto" nei confronti di una delle parti.

La tutela della libertà scaturisce dalla trasparenza e dalla chiarezza delle scelte, l'attribuzione di un valore oggettivo alle diverse combinazioni di voti vuole contribuire ad una maggiore conoscenza dei meccanismi di distribuzione del potere.

 

 

APPENDICI
 
 
DIAGRAMMA DI PROCEDURA

 

Il seguente flow chart illustra la struttura della procedura, che é concepita come insieme di programmi.

Ogni programma é contenuto in un blocco rettangolare, che é, a sua volta, composto da una serie di altre funzioni minori, a loro volta composte dai vari comandi del linguaggio FORTRAN.

Il risultato finale é un prodotto modulare modificabile ed ampliabile facilmente.

 

 

DIAGRAMMA DEL PROGRAMMA DI INTRODUZIONE DEI DATI

 

Il diagramma a blocchi contiene le operazioni compiute del programma di introduzione dei dati, composte da diversi comandi FORTRAN. 
DIAGRAMMA DEL PROGRAMMA DI POSIZIONAMENTO SUL SIMPLESSO SOLUZIONE CON L'ALGORITMO DI MINIMAX
 
 
DIAGRAMMA DEL PROGRAMMA DI VERIFICA DELLA SOLUZIONE SUBOTTIMALE

 

DIAGRAMMA DEL PROGRAMMA DI CALCOLO DELLE SOLUZIONI E RIORDINO DELLE STESSE

 

Listato dei programmi

 

Nelle pagine che seguono sono riportati i listati dei programmi relativi alla nostra procedura.

Essi sono ottenuti con il compilatore FORTRAN che fra le sue opzioni comprende anche la costruzione delle strutture lessicali del programma e l'indicazione dei vari livelli di ciclo o di condizioni.

Nel listato viene indicato il numero di riga nelle prime colonne, seguito dall'indicatore del livello del ciclo.

A colonna sette iniziano gli eventuali comandi del programma, che uniti fra di loro formano l'istruzione.

Le righe che iniziano con la C sono delle righe di commento, e sono utilizzate per rendere meno criptico l'insieme delle istruzioni che formano il programma.

 

03-19-95

12:00:21

D Line# 1 7 Microsoft FORTRAN77 V3.31 August 1985

1 PROGRAM DATO

2 C **********************************************************

3 C PROGRAMMA DI INSERIMENTO DATI IN FORMATO SEQUENZIALE.

4 C **********************************************************

5 INTEGER*4 I,ITS,N,IV(20)

6 C * FASE 1 - APERTURA DEL FILE DI DATI *

7 OPEN (UNIT=1,STATUS='NEW',FILE='VOTI.DAT')

8 OPEN (UNIT=2,STATUS='NEW',FILE='GIOCAT.DAT')

9 OPEN (UNIT=3,STATUS='NEW',FILE='SEGGI.DAT')

10 C * FASE 2 - INSERIMENTO DATI *

11 WRITE (*,1000)

12 WRITE (*,1200)

13 READ (*,*) ITS

14 WRITE (3,*) ITS

15 WRITE (*,1300)

16 READ (*,*) N

17 WRITE (2,*) N

18 DO 20,I=1,N

1 19 WRITE (*,1400) I

1 20 READ (*,*) IV(I)

1 21 WRITE (1,*) IV(I)

1 22 20 CONTINUE

23 WRITE (*,2000)

24 C * FASE 3 - CHIUSURA *

D Line# 1 7 Microsoft FORTRAN77 V3.31 August 1985

25 CLOSE (UNIT=1)

26 CLOSE (UNIT=2)

27 CLOSE (UNIT=3)

28 1000 FORMAT (' +----------------------------------')

29 1200 FORMAT (' ¦ SEGGI DA DISTRIBUIRE ====>'\)

30 1300 FORMAT (' ¦ NUMERO DEI GIOCATORI ====>'\)

31 1400 FORMAT (' ¦ VOTI AL GIOCATORE ',I2,' ====>'\)

32 2000 FORMAT (' +----------------------------------')

33 END

Name Type Offset P Class

I INTEGER*4 104

ITS INTEGER*4 96

IV INTEGER*4 16

N INTEGER*4 100

DATO PROGRAM

Pass One No Errors Detected

33 Source Lines

 

 

 

 

 

 

 

03-19-95

12:00:37

D Line# 1 7 Microsoft FORTRAN77 V3.31 August 1985

1 PROGRAM MINIMAX

2 C ****************************************************

3 C PROGRAMMA DI CALCOLO DELLA DISTRIBUZIONE DI SEGGI

4 C SECONDO L'ALGORITMO DI CALCOLO DEL MINIMAX

5 C PROGRAMMA SCRITTO DA ROBERTO ESPEN.

6 C MODULO 1 - ARRIVO SUL SIMPLESSO

7 C ****************************************************

8 C

9 C * DICHIARAZIONE DATI *

10 C

11 C . INTERI

12 C IV(20) = VETTORE DEI VOTI PER OGNI SINGOLO GIOCATORE (MAX 20)

13 C HM(20) = VETTORE HARE MINIMO

14 C HMX(20)= HARE MASSIMO

15 C ITS = TOTALE SEGGI DA DISTRIBUIRE

16 C ITV = TOTALE DEI VOTI VALIDI

17 C SEGNO = SEGNO (VALORE 1,0,-1)

18 C N = NUMERO DEI GIOCATORI

19 C R = DISTANZA TRA I SEGGI DISTRIBUITI E LA SOLUZIONE

20 C THM = TOTALE HARE MINIMI

21 C THMX = TOTALE HARE MASSIMI

22 C K = INDICE

23 C

24 C

D Line# 1 7 Microsoft FORTRAN77 V3.31 August 1985

25 C . REALI

26 C DELTA(20) = VETTORE

27 C V(20) = VETTORE DEI VOTI AI SINGOLI GIOCATORI

28 C HML(20) = VETTORE HARE QUOTA LORDO

29 C S(20) = VETTORE DEI SEGGI PER OGNI GIOCATORE

30 C VN(20) = VETTORE DEI VOTI NORMALIZZATO

31 C SN(20) = VETTORE DEI SEGGI NORMALIZZATO

32 C D(20) = VETTORE DISTANZA

33 C DIST = DISTANZA

34 C MOLT = MOLTIPLICATORE (ITS/ITV)

35 C TS = TOTALE SEGGI

36 C TV = TOTALE VOTI

37 C COM = COMODO

38 C

39 INTEGER*4 IV(20),HM(20),HMX(20),SEGNO(20)

40 INTEGER*4 N,R,ITS,ITV,K

41 REAL*8 DELTA(20),V(20),HML(20),VN(20),SN(20),D(20),D2(20),S(20)

42 REAL*8 TV,THM,THMX,MOLT,THML,TS,COM,TT

43 REAL*8 SOL(20),SOL1(20),SOL2(20)

44 C

45 C * APERTURA FILE *

46 C

47 OPEN (UNIT=1,STATUS='NEW',FILE='SOLUTIO.DAT')

48 OPEN (UNIT=2,STATUS='OLD',FILE='VOTI.DAT')

49 OPEN (UNIT=3,STATUS='OLD',FILE='GIOCAT.DAT')

50 OPEN (UNIT=4,STATUS='OLD',FILE='SEGGI.DAT')

D Line# 1 7 Microsoft FORTRAN77 V3.31 August 1985

51 OPEN (UNIT=5,STATUS='NEW',FILE='HMIN.DAT')

52 OPEN (UNIT=6,STATUS='NEW',FILE='HMAX.DAT')

53 C

54 C * ACQUISIZIONE DATI *

55 C

56 READ (4,*) ITS

57 READ (3,*) N

58 DO 20,I=1,N

1 59 READ (2,*) IV(I)

1 60 C * CALCOLO DEI VOTI TOTALI ESPRESSI *

1 61 ITV=ITV+IV(I)

1 62 20 CONTINUE

63 C

64 C * CALCOLO DELL'HARE QUOTA LORDO

65 C SECONDO LA FORMULA HML(I)=IV(I)*(ITS/ITV)

66 C ITS/ITV=MOLT (MOLTIPLICATORE) *

67 C

68 TS=ITS

69 TV=ITV

70 MOLT=TS/TV

71 DO 30,I=1,N

1 72 V(I)=IV(I)

1 73 HML(I)=V(I)*MOLT

1 74 HM(I)=HML(I)

1 75 HMX(I)=HML(I)+1.0

1 76 THML=THML+HML(I)

D Line# 1 7 Microsoft FORTRAN77 V3.31 August 1985

1 78 WRITE (6,*) HMX(I)

1 79 S(I)=HM(I)

1 80 THM=THM+S(I)

1 81 THMX=THMX+HMX(I)

1 82 30 CONTINUE

83 WRITE (*,*) 'ITV= ',ITV

84 35 WRITE (*,*) 'THM= ',THM

85 C * DISTANZA DALLA SOLUZIONE *

86 TT=THM

87 THM=0

88 DO 60,I=1,N

1 89 VN(I)=V(I)/TV

1 90 SN(I)=S(I)/TT

1 91 C * CALCOLO DELLA DISTANZA *

1 92 D(I)=(VN(I)-SN(I))

1 93 C * SEGNO *

1 94 IF (D(I)) 50,51,52

1 95 50 SEGNO(I)=-1

1 96 GO TO 53

1 97 51 SEGNO(I)=0

1 98 GO TO 53

1 99 52 SEGNO(I)=1

1 100 53 D2(I)=ABS(D(I))

1 101 C * INCREMENTO DI VALORE PER OGNI SINGOLO SEGGIO AGGIUNTO *

1 102 DELTA(I)=ABS(VN(I)-((S(I)+SEGNO(I))/TS))

1 103 WRITE (*,1600) S(I)

D Line# 1 7 Microsoft FORTRAN77 V3.31 August 1985

1 104 THM=THM+S(I)

1 105 60 CONTINUE

106 R=ITS-THM

107 WRITE (*,*) 'R=',R

108 IF (R.EQ.0) THEN

109 GO TO 500

110 ENDIF

111 C * POSIZIONAMENTO SUL SIMPLESSO DI SOLUZIONE, CON PASSO

112 C UNITARIO RELATIVO ALLA VARIAZIONE DELTA. *

113 DO 70,I=1,N

1 114 IF (S(I).GT.0) THEN

1 115 K=I

1 116 GO TO 90

1 117 ENDIF

1 118 70 CONTINUE

119 90 COM=D2(K)

120 DO 100,I=1,N

1 121 IF (COM.GE.D2(I)) THEN

1 122 WRITE (*,*) 'COM',COM,'DIST',D2(I)

1 123 IF ((HMX(I).LE.S(I)).OR.(V(I).EQ.0)) THEN

1 124 C * SULLA RIGA PRECEDENTE:

1 125 C PRIMO CONTROLLO SUI SEGGI NEGATIVI

1 126 C IL SECONDO E'ALLE VARIAZIONI DI ALFA21 *

1 127 C

1 128 GO TO 100

1 129 ELSE

D Line# 1 7 Microsoft FORTRAN77 V3.31 August 1985

1 130 COM=D2(I)

1 131 K=I

1 132 WRITE (*,*) 'COMok',COM,'K',K

1 133 ENDIF

1 134 ELSE

1 135 C * IN QUESTO MODO A PARI DISTANZA VIENE MESSO L'ULTIMO

1 136 C PER METTERE IL PRIMO BASTA METTERE .GT. *

1 137 GO TO 100

1 138 ENDIF

1 139 100 CONTINUE

140 C * HO TROVATO LA DISTANZA MINIMA CHE SI TROVA AL SEGGIO K *

141 S(K)=S(K)+1

142 GO TO 35

143 C * A QUESTO PUNTO SONO POSIZIONATO SUL SIMPLESSO SOLUZIONE

144 C E QUINDI DEVO VALUTARE TUTTE LE POSSIBILI SOLUZIONI IVI POSTE

145 C * RICERCA DELLE SOLUZIONI SUL SIMPLESSO. *

146 500 DO 550,I=1,N

1 147 WRITE (*,1700) S(I)

1 148 WRITE (1,*) S(I)

1 149 550 CONTINUE

150 C

151 C FINE

152 C

153 1600 FORMAT (T3,' SEGGI SPETTANTI = ',E10.5E2)

154 1700 FORMAT (T6,' SEGGI SUL SIMPLESSO = ',E10.5E2)

155 C

D Line# 1 7 Microsoft FORTRAN77 V3.31 August 1985

156 C CHIUSURE

157 C

158 CLOSE (UNIT=1,STATUS='KEEP')

159 CLOSE (UNIT=2,STATUS='KEEP')

160 CLOSE (UNIT=3,STATUS='KEEP')

161 CLOSE (UNIT=4,STATUS='KEEP')

162 CLOSE (UNIT=5,STATUS='KEEP')

163 CLOSE (UNIT=6,STATUS='KEEP')

164 STOP ' FINE DELL''ELABORAZIONE '

165 END

Name Type Offset P Class

ABS INTRINSIC

COM REAL*8 2192

D REAL*8 1776

D2 REAL*8 1936

DELTA REAL*8 1616

HM INTEGER*4 1296

HML REAL*8 1456

HMX INTEGER*4 1376

I INTEGER*4 2104

ITS INTEGER*4 2096

ITV INTEGER*4 2112

IV INTEGER*4 16

K INTEGER*4 2188

MOLT REAL*8 2132

N INTEGER*4 2100

R INTEGER*4 2180

S REAL*8 1136

SEGNO INTEGER*4 96

SN REAL*8 496

SOL REAL*8 656

SOL1 REAL*8 816

SOL2 REAL*8 976

THM REAL*8 2152

THML REAL*8 2144

THMX REAL*8 2160

TS REAL*8 2116

TT REAL*8 2168

TV REAL*8 2124

V REAL*8 176

VN REAL*8 336

MINIMA PROGRAM

Pass One No Errors Detected

165 Source Lines

03-19-95

12:00:52

D Line# 1 7 Microsoft FORTRAN77 V3.31 August 1985

1 PROGRAM MINIMAX

2 C ****************************************************

3 C PROGRAMMA DI CALCOLO DELLA DISTRIBUZIONE DI SEGGI

4 C SECONDO L'ALGORITMO DI CALCOLO DEL MINIMAX

5 C PROGRAMMA SCRITTO DA ROBERTO ESPEN.

6 C MODULO 2 - VERIFICA DELLA SOLUZIONE SUL SIMPLESSO

7 C ****************************************************

8 C

9 INTEGER*4 IV(20),HMX(20),SEGNO(20),HM(20)

10 INTEGER*4 N,ITS,ITV,K,HMM

11 REAL*8 DELTA(20),V(20),HML(20),VN(20),SN(20),D(20),D2(20),S(20)

12 REAL*8 TV,MOLT,H(20),TS,SOL(20),SOL1(20),SOL2(20)

13 C

14 C * APERTURA FILE *

15 C

16 OPEN (UNIT=1,STATUS='OLD',FILE='SOLUTIO.DAT')

17 OPEN (UNIT=2,STATUS='OLD',FILE='VOTI.DAT')

18 OPEN (UNIT=3,STATUS='OLD',FILE='GIOCAT.DAT')

19 OPEN (UNIT=4,STATUS='OLD',FILE='SEGGI.DAT')

20 OPEN (UNIT=5,STATUS='OLD',FILE='HMIN.DAT')

21 OPEN (UNIT=6,STATUS='OLD',FILE='HMAX.DAT')

22 C

23 C * ACQUISIZIONE DATI *

24 C

D Line# 1 7 Microsoft FORTRAN77 V3.31 August 1985

25 READ (4,*) ITS

26 READ (3,*) N

27 DO 20,I=1,N

1 28 READ (2,*) IV(I)

1 29 READ (1,*) H(I)

1 30 READ (5,*) HM(I)

1 31 READ (6,*) HMX(I)

1 32 C * CALCOLO DEI VOTI TOTALI ESPRESSI *

1 33 ITV=ITV+IV(I)

1 34 HMM=HMM+H(I)

1 35 20 CONTINUE

36 IF (HMM.EQ.ITS) THEN

37 WRITE (*,*) 'TUTTO OK: I SEGGI SONO IN NUMERO GIUSTO'

38 PAUSE

39 ELSE

40 WRITE (*,*) 'ATTENZIONE: I SEGGI DISTRIBUITI SONO SBAGLIATI'

41 GO TO 1000

42 ENDIF

43 C

44 C * CALCOLO DELL'HARE QUOTA LORDO

45 C SECONDO LA FORMULA HML(I)=IV(I)*(ITS/ITV)

46 C ITS/ITV=MOLT (MOLTIPLICATORE) *

47 C

48 TS=ITS

49 TV=ITV

50 MOLT=TS/TV

D Line# 1 7 Microsoft FORTRAN77 V3.31 August 1985

51 WRITE (*,*) 'ITV= ',ITV

52 35 WRITE (*,*) 'HMM= ',HMM

53 C * A QUESTO PUNTO SONO POSIZIONATO SUL SIMPLESSO SOLUZIONE

54 C E QUINDI VALUTO TUTTE LE POSSIBILI SOLUZIONI IVI POSTE

55 C RICERCA DELLE SOLUZIONI SUL SIMPLESSO. *

56 C

57 DO 100,I=1,N

1 58 VN(I)=IV(I)/TV

1 59 100 CONTINUE

60 500 DO 550,I=1,N

1 61 WRITE (*,*) 'SEGGI =',H(I)

1 62 DELTA(I)=ABS(VN(I)-((H(I)+SEGNO(I))/TS))

1 63 SN(I)=H(I)/TS

1 64 D2(I)=ABS(VN(I)-SN(I))

1 65 D(I)=(VN(I)-SN(I))

1 66 C SEGNO

1 67 WRITE (*,1650) H(I),SN(I),D(I)

1 68 IF (D(I)) 502,512,522

1 69 502 SEGNO(I)=-1

1 70 GO TO 550

1 71 512 SEGNO(I)=0

1 72 GO TO 550

1 73 522 SEGNO(I)=1

1 74 550 CONTINUE

75 DO 600,I=1,N

1 76 DO 700,I2=1,N

D Line# 1 7 Microsoft FORTRAN77 V3.31 August 1985

2 77 IF (H(I2).GT.HMX(I2)) THEN

2 78 write (*,*) '>',I2

2 79 GO TO 700

2 80 ENDIF

2 81 IF (H(I2).LT.HM(I2)) THEN

2 82 write (*,*) '<',I2

2 83 GO TO 700

2 84 ENDIF

2 85 IF (DELTA(I2).LT.D2(I)) THEN

2 86 H(I)=H(I)+SEGNO(I2)

2 87 C ===========================

2 88 WRITE (*,*) '+',I,I2

2 89 H(I2)=H(I2)-SEGNO(I2)

2 90 WRITE (*,*) '-',I2

2 91 go to 700

2 92 ELSE

2 93 GO TO 700

2 94 ENDIF

2 95 IF (DELTA(I2).EQ.D2(I)) THEN

2 96 WRITE (*,*) '***',H(I2),I2

2 97 GO TO 700

2 98 ENDIF

2 99 DO 800,K=1,N

3 100 WRITE (1,*) H(K)

3 101 WRITE (*,*) H(K)

3 102 800 CONTINUE

D Line# 1 7 Microsoft FORTRAN77 V3.31 August 1985

2 103 700 CONTINUE

1 104 600 CONTINUE

105 C

106 C * FINE *

107 C

108 1600 FORMAT (T3,' SEGGI SPETTANTI = ',E10.5E2)

109 1650 FORMAT (T3,' SOLUZ = ',T30,E10.5E2,T42,E10.5E2,T54,E10.5E2)

110

111 C

112 C * CHIUSURE *

113 C

114 CLOSE (UNIT=1,STATUS='KEEP')

115 CLOSE (UNIT=2,STATUS='KEEP')

116 CLOSE (UNIT=3,STATUS='KEEP')

117 CLOSE (UNIT=4,STATUS='KEEP')

118 CLOSE (UNIT=5,STATUS='KEEP')

119 CLOSE (UNIT=6,STATUS='KEEP')

120 1000 STOP ' FINE DELL''ELABORAZIONE '

121 END

Name Type Offset P Class

ABS INTRINSIC

D REAL*8 1936

D2 REAL*8 2096

DELTA REAL*8 1616

H REAL*8 1776

HM INTEGER*4 1376

HML REAL*8 1456

HMM INTEGER*4 2276

HMX INTEGER*4 1296

I INTEGER*4 2264

I2 INTEGER*4 2316

ITS INTEGER*4 2256

ITV INTEGER*4 2272

IV INTEGER*4 16

Name Type Size Class

K INTEGER*4 2324

MOLT REAL*8 2296

N INTEGER*4 2260

S REAL*8 1136

SEGNO INTEGER*4 96

SN REAL*8 496

SOL REAL*8 656

SOL1 REAL*8 816

SOL2 REAL*8 976

TS REAL*8 2280

TV REAL*8 2288

V REAL*8 176

VN REAL*8 336

MINIMA PROGRAM

Pass One No Errors Detected

121 Source Lines

03-19-95

12:01:00

D Line# 1 7 Microsoft FORTRAN77 V3.31 August 1985

1 PROGRAM MINIMAX

2 C ****************************************************

3 C PROGRAMMA DI CALCOLO DELLA DISTRIBUZIONE DI SEGGI

4 C SECONDO L'ALGORITMO DI CALCOLO DEL MINIMAX

5 C PROGRAMMA SCRITTO DA ROBERTO ESPEN.

6 C MODULO 3 - VERIFICHE INCROCIATE

7 C ****************************************************

8 INTEGER*4 IV(10),HMX(10),SEGNO(10),HM(10)

9 INTEGER*4 N,ITS,ITV,K,HMM

10 REAL*8 DELTA(10),V(10),HML(10),VN(10),SN(10),D(10),D2(10),S(10)

11 REAL*8 TV,MOLT,H(10),HT(10),SOL(10),HK(10,10),HS(10,10),HR(10,90)

12 C

13 C

14 C * APERTURA FILE *

15 C

16 OPEN (UNIT=1,STATUS='OLD',FILE='SOLUTIO.DAT')

17 OPEN (UNIT=2,STATUS='OLD',FILE='VOTI.DAT')

18 OPEN (UNIT=3,STATUS='OLD',FILE='GIOCAT.DAT')

19 OPEN (UNIT=4,STATUS='OLD',FILE='SEGGI.DAT')

20 OPEN (UNIT=5,STATUS='OLD',FILE='HMIN.DAT')

21 OPEN (UNIT=6,STATUS='OLD',FILE='HMAX.DAT')

22 C

23 C * ACQUISIZIONE DATI *

24 C

D Line# 1 7 Microsoft FORTRAN77 V3.31 August 1985

25 READ (4,*) ITS

26 READ (3,*) N

27 DO 20,I=1,N

1 28 READ (2,*) IV(I)

1 29 READ (1,*) H(I)

1 30 READ (5,*) HM(I)

1 31 READ (6,*) HMX(I)

1 32 C * CALCOLO DEI VOTI TOTALI ESPRESSI *

1 33 ITV=ITV+IV(I)

1 34 HMM=HMM+H(I)

1 35 20 CONTINUE

36 IF (HMM.EQ.ITS) THEN

37 WRITE (*,*) 'TUTTO OK: I SEGGI SONO IN NUMERO GIUSTO'

38 PAUSE 'PREMERE UN TASTO PER CONTINUARE...'

39 ELSE

40 WRITE (*,*) 'ATTENZIONE: I SEGGI SONO SBAGLIATI'

41 PAUSE 'CONTROLLARE SEGGI.DAT'

42 GO TO 1000

43 ENDIF

44 C

45 C * CALCOLO DELL'HARE QUOTA LORDO

46 C SECONDO LA FORMULA HML(I)=IV(I)*(ITS/ITV)

47 C ITS/ITV=MOLT (MOLTIPLICATORE) *

48 C

49 TS=ITS

50 TV=ITV

D Line# 1 7 Microsoft FORTRAN77 V3.31 August 1985

51 MOLT=TS/TV

52 WRITE (*,*) 'ITV= ',ITV

53 35 WRITE (*,*) 'HMM= ',HMM

54 C * A QUESTO PUNTO SONO POSIZIONATO SUL SIMPLESSO SOLUZIONE

55 C E QUINDI VALUTO TUTTE LE POSSIBILI SOLUZIONI IVI POSTE

56 C RICERCA DELLE SOLUZIONI SUL SIMPLESSO. *

57 C

58 I1=1

59 I2=1

60 K=0

61 DO 100,I=1,N

1 62 VN(I)=IV(I)/TV

1 63 100 CONTINUE

64 DO 200,I=1,N

1 65 HK(I,I)=H(I)+1

1 66 200 CONTINUE

67 DO 300,I=1,N

1 68 HS(I,1)=H(I)

1 69 DO 400,I1=1,N

2 70 IF (I1.EQ.I) THEN

2 71 HR(I,I1)=0

2 72 ELSE

2 73 HR(I,I1)=H(I)-1

2 74 ENDIF

2 75 400 CONTINUE

1 76 300 CONTINUE

D Line# 1 7 Microsoft FORTRAN77 V3.31 August 1985

77 DO0 500,I=1,N-1

1 78 HT(I)=H(I)+1

1 79 600 CONTINUE

1 80 500 CONTINUE

81 C

82 C WRITE (*,*) 'HR',HR

83 C WRITE (*,*) 'HK',HK

84 C WRITE (*,*) 'HS',HS

85 C

86 CLOSE (UNIT=1,STATUS='KEEP')

87 CLOSE (UNIT=2,STATUS='KEEP')

88 CLOSE (UNIT=3,STATUS='KEEP')

89 CLOSE (UNIT=4,STATUS='KEEP')

90 CLOSE (UNIT=5,STATUS='KEEP')

91 CLOSE (UNIT=6,STATUS='KEEP')

92

93 1000 STOP ' FINE DELL''ELABORAZIONE '

94 END

Name Type Offset P Class

D REAL*8 9696

D2 REAL*8 9776

DELTA REAL*8 8736

H REAL*8 8816

HK REAL*8 8896

HM INTEGER*4 8616

HML REAL*8 8656

HMM INTEGER*4 9876

HMX INTEGER*4 496

HR REAL*8 1416

HS REAL*8 616

HT REAL*8 536

I INTEGER*4 9864

I1 INTEGER*4 9900

I2 INTEGER*4 9904

ITS INTEGER*4 9856

ITV INTEGER*4 9872

IV INTEGER*4 16

K INTEGER*4 9908

MOLT REAL*8 9892

N INTEGER*4 9860

S REAL*8 416

SEGNO INTEGER*4 56

SN REAL*8 256

SOL REAL*8 336

TS REAL 9880

TV REAL*8 9884

V REAL*8 96

VN REAL*8 176

MINIMA PROGRAM

Pass One No Errors Detected

94 Source Lines

03-19-95

12:01:15

D Line# 1 7 Microsoft FORTRAN77 V3.31 August 1985

1 PROGRAM MINIMAX

2 C ****************************************************

3 C PROGRAMMA DI CALCOLO DELLA DISTRIBUZIONE DI SEGGI

4 C SECONDO L'ALGORITMO DI CALCOLO DEL MINIMAX

5 C PROGRAMMA SCRITTO DA ROBERTO ESPEN.

6 C MODULO 4 - CONFRONTO FRA RISULTATI E SEGGI

7 C ****************************************************

8 C MATRICE DEI RISULTATI CONFRONTATA CON I SEGGI NORMALIZZATI

9 INTEGER*4 IV(10),HMX(10),SEGNO(10),HM(10)

10 INTEGER*4 N,ITS,ITV,HMM,IK

11 REAL*8 DELTA(10),V(10),HML(10),VN(10),SN(10),D(10),D2(10),S(10)

12 REAL*8 H(10),HT(10),SOL(10),HK(20,20),HS(20,20),HR(10,10,10)

13 C

14 C * APERTURA FILE *

15 C

16 OPEN (UNIT=1,STATUS='OLD',FILE='SOLUTIO.DAT')

17 OPEN (UNIT=2,STATUS='OLD',FILE='VOTI.DAT')

18 OPEN (UNIT=3,STATUS='OLD',FILE='GIOCAT.DAT')

19 OPEN (UNIT=4,STATUS='OLD',FILE='SEGGI.DAT')

20 OPEN (UNIT=5,STATUS='OLD',FILE='HMIN.DAT')

21 OPEN (UNIT=6,STATUS='OLD',FILE='HMAX.DAT')

22 OPEN (UNIT=7,STATUS='OLD',FILE='SOLALL.DAT')

23 C

24 C * ACQUISIZIONE DATI *

D Line# 1 7 Microsoft FORTRAN77 V3.31 August 1985

25 C

26 READ (4,*) ITS

27 READ (3,*) N

28 DO 20,I=1,N

1 29 READ (2,*) IV(I)

1 30 READ (1,*) H(I)

1 31 READ (5,*) HM(I)

1 32 READ (6,*) HMX(I)

1 33 C * CALCOLO DEI VOTI TOTALI ESPRESSI *

1 34 ITV=ITV+IV(I)

1 35 HMM=HMM+H(I)

1 36 20 CONTINUE

37 IF (HMM.EQ.ITS) THEN

38 WRITE (*,*) 'TUTTO OK: I SEGGI SONO IN NUMERO GIUSTO'

39 PAUSE 'PREMERE UN TASTO PER CONTINUARE...'

40 ELSE

41 WRITE (*,*) 'ATTENZIONE: I SEGGI SONO SBAGLIATI'

42 PAUSE 'CONTROLLARE SEGGI.DAT'

43 GO TO 1000

44 ENDIF

45 DO 50,I=1,N

1 46 DO 100,I2=1,N

2 47 DO 150,I3=1,N

3 48 IF (I.EQ.I3) THEN

3 49 HR(I,I2,I3)=H(I)+1

3 50 ELSE

D Line# 1 7 Microsoft FORTRAN77 V3.31 August 1985

3 51 HR(I,I2,I3)=H(I)

3 52 ENDIF

3 53 IF (I.EQ.I2) THEN

3 54 HR(I,I2,I3)=H(I)-1

3 55 ENDIF

3 56 IF ((I.EQ.I2).AND.(I.EQ.I3)) THEN

3 57 HR(I,I2,I3)=H(I)

3 58 ENDIF

3 59 WRITE (7,3500) HR(I,I2,I3)

3 60 150 CONTINUE

2 61 100 CONTINUE

1 62 50 CONTINUE

63 DO 200,I3=1,N

1 64 WRITE (*,*) '***************'

1 65 DO 300,I2=1,N

2 66 WRITE (*,*) '==============='

2 67 DO 400,I=1,N

3 68 WRITE (*,3000) I,I3,I2,HR(I,I3,I2)

3 69 400 CONTINUE

2 70 300 CONTINUE

1 71 200 CONTINUE

72 CLOSE (UNIT=1,STATUS='KEEP')

73 CLOSE (UNIT=2,STATUS='KEEP')

74 CLOSE (UNIT=3,STATUS='KEEP')

75 CLOSE (UNIT=4,STATUS='KEEP')

76 CLOSE (UNIT=5,STATUS='KEEP')

D Line# 1 7 Microsoft FORTRAN77 V3.31 August 1985

77 CLOSE (UNIT=6,STATUS='KEEP')

78 CLOSE (UNIT=7,STATUS='KEEP')

79 3000 FORMAT (T3,I6,T11,I6,T19,I6,T27,E10.5E2)

80 3500 FORMAT (E10.5E2)

81 1000 STOP ' FINE DELL''ELABORAZIONE '

82 END

Name Type Offset P Class

 

D REAL*8 15296

D2 REAL*8 15376

DELTA REAL*8 11936

H REAL*8 12016

HK REAL*8 12096

HM INTEGER*4 11816

HML REAL*8 11856

HMM INTEGER*4 15476

HMX INTEGER*4 496

HR REAL*8 3816

HS REAL*8 616

HT REAL*8 536

I INTEGER*4 15464

I2 INTEGER*4 15484

I3 INTEGER*4 15492

IK INTEGER*4 *****

ITS INTEGER*4 15456

ITV INTEGER*4 15472

IV INTEGER*4 16

N INTEGER*4 15460

S REAL*8 416

SEGNO INTEGER*4 56

SN REAL*8 256

SOL REAL*8 336

V REAL*8 96

VN REAL*8 176

MINIMA PROGRAM

Pass One No Errors Detected

82 Source Lines

03-19-95

12:01:25

D Line# 1 7 Microsoft FORTRAN77 V3.31 August 1985

1 PROGRAM MINIMAX

2 C ****************************************************

3 C PROGRAMMA DI CALCOLO DELLA DISTRIBUZIONE DI SEGGI

4 C SECONDO L'ALGORITMO DI CALCOLO DEL MINIMAX

5 C PROGRAMMA SCRITTO DA ROBERTO ESPEN.

6 C MODULO 5 - RIORDINO A BOLLE DELLE SOLUZIONI

7 C ****************************************************

8 C * MATRICE DEI RISULTATI CONFRONTATA CON I SEGGI NORMALIZZATI

9 C RIORDINO DELLE SOLUZIONI *

10 C

11 INTEGER*4 IV(10),HMX(10),SEGNO(10),HM(10),iii(10,10,10)

12 INTEGER*4 N,ITS,ITV,HMM

13 REAL*8 DELTA(10),V(10),HML(10),VN(10),SN(10),D(10),D2(10),S(10)

14 REAL*8 H(10),HT(10),SOL(10),HK(10,10),HS(10,10),HR(10,10,10)

15 REAL*8 hnorm(10,10,10),hdif(10,10,10),dmin,swit(10),L

16 C

17 C * APERTURA FILE *

18 C

19 OPEN (UNIT=1,STATUS='OLD',FILE='SOLUTIO.DAT')

20 OPEN (UNIT=2,STATUS='OLD',FILE='VOTI.DAT')

21 OPEN (UNIT=3,STATUS='OLD',FILE='GIOCAT.DAT')

22 OPEN (UNIT=4,STATUS='OLD',FILE='SEGGI.DAT')

23 OPEN (UNIT=5,STATUS='OLD',FILE='HMIN.DAT')

24 OPEN (UNIT=6,STATUS='OLD',FILE='HMAX.DAT')

D Line# 1 7 Microsoft FORTRAN77 V3.31 August 1985

25 OPEN (UNIT=7,STATUS='OLD',FILE='SOLALL.DAT')

26 OPEN (UNIT=8,STATUS='OLD',FILE='ORD.DAT')

27 C

28 C * ACQUISIZIONE DATI *

29 C

30 READ (4,*) ITS

31 READ (3,*) N

32 DO 20,I=1,N

1 33 READ (2,*) IV(I)

1 34 READ (1,*) H(I)

1 35 READ (5,*) HM(I)

1 36 READ (6,*) HMX(I)

1 37 C * CALCOLO DEI VOTI TOTALI ESPRESSI *

1 38 v(i)=iv(i)

1 39 ITV=ITV+IV(I)

1 40 HMM=HMM+H(I)

1 41 20 CONTINUE

42 C * Calcolo il valore normalizzato dei voti: val.norm=voto/votitot *

43 do 30,i=1,n

1 44 vn(i)=v(i)/itv

1 45 write (*,*) ' voto norm =',vn(i)

1 46 30 continue

47 IF (HMM.EQ.ITS) THEN

48 WRITE (*,*) 'TUTTO OK: I SEGGI SONO IN NUMERO GIUSTO'

49 PAUSE 'Procedo al tuo comando...'

50 ELSE

D Line# 1 7 Microsoft FORTRAN77 V3.31 August 1985

51 WRITE (*,*) 'ATTENZIONE: I SEGGI SONO SBAGLIATI'

52 PAUSE 'CONTROLLARE SEGGI.DAT'

53 GO TO 1000

54 ENDIF

55 DO 50,I=1,N

1 56 DO 100,I2=1,N

2 57 DO 150,I3=1,N

3 58 IF (I.EQ.I3) THEN

3 59 HR(I,I2,I3)=H(I)+1

3 60 ELSE

3 61 HR(I,I2,I3)=H(I)

3 62 ENDIF

3 63 IF (I.EQ.I2) THEN

3 64 HR(I,I2,I3)=H(I)-1

3 65 ENDIF

3 66 IF ((I.EQ.I2).AND.(I.EQ.I3)) THEN

3 67 HR(I,I2,I3)=H(I)

3 68 ENDIF

3 69 WRITE (7,3500) HR(I,I2,I3)

3 70 150 CONTINUE

2 71 100 CONTINUE

1 72 50 CONTINUE

73 i4=0

74 DO 200,I3=1,N

1 75 WRITE (*,*) '***************'

1 76 DO 300,I2=1,N

D Line# 1 7 Microsoft FORTRAN77 V3.31 August 1985

2 77 WRITE (*,*) '==============='

2 78 dmin=0

2 79 i4=i4+1

2 80 DO 400,I=1,N

3 81 hnorm(i,i3,i2)=hr(i,i3,i2)/its

3 82 hdif(i,i3,i2)=abs(hnorm(i,i3,i2)-vn(i))

3 83 if (hdif(i,i3,i2).ge.dmin) then

3 84 dmin=hdif(i,i3,i2)

3 85 endif

3 86 iii(i,i3,i2)=HR(i,i3,i2)

3 87 WRITE (*,3000) I,I3,I2,iii(I,I3,I2),HNORM(I,I3,I2),hdif(i,i3,i2)

3 88 400 CONTINUE

2 89 swit(i4)=dmin

2 90 write (*,*) swit(i4)

2 91 write (8,*) swit(i4),i3,i2

2 92 C * E' da spostare anche l'indice assieme alla distanza *

2 93 300 CONTINUE

1 94 200 CONTINUE

95 WRITE (*,*) 'Distanze in ordine :'

96 NN=N*N

97 DO 700,I=NN-1,1,-1

1 98 DO 700,J=1,I

2 99 C RIORDINO A BOLLE

2 100 IF (SWIT(J).GT.SWIT(J+1)) THEN

2 101 L=SWIT(J)

2 102 SWIT(J)=SWIT(J+1)

D Line# 1 7 Microsoft FORTRAN77 V3.31 August 1985

2 103 SWIT(J+1)=L

2 104 ENDIF

2 105 700 CONTINUE

106 DO 600,I2=1,NN

1 107 WRITE (*,*) SWIT(I2)

1 108 600 CONTINUE

109 CLOSE (UNIT=1,STATUS='KEEP')

110 CLOSE (UNIT=2,STATUS='KEEP')

111 CLOSE (UNIT=3,STATUS='KEEP')

112 CLOSE (UNIT=4,STATUS='KEEP')

113 CLOSE (UNIT=5,STATUS='KEEP')

114 CLOSE (UNIT=6,STATUS='KEEP')

115 CLOSE (UNIT=7,STATUS='KEEP')

116 CLOSE (UNIT=8,STATUS='KEEP')

117 3000 FORMAT (T3,I6,T11,I6,T19,I6,T27,i6,T35,E10.5E2,T50,E10.5E2)

118 3500 FORMAT (E10.5E2)

119 1000 STOP ' FINE DELL''ELABORAZIONE '

120 END

Name Type Offset P Class

ABS INTRINSIC

D REAL*8 30576

D2 REAL*8 30656

DELTA REAL*8 21616

DMIN REAL*8 30796

H REAL*8 21696

HDIF REAL*8 22576

HK REAL*8 21776

HM INTEGER*4 21496

HML REAL*8 21536

HMM INTEGER*4 30756

HMX INTEGER*4 576

HNORM REAL*8 13496

HR REAL*8 5496

HS REAL*8 4696

HT REAL*8 4616

I INTEGER*4 30744

I2 INTEGER*4 30768

I3 INTEGER*4 30776

I4 INTEGER*4 30784

III INTEGER*4 616

ITS INTEGER*4 30736

ITV INTEGER*4 30752

IV INTEGER*4 16

J INTEGER*4 30812

L REAL*8 30820

N INTEGER*4 30740

NN INTEGER*4 30808

S REAL*8 496

SEGNO INTEGER*4 56

SN REAL*8 256

SOL REAL*8 336

SWIT REAL*8 416

V REAL*8 96

VN REAL*8 176

MINIMA PROGRAM

Pass One No Errors Detected

120 Source Lines

 
 
 
 
 
 
 
Bibliografia

 

 

 

 

 

 

Balinski M.L.e Demange G.(1987) "Algorithms for proportional matrices in reals and integers", Cahiers du Laboratorie d'Econométrie, Ecole Polytechnique, n. AD 299 0487

 

Balinski M.L.e Demange G.(1987) "An axiomatic approach to proportionality between matrices", Cahiers du Laboratorie d'Econométrie, Ecole Polytechnique, n. AD 303 0887

 

Bernardi C. e Menghini M. (1990) "Sistemi elettorali: la "soluzione" italiana". Bollettino UMI, vol.7, riv.4, pag. 271-293

 

Ellis T. M. R. (1985) "Programmazione strutturata in FORTRAN 77"

Zanichelli ed.

 

Gambarelli G. (1983) "Common behaviour of power indices" International Journal of Game Theory, Vol.12, riv.4, pag.237-244.

 

Gambarelli G. (1991)- "Applicazioni politiche e finanziarie degli indici di potere" - LaDecisione: razionalità collettiva e strategica nelle amministrazioni e nelle organizzazioni (L.Sacconi ed.), Angeli, Milano, pag. 268- 281.

 

Gambarelli G.(1994) "Electoral systems and data processing".

Congreso ibero- americano de informatica y derecio organizado par el Ministerio e Justicia de la nàcion Argentina, Bariloche.

 

Gambarelli G.(1995) "Minimax solution for multi-ordered apportionments". In attesa di pubblicazione.

 

Gambarelli G.e Biella R.(1992) "Sistemi elettorali". Il Politico (Univ. Pavia, Italia), anno LVII, n.4, pag. 557-588.

 

Gambarelli G. e Holubiec J. (1990) "Power indices and democratic apportionment". Proceedings of the 8-th Italian-Polish Symposium on Systems Analysis and Decision Support in Economics and Technology

(M. Fedrizzi and J.Kacprzyk eds.) Onnitech Press, Warsaw, Poland, pag. 240-255

 

Mitra G. (1988) "Mathematical models for decision support" Springer-Verlag, Berlin Heidelberg, NATO ASI Series, Vol F48

 

Syed S.A.(1987) "The apportionment of representation and the voting power". Department of Applied Mathematics, Faculty of Engineering Science, Osaka University, Toyonaka, Osaka 560, Japan

 

Te Riele H.J.J.(1978)"The proportional representation problem in the Second Chamber : an approach via minimal distances". Statistica Neederlandica, 32, 4,pag. 163-179.

 

Theil H. e Schrage L.(1977) "The apportionment problem and the European Parliament" European Economic Review, vol.9, pag. 247-263.