Digamos que dois pares e P 2 = ( uma 2 , b 2 ) são compatíveis não-permuta , se eles podem ser colocados em qualquer ordem na lista classificada, sem trocar qualquer um. Isso é verdade se ( a 1 ≤ a 2 ∧ b 1 ≥ b 2 ) ou ( a 2 ≤ a 1 ∧ b 2 ≥ bp1=(a1,b1)p2=(a2,b2)(a1≤a2∧b1≥b2) . Note-se que p 1 e p 2 sejam compatíveis se e não de troca somente se eles sãode dois permuta compatível(uma vez que a ordem parcial satisfaz definidos p 1 ⪯ p 2 ≡ p * 2 ⪯ p * 1 , em que * indica a operação de permuta de) . Finalmente, p 1 e p 2 sãocompatíveis com uma trocase puderem ser colocados em qualquer ordem na lista classificada com exatamente uma delas trocada. Isso é verdade se p ∗ 1 e(a2≤a1∧b2≥b1)p1p2p1⪯p2≡p∗2⪯p∗1∗p1p2p∗1 são compatíveis sem troca. Nos demais casos, p 1 e p 2 são simplesmente incompatíveis: eles não podem satisfazer a condição do pedido, independentemente do seu estado de troca.p2p1p2
O problema agora pode ser resolvido da seguinte maneira. Teste todos os pares de pares. Se qualquer par é incompatível, não há solução e podemos lançar uma exceção. Caso contrário, considere o gráfico com nós correspondentes aos pares originais e arestas entre os pares de nós que não são compatíveis com troca única. Cada par de nós deve ter o mesmo estado de troca em qualquer lista classificada corretamente e, portanto, todos os nós em cada componente conectado do gráfico devem ter o mesmo estado de troca. Precisamos determinar se esses estados de troca em todo o componente podem ser atribuídos de forma consistente. Teste todos os pares de nós em cada componente conectado. Se algum par não é compatível com troca não, não há solução e podemos lançar uma exceção. Agora teste todos os pares de componentes conectados (ou seja, para os componentes C1e , testar todos os pares de nós p 1 ∈ C 1 e p 2 ∈ C 2 ). Sabemos que cada par de componentes é compatível com pelo menos um swap, mas alguns pares também podem ser compatíveis sem troca (porque cada par de nós não conectados por uma borda é compatível com pelo menos uma troca e também pode ser sem troca). compatível com troca). Considere um gráfico reduzido com nós correspondentes aos componentes conectados e uma aresta entre dois nós se os componentes correspondentes não forem compatíveis com troca não. Existe uma solução para o problema original se, e somente se, este gráfico for de 2 cores. Se não houver 2C2p1∈C1p2∈C222-coloring, não há solução, e podemos lançar uma exceção. Se houver um, troque todos os nós em todos os componentes de uma única cor. Agora temos a garantia de que quaisquer dois nós são compatíveis sem troca e, portanto, podemos classificar corretamente a lista de pares usando a ordem parcial definida.
Cada etapa do algoritmo e, portanto, todo o algoritmo, pode ser executada no tempo .O(N2)
ATUALIZAÇÃO: Uma construção muito mais elegante é a seguinte. Se um par de pares não for compatível sem troca, conecte os nós correspondentes com uma aresta (forçando-os a ter cores diferentes em qualquer cor 2). Se um par de pares não for compatível com troca única, conecte os nós correspondentes com uma cadeia de comprimento 2 (forçando-os a ter a mesma cor em qualquer cor 2). Existe uma solução se e somente se o gráfico resultante for de duas cores. Para construir uma solução a partir de uma coloração azul-vermelha do gráfico, troque apenas os pares cujos nós correspondentes são azuis e classifique a lista resultante.