Какова область исследования этой проблемы алгоритма? - PullRequest
0 голосов
/ 16 июня 2019

В моем приложении люди могут ставить оценку другим людям из десяти баллов.В полночь каждый день я хотел бы реализовать алгоритм, который вычисляет наилучшее «соответствие» для каждого человека.В конце дня у меня будет, например,

(ID_person_who_gave_mark, ID_person_who_received_mark, mark)

(1, 2, 7.5)  // 1 gave to 2 a 7.5/10 
(1, 3, 9) // etc..
(1, 4, 6)
(2, 1, 5.5) 
(2, 3, 4)
(2, 4, 8)
(3, 1, 3)
(3, 2, 10) 
(3, 4, 9)
(4, 1, 2)
// no (4, 2, xx) because 4 didn't gave any mark to 2 
(4, 3, 6.5)

В конце алгоритма я хотел бы, чтобы у каждого человека был лучший матч, это лучший компромисс, чтобы «сделать всех счастливыми».».

В моем примере я бы сказал, что человек 1 дал 9/10 к 3, но 3 дал 3/10 к 1, поэтому они точно не могут сравниться, 1 дал 7,5 / 10 к 2 и 2дал 5,5 / 10 к 1, так почему бы и нет, и, наконец, 1 дал 6/10 к 4, но 4 дал 2/10 к 1, чтобы они не могли соответствовать (меньше 5/10 = они не могут соответствовать),Таким образом, для человека 1 единственное совпадение будет с 2, но я должен проверить, хорошо ли для 2 иметь 1 в качестве совпадения.

2 дает 4/10 к 3, поэтому (2,3) больше (меньше 5/10), но 2 дает 8/10 к 4, поэтому (2,4) будет гораздо более крутодля 2 чем (2,1).Давайте посмотрим, что 4: 4 не дал никакой оценки 2, поэтому они не могут совпадать: одна возможность оставлена ​​для 2: мы делаем совпадение (2-1)

давайте посмотрим на 3: с 1все кончено (3/10), с 2 было бы очень круто для 3 (10/10), но 2 дали 3 4/10, так что все кончено.3 дал крутые 9/10 к 4, так что это тоже было бы неплохо.Давайте проверим, что 4: 4 дали 2/10 к 1, так что все закончилось с 1 (меньше 5/10), и дали довольно хорошие 6,5 к 3. Таким образом, лучший матч наконец-то между 4 и 3.

наши последние совпадения в этом примере: (1-2) и (3-4)

Даже когда я делаю это интуитивно, как я только что сделал, сложно найти подходящее поведение для вычисления всей этой информации.

Можете ли вы помочь мне «математизировать» такую ​​цель, чтобы иметь алгоритм, который мог бы сделать такой расчет, скажем, для 50000 человек?Или, по крайней мере, в какой области я могу получить больше информации для эффективного решения этой проблемы?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...