Выбор лучшего элемента из списка доминирования - PullRequest
0 голосов
/ 19 апреля 2020

, так что я работаю над системой аргументации , и моя цель состоит в том, чтобы выбрать лучший специалист, который сделает мою систему менее спорной. Я реализовал алгоритмы и получил это как ответ:

EX1  dominates  EX5
EX2  dominates  EX1
EX2  dominates  EX5
EX4  dominates  EX1
EX4  dominates  EX5

, что я хочу сейчас сделать, - это заказать этих экспертов (от EX1 до EX5), используя доминирование результаты, которые я получил, так что я могу выбрать лучший. Я нашел способ сделать это: вычислить минимальный FAS, затем использовать порядок топологии c, но я хочу знать, есть ли алгоритм, который дает мне точный результат (в этом примере лучшие эксперты - EX4 и EX2).

Заранее спасибо.

1 Ответ

1 голос
/ 19 апреля 2020

Как и @Suparshva, предложенный в комментариях, я создал график, в котором аргументы являются узлами, а ребра представляют доминирование, и я получаю узлы с наименьшей степенью.

следующий алгоритм написан на python, а график создается с использованием библиотеки networkx.

d=nx.DiGraph()
d.add_nodes_from([expert.name for expert in experts])

for exp in experts:
    for expert in experts:
            if exp.persist_dominate(expert) and exp != expert:
                d.add_edge(exp.name,expert.name)

print([elem[0] for elem in d.in_degree if min(d.in_degree, key=lambda x: x[1])[1] == elem[1]])  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...