No OrderedPartition
problema, 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 Partition
problema 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 ?