在以下问题中是否可以找到多项式时间内是否存在序列?
我一直在思考以下问题,但尚未找到多项式解决方案。只有蛮力。我一直在尝试将NP完全问题简化为没有成功的问题。 这是问题所在: 您有一个正整数对的排序集。 {(A1,B1),(A2,B2),…,(An,Bn)}{(A1,B1),(A2,B2),…,(An,Bn)}\{(A_1, B_1), (A_2, B_2), \ldots, (A_n, B_n)\} (Ai,Bi)<(Aj,Bj)⇔Ai<Aj∨(Ai=Aj∧Bi<Bj)(Ai,Bi)<(Aj,Bj)⇔Ai<Aj∨(Ai=Aj∧Bi<Bj)(A_i, B_i) < (A_j, B_j) \Leftrightarrow A_i < A_j \lor (A_i = A_j \land B_i < B_j) (Ai,Bi)=(Aj,Bj)⇔Ai=Aj∧Bi=Bj(Ai,Bi)=(Aj,Bj)⇔Ai=Aj∧Bi=Bj(A_i, B_i) = (A_j, B_j) \Leftrightarrow A_i = A_j \land B_i = B_j 以下操作可以应用于一对:Swap(pair)。它交换该对中的元素,因此将变为(10,50)(10,50)(10, 50)(50,10)(50,10)(50, 10) 交换集合中的一对时,该集合将自动再次排序(交换后的对不适当,它将移入集合中的位置)。 问题在于查看是否有从某些对开始的序列交换整个集合,并具有以下条件: 一对交换后,下一个要交换的对必须是集合中的后继对或前导对。 找到这个问题的多项式时间解,或者将NP-完全问题简化为一个很好的解决方案。 注意: 这已经是一个决策问题。我不想知道序列是什么:仅当序列存在时。 交换对后如何对集合进行排序的示例 …