Dalam OrderedPartition
masalah, 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 Partition
masalah 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 ?
sumber