我一直在思考以下问题,但尚未找到多项式解决方案。只有蛮力。我一直在尝试将NP完全问题简化为没有成功的问题。
这是问题所在:
您有一个正整数对的排序集。
以下操作可以应用于一对:Swap(pair)
。它交换该对中的元素,因此将变为
交换集合中的一对时,该集合将自动再次排序(交换后的对不适当,它将移入集合中的位置)。
问题在于查看是否有从某些对开始的序列交换整个集合,并具有以下条件:
一对交换后,下一个要交换的对必须是集合中的后继对或前导对。
找到这个问题的多项式时间解,或者将NP-完全问题简化为一个很好的解决方案。
注意:
这已经是一个决策问题。我不想知道序列是什么:仅当序列存在时。
交换对后如何对集合进行排序的示例
如果我交换第一对,它将变成:,然后对集合进行排序(将已排序的对放置在新位置),我们将:
然后,我必须交换(前任)对或(后继)对,并重复该过程,直到所有对都被交换为止(如果可能)。(7 ,8 )
重要:
您不能交换已交换的对。
如果有一系列“交换”操作,则所有对必须重命名一次,并且只能重命名一次。
无法交换所有货币对的示例
(1 ,4 )(3 ,2 )(5 ,5 )