【问题标题】:Picking the best element out of a list of dominance从优势列表中挑选出最好的元素
【发布时间】:2020-08-01 10:10:04
【问题描述】:

所以我正在研究一个论证系统,我的目标是挑选最好的专家,让我的系统的争议更少。我已经实现了算法,并得到了这个答案:

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

我现在想做的是用我得到的dominance结果来排序这些专家(从EX1到EX5),这样我就可以挑选出最好的了。我找到了一种方法,即计算最小 FAS,然后使用拓扑顺序,但我想知道是否有一种算法可以给我准确的结果(在这个例子中,最好的专家是 EX4 和 EX2) .

提前致谢。

【问题讨论】:

  • 这是否满足订单关系?那么关系是自反的、反对称的和传递的吗?
  • @WillemVanOnsem 是的
  • 需要更多示例。我们如何将其建模为有向图,其中成员作为顶点,优势作为有向边,具有最少传入度的成员争议最小,因为较少人支配它们,或者如果它是可传递的,则可能是基于数量的某种递归评分到某个深度他们影响的成员。
  • 我认为你应该研究一下图网络中的一些排名算法,比如页面排名。
  • @Suparshva 看起来是个好主意,我会尝试并在不同的示例上进行测试。谢谢。

标签: python algorithm agent


【解决方案1】:

就像 cmets 中建议的 @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]])  

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多