Per i puzzle casuali, nessuno che io conosca. A parte la ricerca di coppie di bordi dei pezzi che corrispondono, la difficoltà maggiore sarebbe avere l'applicazione che indovina continuamente quale sia l'immagine finale da un database di tutte le immagini possibili, e l'unico sistema che conosco in grado di fare qualcosa del genere è la ricerca inversa delle immagini di Google. Dovrebbe avere accesso a quei modelli di dati formati dall'apprendimento profondo.
Può restringere le possibilità nel database di Google facendo la media di tutti i pezzi mescolati di colore, livello di dettaglio, luminosità ecc. e identificando eventualmente oggetti familiari come volti, fiori, edifici, ecc.
Ma se si tratta di un'app che verrebbe alimentata solo con la soluzione dall'inizio (immagine risolta) e si vuole solo che tracci i passi necessari per arrivare alla soluzione da una data accozzaglia di pezzi, questo è molto più facile da programmare.
No, mi dispiace, non ne conosco ancora nessuno su due piedi.
Modifica: 2018 0406
Ci ho ripensato e c'è un'altra soluzione più semplice (computazionalmente costosa, ma non richiede un set di dati di apprendimento automatico).
La macchina prenderà in considerazione tre variabili da ogni pezzo: un valore medio del colore, un qualche valore di tipo per identificare possibili linee o modelli su un pezzo, come la varianza di colore o il valore di Fourier, e infine la forma del bordo.
-Gruppo di colori complessivamente simili insieme.
-Raffina il raggruppamento raggruppando modelli simili insieme.
-Con la forma del bordo, determina l'orientamento o il lato destro se possibile (molti pezzi di puzzle hanno lati con alcuni bordi piatti che indicano l'orientamento).
... E poi il sistema cerca di abbinare i pezzi da questi gruppi. E infine un algoritmo di mop-up per prendere tutti i pezzi non abbinati e iniziare ad abbinarli con ogni altro pezzo del set. Non so come, non sono ancora un programmatore e sto ancora imparando.