Dalam OrderedPartitionmasalah, input adalah dua urutan bilangan bulat positif, dan . Outputnya adalah partisi dari indeks menjadi dua himpunan bagian terpisah, dan , sehingga:
- Untuk semua dan untuk semua : .
Dengan kata lain, kita harus urutan pertama indeks pada baris sehingga meningkat lemah, dan kemudian memotong jalur sehingga jumlah dari di kedua sisi adalah sama.
Jika semua sama, maka kondisi 2 tidak relevan dan kami memiliki contoh masalah NP-hard Partition. Di sisi lain, jika semua berbeda, maka kondisi 2 memaksakan urutan tunggal pada indeks, sehingga hanya ada opsi untuk diperiksa, dan masalahnya menjadi polinomial. Apa yang terjadi di antara kasus-kasus ini?
Untuk meresmikan pertanyaan, tentukan oleh OrderedPartition[n,d], untuk , masalah terbatas pada contoh ukuran , di mana bagian terbesar dari s identik adalah dari ukuran . Jadi kasus yang mudah, ketika semua -s berbeda, adalah OrderedPartition[n,1], dan hard case, ketika semua -s identik, adalah OrderedPartition[n,n].
Secara umum, Untuk setiap dan , dalam OrderedPartition[n,d]contoh apa pun , jumlah partisi yang memungkinkan dengan kondisi 2 adalah . Oleh karena itu, jika , maka OrderedPartition[n,d]masih polinomial dalam .
Di sisi lain, untuk setiap dan , kita dapat mengurangi dari Partitionmasalah bilangan bulat untuk OrderedPartition[n,d]. Biarkan menjadi contoh dari Partition. Definisikan instance OrderedPartition[n,d]oleh:
- Untuk setiap , biarkan dan .
- Untuk setiap , biarkan dan
[jika adalah aneh, membuat sehingga jumlahnya akan lebih] .
Oleh karena itu, jika , untuk bilangan bulat , maka OrderedPartition[n,d]NP-hard.
PERTANYAAN: Apa yang terjadi dalam kasus-kasus menengah, di mana adalah super-logaritmik tetapi sub-polinomial dalam ?