Forum.iFiction.Ru

iFiction.Ru · ifHub · FAQ · IFWiki · QSP · URQ · INSTEAD · AXMA

форум об interactive fiction, текстовых приключенческих играх и всём таком...

Вы не зашли.

0    3    #26
09.02.2019 13:55

blinovvi
Участник (+562, -112)
Зарегистрирован: 16.11.2014
Сообщений: 205
Вебсайт

blinovvi.blogspot.com

Re: Новые методы голосования на КРИЛ

Кстати, насколько я понимаю, в оригинальном методе Шульце в предельных случаях тоже появляются несвязные графы. Так чио даже в этом смысле правило "не голосовал=не знаю" никаких новых потенциальных проблем не создаёт.

Неактивен

2    0    #27
09.02.2019 14:37

crem
Участник (+195, -71)
Зарегистрирован: 22.08.2016
Сообщений: 76

Re: Новые методы голосования на КРИЛ

Olegus t.Gl. написал:

Я завтра отвечу, сейчас очень занят. Сделаю, чтобы можно было посмотреть ещё и пути, ведущие в тупик или в цикл, чтобы можно было разбирать все варианты.

Ок, я вроде бы разобрался что не так.
В процессе поиска сильнейшего пути надо найти самое слабое звено.
Каждое звено -- это пара дуг (количество голосов, предпочитающих А Б, и наоборот)

Но как определять, какое из звеньев сильнее, методом Шульце не задано, заданы только алгебраические свойства этого сравнения.
4 примера метода сравнения перечилены на стр. 12 этой статьи Шульце от 15 декабря 2018:
https://arxiv.org/pdf/1804.02973.pdf

Методы такие:
1. По разнице прямых и обратных голосов.
2. По отношению прямых и обратных голосов.
3. По превосходству выигрыша:
Если A>B и C>D, то AB сравнивается с CD по весу выигрывающей дуги.
Если A>B и C<D (и наоборот), то значения дуг не смотрятся, выигрывающая дуга сильнее.
Если A<B и C<D, то сравниваются значения выигрывающих (обратных) дуг.
4. По превосходству проигрыша.
То же самое, но сравниваются значения проигрывающих дуг.

В статье написано, что метод 1 самый понятный, и большинство примеров показано именно на этот метод (хотя есть примеры на все методы).

С первого взгляда метод, описанный в википедии, и который вроде бы ты реализовал, -- это очень хорошее приближение метода 3 из списка:
Если веса дуг (a; b) и a > b, то о значении обратной дуги b почти всегда можно забыть, но не всегда.
Когда надо не забывать:
Когда сравниваем (a;b) и (c;d), a>b, c>d и a=c, тогда сравниваются b и d.
Дуга (a; b) где a==b -- это лучше чем (c;d) где c<d, но хуже чем c>d, независимо от значений c и d (но вроде бы тут не всё так просто)..


У меня не так, я просто сравниваю значения прямых дуг (не важно, выигранные они или проигранные).
У меня получается, что (10;18) (10 за, 18 против) сильнее чем (9; 3) (9 за, 3 против).
Да, у меня неправильно. Перепишу метод с 4 предложенными способами оценок из статьи.


Возвращаясь к списку методов, мне кажется, что первые два -- самые логичные.
В методе 3 получается что 100 голосов за то что А лучше Б и 99 против -- это то же самое что 100 за и 0 против.
Что лучше, метод 1 или 2 -- это вопрос.
В первом 100 за, 90 против -- это лучше, чем 20 за, 15 против,
а во втором -- наоборот.

Тут анализ отличий метода 1 и метода 3: https://rangevoting.org/WinningVotes.html

Отредактировано crem (09.02.2019 16:17)

Неактивен

2    0    #28
09.02.2019 15:11

Olegus t.Gl.
Участник (+977, -231)
Откуда: Москва
Зарегистрирован: 01.03.2001
Сообщений: 2869
Вебсайт

Re: Новые методы голосования на КРИЛ

crem написал:

В процессе поиска сильнейшего пути надо найти самое слабое звено.

Уточню, чтобы не было недопонимания этого пункта. Нужно найти не самое слабое звено всех возможных путей, а самое слабое звено у сильнейшего пути. И поскольку сила пути определяется его слабейшим звеном, то из всех возможных путей нужно выбрать тот, у кого слабейшее звено БОЛЬШЕ, чем у остальных.

Неактивен

0    0    #29
09.02.2019 15:55

crem
Участник (+195, -71)
Зарегистрирован: 22.08.2016
Сообщений: 76

Re: Новые методы голосования на КРИЛ

Olegus t.Gl. написал:

crem написал:

В процессе поиска сильнейшего пути надо найти самое слабое звено.

Уточню, чтобы не было недопонимания этого пункта. Нужно найти не самое слабое звено всех возможных путей, а самое слабое звено у сильнейшего пути. И поскольку сила пути определяется его слабейшим звеном, то из всех возможных путей нужно выбрать тот, у кого слабейшее звено БОЛЬШЕ, чем у остальных.

А можно поинтересоваться, для кого это уточнение? smile
Если это объяснение метода для остальных посетителей форума, ок.
Но мне просто оно прозвучало так, будто бы оно мне и Блинову. Но по-моему должно быть очевидно, что если мы уже написали свои реализации алгоритма, то основы нам понятны.

Что я хотел сказать в этом предложении -- это то, что нам надо найти не отдельную дугу, не число, одно число, обозначающее количество голосов, а пару дуг (прямую и обратную), образующих звено. В статье на архиве во всех примерах сила пути (как и сила каждого звена) задана парой чисел, а не одним числом.


Другое дело, что для оценки превосходства звена иногда можно на самом деле хранить одно число. В примерах это делается так:
Пример 1. Хранить разность (в противоположном направлении будет противоположное число)
Пример 2. Хранить отношение (в противоположном направлении будет обратное число).
Пример 3. Хранить только дугу с бОльшей силой. (то, что ты сейчас делаешь)
  Значение обратной дуги нужно только для разрешения ситуаций когда прямая==обратной или прямая одного звена равно прямой другого звена, а их надо сравнить.
  Обычно этот случай можно проигнорировать, так как если голосов гораздо больше, чем кандидатов, то такие ситуации маловероятны.
  Но в нашем примере такое проходит на каждом шагу!

Неактивен

0    0    #30
09.02.2019 16:03

crem
Участник (+195, -71)
Зарегистрирован: 22.08.2016
Сообщений: 76

Re: Новые методы голосования на КРИЛ

Раз уж мы заговорили о широком спектре голосований методом Шульце, добавлю ещё несколько переменных.

Между "остальные хуже" (добавляется 1 к дуге) и "остальные не знаю" (добавляется 0), возможен широкий спектр вариантов (от 0 до 1).
То есть можно сделать, чтоб "остальные хуже" учитывалось, но было меньший вес, чем активные голоса. (например, вес 0.3)

Так же, не обязательно делать "остальные хуже" (то есть как будто остальным поставили 0).
Вместо этого, можно сделать например "остальным 2.5".
Чтобы можно было поиграть в игру и поставить оценку "это настолько плохая игра, что я думаю, что она хуже тех игр, которые я не открывал".

Неактивен

3    0    #31
09.02.2019 16:05

Olegus t.Gl.
Участник (+977, -231)
Откуда: Москва
Зарегистрирован: 01.03.2001
Сообщений: 2869
Вебсайт

Re: Новые методы голосования на КРИЛ

crem написал:

А можно поинтересоваться, для кого это уточнение? smile
Если это объяснение метода для остальных посетителей форума, ок.
Но мне просто оно прозвучало так, будто бы оно мне и Блинову. Но по-моему должно быть очевидно, что если мы уже написали свои реализации алгоритма, то основы нам понятны.

Поскольку у нас у всех разные результаты, то кто-то что-то не так понял в основах. И я вполне допускаю, что все, кто у себя реализует это метод, могут сомневаться в моих результатах и алгоритмах. Поэтому я озвучиваю, как я воспринимаю (и соответственно как у меня реализованы) те или важные пункты. Просто, чтобы отбросить их из разбора, почему у нас всё разное. Никакого менторства.

Неактивен

1    0    #32
09.02.2019 16:11

Olegus t.Gl.
Участник (+977, -231)
Откуда: Москва
Зарегистрирован: 01.03.2001
Сообщений: 2869
Вебсайт

Re: Новые методы голосования на КРИЛ

crem написал:

Раз уж мы заговорили о широком спектре голосований методом Шульце, добавлю ещё несколько переменных.

Между "остальные хуже" (добавляется 1 к дуге) и "остальные не знаю" (добавляется 0), возможен широкий спектр вариантов (от 0 до 1).
То есть можно сделать, чтоб "остальные хуже" учитывалось, но было меньший вес, чем активные голоса. (например, вес 0.3)

Так же, не обязательно делать "остальные хуже" (то есть как будто остальным поставили 0).
Вместо этого, можно сделать например "остальным 2.5".
Чтобы можно было поиграть в игру и поставить оценку "это настолько плохая игра, что я думаю, что она хуже тех игр, которые я не открывал".

Погоди, метод Шульце рассматривает не баллы, а места. Поэтому "остальные хуже" — это как раз нулевые баллы, чтобы гарантировано не смешивать их с теми, кому проставили 1 балл. В зачёт же идут не разницы между баллами, а больше они или меньше друг-друга. Наличие нуля в оценках указывает алгоритму, что эту пару можно сравнить. Если нуль отсутствует, то сравнивать тут нечего, тут нельзя определить кому отдать голос и всё такое.

Неактивен

1    0    #33
09.02.2019 16:40

crem
Участник (+195, -71)
Зарегистрирован: 22.08.2016
Сообщений: 76

Re: Новые методы голосования на КРИЛ

Olegus t.Gl. написал:

Погоди, метод Шульце рассматривает не баллы, а места. Поэтому "остальные хуже" — это как раз нулевые баллы, чтобы гарантировано не смешивать их с теми, кому проставили 1 балл. В зачёт же идут не разницы между баллами, а больше они или меньше друг-друга. Наличие нуля в оценках указывает алгоритму, что эту пару можно сравнить. Если нуль отсутствует, то сравнивать тут нечего, тут нельзя определить кому отдать голос и всё такое.

Я имею в виду, что можно сделать так, чтоб можно было сказать не только "все игры, которые я оценил, лучше тех, которые нет", но и "вот эта игра настолько ужасна, что она даже хуже тех, которые я не видел".
Метод Шульце рассматривает взаимное отношение игр, но из-за того, что в прошедших КРИЛах мы ставили баллы (которые мы потом преобразовываем в список отношений хуже/лучше), так проще объяснять.

Не то что бы мне очень нравится это предложение ("остальным -- как будто 2.5"), но вот, что я имел в виду:
- Игроки ставят оценки от 1 до 10
- Мы преобразовываем оценки в отношения "лучше/хуже", как мы сейчас делаем упражняясь на КРИЛ-2018
- Игры, оцененные оценками 3, 4, 5,..., 9, 10  лучше неоцененных.
- Игры, оцененные оценками 1 и 2 хуже неоцененных.


Голосовалку можно сделать и другим образом, не показывая оценки:
- Напротив каждой игры показать горизонтальный слайдер (слева метка "хуже", справа -- "лучше")
- Игра с более правым положением слайдера лучше игры с более левым положением слайдера
- По умолчанию сделать слайдер по центру (либо ближе к левому краю, но не на самом краю)
- Оценивать все игры (даже в которые не играл) обязательно
- Написать об этом инструкцию и в качестве примера сказать, что можно слайдеры игр, в которые не играл, не двигать (но если хотите, двигайте), а остальные игры располагайте относительно них.

Тогда вопрос "остальные хуже" или "остальные не знаю" вообще стоять не будет. Голосовать обязательно, это "как остальные хуже", но по желанию игрока может быть и "остальные нормально".

Неактивен

0    0    #34
09.02.2019 16:48

Oreolek
Модератор (+403, -165)
Откуда: Кемерово
Зарегистрирован: 02.11.2009
Сообщений: 577
Вебсайт

Re: Новые методы голосования на КРИЛ

Подожди, давай сначала посмотрим на метод как есть. Потому что если учитывать 1 и 2 особым образом, мы теряем одну из целей применения этой штуки, когда часть людей используют шкалу 1-10, часть — 1-3, а часть — 7-10 и он всех должен выравнивать.

Неактивен

3    0    #35
10.02.2019 14:01

Olegus t.Gl.
Участник (+977, -231)
Откуда: Москва
Зарегистрирован: 01.03.2001
Сообщений: 2869
Вебсайт

Re: Новые методы голосования на КРИЛ

Olegus t.Gl. написал:

Я завтра отвечу, сейчас очень занят. Сделаю, чтобы можно было посмотреть ещё и пути, ведущие в тупик или в цикл, чтобы можно было разбирать все варианты.

Обновил модуль. Можно выбирать методику расчёта показателя сравнения (crem, по твоему перечню это 1, 2 и, наверное, 3), а также смотреть все пути, включая тупики и циклы (для сверки расчётов).

Вот: https://forum.ifiction.ru/kril2018schul … =1&c=2

Чтобы посмотреть пути теперь обязательно нужно выбрать пару игр. Для этого в нужно щёлкнуть на пересечении в таблице B или C.

Неактивен

2    4    #36
12.02.2019 13:28

qwerty
Участник (+225, -105)
Зарегистрирован: 21.12.2005
Сообщений: 196

Re: Новые методы голосования на КРИЛ

crem написал:

Тогда вопрос "остальные хуже" или "остальные не знаю" вообще стоять не будет. Голосовать обязательно, это "как остальные хуже", но по желанию игрока может быть и "остальные нормально".

"Голосовать обязательно за все" - это однозначно плохо. Потому что многие не играют во все игры. Что тоже плохо, может(и должно!) в какой-то степени "лечиться" растягиванием сроков голосования, но, в любом случае, если на конкурсе больше 10 игр, то требование обязательного голосования за все игры означает создание неудобств для честных голосующих и искажение результатов голосования.

"Остальные не знаю" - это по-факту, то, что сигнализирует голосующий. И странно было бы допридумывать какие-то оценки за него. Да, могут возникнуть несвязные графы. И это будет означать ровно то, что выставленные оценки не дают нам оснований предпочесть одни игры другим. И, в этом случае, проблему можно решать, проведя дополнительные этапы голосования, на которых игроки могут скорректировать и/или дополнить свои голоса. Разумеется, ранее проставленные голоса потеряться не должны. Но игрок может исправить собственные голоса, при желании.

Общий принцип в том, что к голосам нужно относиться как к волеизъявлению игроков, которое нужно учитывать. А не как к абстрактным цифрам, к которым нужно применять методы для получения абы какого результата. И насильно выжимать голоса тоже не нужно.

===

Вообще, подход crema ко многим вопросам меня откровенно удивляет. Что касается Олегуса, то, похоже, я ошибался, когда считал тонкости голосования мелочью, не достойной обсуждения в отдельной теме. А он оказался прав.

upd: в крайнем случае, если по итогам всех голосований, останутся несвязные графы, то придётся признать ситуацию такой, какая она есть. И это будет не недостатком метода Шульце, а наоборот: получится, что метод показал настоящую ситуацию с предпочтениями игроков.

Отредактировано qwerty (12.02.2019 13:35)

Неактивен

0    3    #37
21.02.2019 22:14

Пашка
Участник (+4, -11)
Зарегистрирован: 09.11.2018
Сообщений: 4

Re: Новые методы голосования на КРИЛ

Может использовать для подсчета точную , четкую, простую и понятную схему: лайк-дизлайк ?

Неактивен

Powered by PunBB
© copyright 2001–2019 iFiction.Ru