假设我有两个集合:(n_1,n_2,...)和(m_1,m_2,...)和一个匹配函数match(n, m)返回一个从0到1的值。我想要找到两组之间的映射关系,以满足以下约束条件:最大加权二分配匹配约束:每个图的排序被保留
- 每个元素在对立集合中必须至多有一个匹配元素。
- 无与伦比的元素将与虚设的元素按成本进行配对1
- 当应用于所有元素的匹配函数的总和是最大
- 我无法正式表达这一点,但如果你一字排开各组并行彼此之间的原始顺序,并在匹配的元素之间划出一条线,这些线都不会交叉。 E.x. [n_1 < - > m_2,n_2 < - > m_3]是一个有效的映射,但[n_1 < - > m_2,n_2 < - > m_1]不是。
(我认为前三个标准赋权的匹配约束,但我指定他们的情况下,我误解了赋权的匹配)
这是相对简单的,在指数时间穷举搜索做(关于集合的大小),但我希望有一个多项式时间(理想情况下是O((| n | * | m |)^ 3)或更好)解。
我已经在“分配问题”/“加权二分配匹配”上搜索了相当数量的数据,并且看到了具有不同约束条件的变体,但没有找到匹配的数据或者我可以减少到一个排序约束。你有什么想法可以解决这个问题吗?或者可能是一个粗略的证明,表明它在多项式时间内是不可解的(对于我的目的而言,减少NP-complete也是可行的)?
抱歉,排序不是简化。你有序列作为输入或设置?因为没有命令集 – UmNyobe 2012-02-28 13:11:03
对于术语的抱歉,我认为考虑输入作为序列而不是集合是合适的。 – Gibybo 2012-02-28 13:23:49