No OrderedPartitionproblema, a entrada são duas seqüências de inteiros positivos, e . A saída é uma partição dos índices em dois subconjuntos separados, e , de modo que:
- Para tudo e para todos : .
Em outras palavras, que tem a primeira ordem sobre os índices de uma linha de modo a que o são fracamente crescente, e depois cortar a linha de modo a que a soma de a em ambos os lados é o mesmo.
Se todos os forem iguais, a condição 2 é irrelevante e temos uma instância do problema NP-hard Partition. Por outro lado, se todos os forem diferentes, a condição 2 impõe uma única ordem nos índices; portanto, existem apenas opções para verificar e o problema se torna polinomial. O que acontece entre esses casos?
Para formalizar a questão, defina por OrderedPartition[n,d], para , o problema restrito a instâncias de tamanho , nas quais o maior subconjunto de idênticos s é do tamanho . Portanto, o caso fácil, quando todos os s são diferentes, é OrderedPartition[n,1], e o caso difícil, quando todos os s são idênticos, é OrderedPartition[n,n].
De maneira mais geral, para qualquer e , em qualquer OrderedPartition[n,d]caso, o número de partições possíveis que respeitam a condição 2 é . Portanto, se , então OrderedPartition[n,d]ainda é polinomial em .
Por outro lado, para qualquer e , podemos reduzir de um Partitionproblema com inteiros para OrderedPartition[n,d]. Seja uma instância de Partition. Defina uma instância de OrderedPartition[n,d]:
- Para cada , deixe e .
- Para cada , deixe e
[if é estranho, fazer , tais que a soma será ainda] .
Por isso, se , para qualquer número inteiro , então OrderedPartition[n,d]é NP-duro.
PERGUNTA: O que acontece nos casos intermediários, nos quais é superlogarítmico, mas sub-polinomial em ?