Pertimbangkan masalah berikut:
Biarkan roda didefinisikan sebagai daftar bilangan bulat diindeks secara melingkar . Sebagai contoh…
{3, 4, 9, -1, 6}
… Adalah roda 5 dengan 3 di posisi 0, 4 di posisi 1, dan seterusnya. Roda mendukung operasi rotasi, sehingga rotasi satu langkah akan mengubah roda di atas menjadi ...
{6, 3, 4, 9, -1}
… Sekarang dengan 6 di posisi 0, 3 di posisi 1, dan seterusnya. Biarkan menjadi seperangkat - -roda yang dipesan . Diberikan beberapa dan beberapa bilangan bulat , temukan serangkaian rotasi sedemikian rupa sehingga…
Dengan kata lain, jika Anda meletakkan roda sebagai matriks, jumlah setiap kolom adalah . Asumsikan bahwa dibangun sehingga solusinya unik hingga rotasi setiap elemen (yaitu, ada solusi unik yang terdiri dari mengambil satu solusi, kemudian memutar setiap roda di dengan jumlah langkah yang sama).
Solusi sepele untuk masalah ini melibatkan hanya memeriksa setiap kemungkinan rotasi. Berikut ini beberapa pseudocode untuk itu:
function solve(wheels, index)
if wheels are solved:
return true
if index >= wheels.num_wheels:
return false
for each position 1..k:
if solve(index + 1) is true:
return true
else:
rotate wheels[index] by 1
solve(wheels, 0)
Ini adalah solusi yang sangat lambat (seperti ). Saya bertanya-tanya apakah mungkin untuk melakukan masalah ini lebih cepat, dan juga apakah ada nama untuk itu.