Mi interessa fare un'implementazione del 14-15 puzzle: Come posso assicurarmi che quando rimescolo il mio puzzle finisca comunque con una permutazione uniforme?
Sto creando un array con i valori 0 - 15 in ordine crescente:
S = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
Ora, quello che voglio fare è mescolarli per creare una nuova istanza del puzzle. Tuttavia, so che se creo una scacchiera con una "permutazione dispari" piuttosto che irrisolvibile.
Wikipedia dice che ho bisogno di creare il puzzle con una permutazione pari. Credo che questo significhi che devo semplicemente assicurarmi di fare un numero pari di swap?
Come modificherei Fisher-Yates in modo da assicurarmi di ottenere una permutazione uniforme alla fine? Se faccio uno swap per ogni elemento dell'array, sarebbero 16 swaps che credo sarebbe una permutazione pari. Tuttavia, devo preoccuparmi di scambiare se stesso? C'è un altro modo per assicurarmi di avere un puzzle valido?
Posso usare fishery yates ma, come ho detto, ho semplicemente bisogno di assicurarmi di avere una permutazione uniforme. – Mithrax