Процедура циклов зависти
Процедура циклов зависти — процедура справедливого распределения объектов.
Эксперимент был проведён в 75+ странах мира из которых являются: Россия, США, Канада, Франция, КНР, Япония, Казахстан, КНДР, Италия и т.…'
Данная процедура может быть использована несколькими людьми, желающими разделить между собой некоторые предметы в дискретном пространстве. Например: фамильные вещи, лакомства или места в классе.
Желательным является распределение предметов, обеспечивающее отсутствие зависти, то есть ситуация, когда каждый человек имеет предпочитаемый им набор. Из-за неделимости предметов такое распределение, в целом, недостижимо (например, распределение одного предмета между двумя агентами), поэтому процедура циклов зависти стремится достичь «второй по уровню» цели — отсутствия зависти с точностью до отдельного предмета. Результатом действия метода является такое распределение, в котором зависть одного лица другому лицу ограничена максимальной предельной полезностью отдельного предмета. Другими словами, для любых двух людей i и j существует такой предмет, при удалении которого i не будет завидовать j.
Процедуру представили Липтон, Маркакис, Моссель и Сабери[1] и она описана также в статье Брандта и др.[2].
Предположения
Процедура циклов зависти предполагает, что каждое лицо имеет функцию количественной полезности на наборах предметов. Эта функция полезности не обязана быть аддитивной. То есть предметы не предполагаются независимыми.
Агенты не обязаны рассказывать об их действительной количественной полезности — достаточно того, что они знают, как упорядочить по полезности наборы.
Процедура
- Располагаем предметы в произвольном порядке.
- Пока есть нераспределённые предметы:
- Убедимся, что есть незавидный агент — агент, которому не завидует никакой другой агент;
- Отдаём следующий предмет незавидному агенту.
Если на шаге 2 нет незавидных агентов, это означает, что существует ориентированный цикл в графе зависти — ориентированном графе, где каждый агент указывает на всех агентов, которым он завидует. Циклы могут быть удалены путём циклического обмена наборами предметов. Когда все циклы удалены, граф зависти должен иметь узел, в который не приходит ни одна дуга, эта дуга и представляет незавидного агента.
В получившемся распределении не обязательно будет отсутствовать зависть, но оно является распределением без зависти, за исключением одного предмета. Это верно не только для финального распределения, но также и для каждого промежуточного распределения — поскольку предмет всегда передаётся незавидному агенту, зависть всех остальных агентов после передачи предмета может отражаться только в отдельном предмете.
Анализ времени работы
Предположим, что имеется m предметов. Каждая передача предмета добавляет в граф зависти не более n-1 дуг. Следовательно, всего будет добавлено не более дуг. Каждое удаление цикла удаляет по меньшей мере две дуги. Следовательно, нам нужно осуществлять шаг удаления цикла не более раз. Поиск цикла может быть осуществлён за время с помощью, например, поиска в глубину. Общее время работы будет .
Примеры
В этих примерах предпочтения задаются величинами 1-3, где большее число означает большее предпочтение. Здесь a, b и c являются людьми, а X, Y и Z являются предметами.
1) С 3 людьми и 3 объектами любое возможное распределение даёт различные результаты. Это происходит, когда каждый из трёх участников имеет те же предпочтения.
X | Y | Z | |
---|---|---|---|
a | 3 | 2 | 1 |
b | 3 | 2 | 1 |
c | 3 | 2 | 1 |
Есть шесть различных путей распределения объектов:
Первоначально, поскольку никто не обладает какими-либо предметами, все агенты незавидны и это верно для всех случаев. В случае наличия связки, мы разбиваем связку между незавидными агентами в лексикографическом порядке.
- Начнём с передачи предмета X агенту a. После этого агентам b и c никто не завидует. Так что теперь отдаём предмет Y агенту b. После этого есть агент c, которому никто не завидует, так что отдаём предмет Z агенту c. Теперь агент c завидует и b, и a, агент b завидует, а агент a не завидует никому. Таким образом, нет циклов зависти и нет объектов для распределения, так что процедура завершается и результатом будет передача агенту a предмета X, агенту b предмета Y, а агенту c предмета Z.
- Начнём с передачи предмета X агенту a. После этого агентам b и c никто не завидует. Так что теперь отдаём предмет Z агенту b. После этого остаётся агент c, которому никто не завидует, отдаём последний объект Y агенту c. Теперь c завидует a, b завидует a и c, а агент a не завидует никому и теперь, поскольку нет цикла зависти и нет объектов для распределения, процедура завершается и как результат, a получает X, b получает Z, а c получает Y.
- Начнём с передачи предмета Y агенту a. После этого агентам b и c никто не завидует. Так что теперь отдаём предмет X агенту b. После этого остаётся агент c, которому никто не завидует, отдаём последний объект Z агенту c. Теперь c завидует a и b, a завидует b, а b не завидует никому и теперь, поскольку нет цикла зависти и нет больше объектов для обработки, процедура завершается и как результат, a получает Y, b получает X, а c получает Z.
- Начнём с передачи предмета Y агенту a. После этого агентам b и c никто не завидует. Так что теперь отдаём предмет Z агенту b. После этого остаётся агент c, которому никто не завидует, отдаём последний объект X агенту c. Теперь a завидует c, b завидует a и c, а c не завидует никому и теперь, поскольку нет цикла зависти и нет больше объектов для обработки, процедура завершается и как результат, a получает Y, b получает Z, а c получает X.
- Начнём с передачи предмета Z агенту a. После этого агентам b и c никто не завидует. Так что теперь отдаём предмет X агенту b. После этого остаётся агент c, которому никто не завидует, отдаём последний объект Y агенту c. Теперь c завидует b, a завидует b и c, а b не завидует никому и теперь, поскольку нет цикла зависти и нет больше объектов для обработки, процедура завершается и как результат, a получает Z, b получает X, а c получает Y.
- Начнём с передачи предмета Z агенту a. После этого агентам b и c никто не завидует. Так что теперь отдаём предмет Y агенту b. После этого остаётся агент c, которому никто не завидует, отдаём последний объект X агенту c. Теперь b завидует c, a завидует b и c, а c не завидует никому и теперь, поскольку нет цикла зависти и нет больше объектов для обработки, процедура завершается и как результат, a получает Z, b получает Y, а c получает X.
2) С 3 людьми и 3 объектами любое возможное распределение даёт тот же самый результат. Это происходит, когда каждый из трёх человек имеет совершенно отличные от других агентов предпочтения, и в этом случае каждое лицо имеет что-то отличающееся по предпочтению, независимо от того, что оно получит.
X | Y | Z | |
---|---|---|---|
a | 3 | 2 | 1 |
b | 1 | 3 | 2 |
c | 2 | 1 | 3 |
Есть шесть различных способов распределить объекты:
В начале, поскольку никто не имеет ничего, то все агенты являются незавидными и это верно для всех случаев. В случае наличия связки, мы разбиваем связку между незавидными агентами в лексикографическом порядке.
- Начнём с передачи предмета X агенту a. После этого агентам b и c никто не завидует. Так что теперь отдаём предмет Y агенту b. После этого остаётся агент c, которому никто не завидует, отдаём последний объект Z агенту c. Теперь a, b и c все не завидуют никому и теперь, поскольку нет цикла зависти a и нет больше объектов для обработки, процедура завершается и как результат, a получает X, b получает Y, а c получает Z.
- Начнём с передачи предмета X агенту a. После этого агентам b и c никто не завидует. Так что теперь отдаём предмет Z агенту b. После этого остаётся агент c, которому никто не завидует, отдаём последний объект Y агенту c. Теперь c завидует b, b завидует c, а a не завидует никому. Поскольку имеется цикл зависти между b и c, они обмениваются объектами, и теперь b получает Y, а c получает Z. После этого, поскольку нет цикла зависти и нет больше объектов для обработки, процедура завершается и как результат, a получает X, b получает Y, а c получает Z.
- Начнём с передачи предмета Y агенту a. После этого агентам b и c никто не завидует. Так что теперь отдаём предмет X агенту b. После этого остаётся агент c, которому никто не завидует, отдаём последний объект Z агенту c. Теперь b завидует a, a завидует b, а c не завидует никому. Поскольку имеется цикл зависти между агентами b и c, они обмениваются предметами и теперь агент a получает X, а b получает Y. После этого, поскольку нет цикла зависти и нет больше объектов для обработки, процедура завершается и как результат, a получает X, b получает Y, а c получает Z.
- Начнём с передачи предмета Y агенту a. После этого агентам b и c никто не завидует. Так что теперь отдаём предмет Z агенту b. После этого остаётся агент c, которому никто не завидует, отдаём последний объект X агенту c. Теперь b завидует a, a завидует c, а c завидует b. Поскольку имеется цикл зависти между a, b и c, они передают объекты по циклу по направлению, противоположному зависти, так что теперь a получает X, b получает Y, а c получает Z. После этого, поскольку нет цикла зависти и нет больше объектов для обработки, процедура завершается и как результат, a получает X, b получает Y, а c получает Z.
- Начнём с передачи предмета Z агенту a. После этого агентам b и c никто не завидует. Так что теперь отдаём предмет X агенту b. После этого остаётся агент c, которому никто не завидует, отдаём последний объект Y агенту c. Теперь b завидует a и c, a завидует b и c, а c завидует b и a. Поскольку существует цикл зависти между a, b и c, передаём объекты против направления зависти, так что теперь a получает X, b получает Y, а c получает Z. и теперь, поскольку нет цикла зависти и нет больше объектов для обработки, процедура завершается и как результат, a получает X, b получает Y, а c получает Z.
- Начнём с передачи предмета Z агенту a. После этого агентам b и c никто не завидует. Так что теперь отдаём предмет Y агенту b. После этого остаётся агент c, которому никто не завидует, отдаём последний объект X агенту c. Теперь c завидует a, a завидует c и b не завидует никому. Поскольку имеется цикл зависти между a и c, они обмениваются объектами и теперь a получает X, а c получает Z. После этого, поскольку нет цикла зависти и нет больше объектов для обработки, процедура завершается и как результат, a получает X, b получает Y, а c получает Z.
3) С 3 людьми и 3 объектами любые другие ситуации, отличные от первого и второго примеров, дадут число результатов между 1 и 6. Чтобы это случилось, должно иметься по меньшей мере два человека, имеющих одинаковые предпочтения на один объект и не более двух человек, имеющих различные предпочтения на один и тот же объект.
X | Y | Z | |
---|---|---|---|
a | 3 | 2 | 1 |
b | 3 | 1 | 2 |
c | 1 | 2 | 3 |
Есть шесть различных способов распределить объекты: В начале, поскольку никто не имеет ничего, то все агенты являются незавидными и это верно для всех случаев. В случае наличия связки, мы разбиваем связку между незавидными агентами в лексикографическом порядке.
- Начнём с передачи предмета X агенту a. После этого агентам b и c никто не завидует. Так что теперь отдаём предмет Y агенту b. После этого остаётся агент c, которому никто не завидует, отдаём последний объект Z агенту c. Теперь a не завидует никому, b завидует a и c, а c не завидует никому, и теперь, поскольку нет цикла зависти и нет объектов для обработки, процедура завершается и в результате a получает X, b получает Y, а c получает Z.
- Начнём с передачи предмета X агенту a. После этого агентам b и c никто не завидует. Так что теперь отдаём предмет Z агенту b. После этого остаётся агент c, которому никто не завидует, отдаём последний объект Y агенту c. Теперь a не завидует никому, b завидует a, а c завидует b, и теперь, поскольку не имеется цикла зависти и нет больше предметов для обработки, процедура завершается и в результате a получает X, b получает Z, а c получает Y.
- Начнём с передачи предмета Y агенту a. После этого агентам b и c никто не завидует. Так что теперь отдаём предмет X агенту b. После этого остаётся агент c, которому никто не завидует, отдаём последний объект Z агенту c. Теперь b и c не завидуют никому, а a завидует b, и теперь, поскольку нет циклов зависти и нет больше предметов для обработки, процедура завершается и в результате a получает Y, b получает X, а c получает Z.
- Начнём с передачи предмета Y агенту a. После этого агентам b и c никто не завидует. Так что теперь отдаём предмет Z агенту b. После этого остаётся агент c, которому никто не завидует, отдаём последний объект X агенту c. Теперь a завидует c, b завидует c, а c завидует a и b, так что имеется два цикла зависти, один между a и c, а другой между b и c. Имеется связка, которую мы разрываем в лексикографическом порядке. Процедура берёт сначала цикл зависти между a и c и обменивает объекты этих агентов, так что теперь a не завидует никому, b завидует a и c завидует b, так что теперь, поскольку нет цикла зависти и нет больше объектов для обработки, процедура завершается и в результате a получает X, b получает Z, а c получает Y.
- Начнём с передачи предмета Z агенту a. После этого агентам b и c никто не завидует. Так что теперь отдаём предмет X агенту b. После этого остаётся агент c, которому никто не завидует, отдаём последний объект Y агенту c. Теперь a завидует b и c, b не завидует никому, а c завидует a. Поскольку имеется цикл зависти между a и c, они обмениваются объектами и теперь a получает Y, а c получает Z, и теперь, поскольку не имеется цикла зависти и нет больше предметов для обработки, процедура завершается и в результате a получает Y, b получает X, а c получает Z.
- Начнём с передачи предмета Z агенту a. После этого агентам b и c никто не завидует. Так что теперь отдаём предмет Y агенту b. После этого остаётся агент c, которому никто не завидует, отдаём последний объект X агенту c. Теперь b завидует a и c, a завидует b и c, а c завидует b и a. Поскольку имеется цикл зависти между a, b и c, они обмениваются объектами в направлении, противоположном зависти. Однако, поскольку имеется 2 цикла зависти между a, b и c, могут быть два варианта. Мы решаем неоднозначность в лексикографическом порядке, так что a получает X от c, b получает Z от a, а c получает Y от b, так что в результате получим, a владеет X, b владеет Z, а c владеет Y. Теперь, поскольку нет цикла зависти и нет больше объектов для распределения, процедура завершается и в результате a получает X, b получает Z, а c получает Y.
См. также
Примечания
- Lipton, Markakis, Mossel, Saberi, 2004, с. 125.
- Brandt, Conitzer и др., 2016, с. 300–301.
Литература
- Lipton R. J., Markakis E., Mossel E., Saberi A. On approximately fair allocations of indivisible goods // Proceedings of the 5th ACM conference on Electronic commerce - EC '04. — 2004. — ISBN 1-58113-771-0. — doi:10.1145/988772.988792.
- Felix Brandt, Vincent Conitzer, Ulle Endriss, Jérôme Lang, Ariel D. Procaccia. Handbook of Computational Social Choice. — Cambridge University Press, 2016. — ISBN 9781107060432.