@Mizhgunich
PM

Какой алгоритм применить, что бы передавать что одно лучше другого и в итоге получить таблицу?

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

Нам нужно себъективные мнения привести к объективному среднему числу.
Есть куча объектов которые сравнивают между собой, есть куча голосующих, которые выбирают что из двух нравится больше.. и из этого нужно собрать таблицу.
Просто кол-во проголосовавших не подходит, т.к. за А может быть только 1 голос но он говорит о том, что А лучше всех остальных.

Перепробовал уже много всего разного.
Никак не могу найти оптимальный подход.
  • Вопрос задан
  • 403 просмотра
Решения вопроса 1
@Sumor
Теорема о невозможности доказывает, что полностью справедливую систему построить невозможно. Нужно, учитывая предметную область, рассмотреть различные варианты обобщения коллективных оценок и выбрать наиболее удобную или подходящую.
Неплохая статья на хабре с некоторыми способами ранжирования.
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
GavriKos
@GavriKos
Вам нужно вот это "одно лучше" выразить в числовом эквивалиенте, причем абсолютном, а не относительно других.

Например, не "машина А быстрее машины Б", а "у машины А максимальная скорость 100, а у машины Б максимальная скорость - 300".

Если критериев сравнения несколько - давать средневзвешенную оценку.
Например, если у машины параметры скорость и маневренность, а вам нужно дать общую оценку, то нужно четко определить, какой вклад в общую оценку делает каждый параметр (математически, формулой. Например - веса), выносить на основе формулы общую оценку и уже сортировать по ней.
Ответ написан
"Нужно передавать в алгоритм, что одно лучше другого."
А не передавать ли какой-то чёткий параметр? Или такого нет (ну или задача как раз -выделить его)?

"Вся загвоздка в том, что один может передать, что А лучше Б, а другой наоборот"
Разделить оценки по категориям (читай "лучше в связи с тем-то") или же (если есть явный перевес) - отбросить одну из сторон, нет?

з.ы. кстати, если явно перевеса нет - возможно, удастся разбить юзеров на N кластеров по их голосованиям, обучить N оценивающих сеток и после - классифицировать юзера и давать ему вывод соответсвующей сети. Но тут я уже не подскажу какой-либо конкретики.
Ответ написан
vladgba
@vladgba
(。◕‿‿◕。)
если это запрос в MySQL, то можно добавить в запрос "ORDER BY `rate`"
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы