Зажиточные по Кондорсу правила голосования все же чрезвычайно популярны, в частности, благодаря простоте доведения парного сравнения по правилу большинства. Соответствующий класс зажиточных по Кондорсу методов основан на последовательных сравнениях по правилу большинства. Законопроект и многочисленные поправки к нему в конгрессе США голосуются именно таким способом. Известен метод последовательного исключения может нарушать условие оптимума по Парето. Другие методы, основанные на бинарных деревьях парных сравнений по правилу большинства, противоречат аксиоме монотонности. Наиболее простое правило, которое основано на последовательном сравнении и является оптимальным по Парето и монотонным, называется многоэтапным методом исключения. При использовании этого метода нужно меньше парных сравнений, чем в других, концептуально более простых методах, например в правиле Копленда. По последнему правилу избирается тот, кто выигрывает большинство парных дуэлей. Таким образом, голосование, основанное на последовательных парных сравнениях, может удовлетворять больше всего важным аксиоматическим требованиям, но только в том случае, если мы аккуратно выберем эту последовательность.
Правила Борда, относительного большинства и антибольшинства являют собой примеры правил голосования с подсчетом очков. Однако правило антибольшинства явно не монотонно, а правило относительного большинства – несправедливое.
Победитель Борда не может быть наихудших по Кондорсу, так как он является кандидатом, который имеет наивысший средний балл. По этому правилу всегда находятся оптимальный по Парето победитель или их множественное число. Примерами зажиточных по Кондорсу правил являются правила Копленда и Симпсона. Так же, как и правило Борда или любой другой метод подсчета очков, эти правила выбирают для каждого профиля подмножество победителей, которое может состоять из нескольких кандидатов, которые получили одинаковую оценку.
Как уже было отмечено, правила голосования должны быть монотонные, оптимальные по Парето, анонимные и нейтральные. Все правила голосования с подсчетом очков, кроме правила антибольшинства, оптимальны по Парето, монотонные, анонимные и нейтральные, если мы не указываем, что делать при равенстве очков. Кроме того, правила голосования должны удовлетворять аксиоме участия и пополнения. Метод Борда относится к этим правилам (это было показано в предыдущем разделе).
Правила Борда и Копленда, как отмечает Мулен, опираясь на практику, не очень части приводят к равенству очков, потому в этом ракурсе является наилучшими. Однако методы Кондорсе, к которым относится и правило Копленда, для некоторых профилей может не удовлетворять аксиоме участия.
Следующей группой правил являются правила, основанные на последовательном исключении за методом подсчета очков (относительное большинство с выбыванием, метод альтернативных голосов). Однако эти правила, как и любые другие методы, с выбыванием кандидатов нарушают свойство монотонности для некоторых профилей.
Метод ривнобижного исключения выбирает оптимальный за Парето результат в случае, когда при бинарных выборах нет ривностей. Однако если равенству возможные, то оптимум за Парето может нарушаться. Невзирая на выше перечисленные трудности, возможность за Кондорсе, широко известная в качестве демократического принципа, в то время как правило Борда "скрывает" настоящие симпатии избирателей за математической формулой. К зажиточным по Кондорсу правилам относят также следующие методы голосования:
а) голосование с последовательным исключением. При очевидных причинах это правило не является нейтральным и оптимальным по Парето, так как порядок исключений влияет на результат голосования. Определяя повестку дня, председатель фактически контролирует процесс выборов. Однако это правило достаточно широко используется Конгрессом США;
б) правило равномерного исключения. Оно порождает дерево без повторных исключений и требует проведения целого ряда мажоритарных турниров. Как было доказано в предыдущем разделе, бинарное дерево может дать оптимальное по Парето правило голосование только в более сложном случае, чем безповторне дерево. Также может нарушаться монотонность;
в) дерево многоэтапных исключений. Этот метод обеспечивает проведение наполовину меньшего количества мажоритарных турниров, чем метод Копленда. Оно имеет большой размер. Кандидатам, возможно, нужно принимать участие в дуэлях с тем же оппонентом по нескольку раз. Однако его алгоритм является достаточно простым. Дерево многоэтапного исключения порождает оптимальный за Парето и монотонный метод голосования. Всегда находится единственный победитель, а не множественное число. Однако этот метод порождает все трудности, которые связаны с использованием бинарных деревьев.
Таким образом, была проведена сравнительная характеристика всех методов голосования большинством голосов с исключением случаев безразличия и представления неправдивой информации.
Среди зажиточных по Кондорсу правил голосования мы обнаружили три метода, которые удовлетворяют основным требованиям оптимума по Парето, анонимности и монотонности: множественное число победителей по Копленду, множественное число победителей по Симпсону и дерево многоэтапного исключения. Среди методов подсчета очков наилучшим оказался метод определения победителя по Борду. Зажиточные по Кондорсу правила примененные на парном сравнении кандидатов по правилу относительного большинства. Для рядового избирателя они являются наиболее понятными.
Правило Борда удовлетворяет аксиоме участия и пополнения, но скрывает за математической формулой настоящие преимущества избирателей.
Для программной реализации выберем один из методов Копленда как самый простой и для сравнения определим победителя за Борда.
Приведем еще раз правила Копленда и Борда для того, чтобы перейти к формулировке алгоритма программы.
Правило Борда. Каждый избиратель сообщает свои преимущества, ранжируя р кандидатов от лучшего к худшему (безразличность запрещается). Кандидат не получает очков за последнее место, получает одно очко за предпоследнее и так далее, получает р-1 очков за первое место. Побеждает кандидат с наибольшей суммой очков. Он называется победителем по Борду.
Правило Копленда. Сравним кандидата а с любым другим кандидатом х. Начислим ему +1, если для большинства а лучше за х, -1, если для большинства х лучше за а, и 0 при равенстве. Суммируя общее количество очков по всем х, х¹а получаем оценку Копленда для а. Избирается кандидат, названный победителем по Копленду, с наивысшей из таких оценок.
Считаем, что входными данными задачи является уже сгруппированная информация: сформированные группы избирателей с одинаковыми в каждой группе рангами преимуществ. Однако допускается и занесение информации каждым избирателем отдельно.
4. Описание алгоритма
В данном разделе наводятся алгоритмы для нахождения победителей выборов. Для определения победителей Борда и Копленда воспользуемся непосредственно приведенными выше правилами, то есть реализуем их программно. Сложность алгоритмов, описанных ниже, прямо пропорциональна количеству групп избирателей и количества кандидатов, что еще раз подтверждает принадлежность данной задачи к Р-типу.
4.1 Определение победителя Борда
Для нахождения оценок Борда кандидаты ранжируются, то есть за каждое место в шкале избирателей кандидат получает определенное количество баллов.
Далее эти баллы суммируются.
Введем следующие переменные.
Пусть М – количество кандидатов;
S – количество групп избирателей;
Nаme[M] – массив имен избирателей;
Rаng[1..M, 1..S] – профиль преимуществ;
Many[S] – количество избирателей в каждой группе;
Bord[M] – массив оценок кандидатов.
Рассматриваем отдельно каждую группу избирателей. Для этой группы кандидат получает оценку [количество избирателей many[i]]*([количество кандидатов M] – [текущее значение счетчика j]). Найденная оценка добавляется к предыдущей. Алгоритм продолжает работу до тех пор, пока не будут рассмотрены все группы избирателей (i=S).
По правилу Борда получаем следующий алгоритм для нахождения оценок Борда.
Рис. 4.1 Алгоритм нахождения оценок Борда.
Рис. 4.2 Алгоритм нахождения оценок Копленда (начало)
4.2 Нахождение оценки Копленда
Для нахождения оценки Копленда кроме выше приведенных используем следующие переменные: Kopl[M] – массив оценок Копленда; Vybor1, vybor2 – вспомогательные переменные; используются для пересмотра имен кандидатов из массива имен name.
Сравнение проходит следующим образом.
Переменной vybor1 присваиваем значение имени первого кандидата из множественного числа имен name (contrl=1), а vybor2 – следующее (k=contrl+1). Если vybor1 находится выше, чем vybor2, в преимуществах избирателей всех групп, то к оценке Копленда (kopl[contrl]) кандидата vybor1 добавляется глазок, а vybor2 (kopl[k]) – отнимается и наоборот. Дальше переменной vybor2 присваивается следующее значение из массива имен (k=k+1), и процедура сравнения опять повторяется. Цикл продолжается до тех пор, пока не исчерпаются имена в списке кандидатов.
После этого переменной vybor1 присваивается второе имя из списка кандидатов (contrl=contrl+1), а vybor2 – третья. Опять проходит цикл по переменной vybor2. Цикл по переменной vybor1 заканчивается тогда, когда будут пересмотрены все кандидаты.
Получаем следующий алгоритм нахождения оценки Копленда.
Рис. 4.3 Алгоритм нахождения оценок Копленда (конец)
4.3 Алгоритм определения победителя за правилами Борда или Копленда