Pour les puzzles aléatoires, aucun à ma connaissance. En dehors de la recherche de paires de bords de pièces qui correspondent, la plus grande difficulté serait que l'application devine en permanence ce qu'est éventuellement l'image finale à partir d'une base de données de toutes les images possibles, et le seul système que je connais pour être capable de faire quelque chose comme ça est la recherche inversée d'images de Google. Il faudrait qu'il ait accès à ces modèles de données formés par l'apprentissage profond.
Il peut réduire les possibilités dans la base de données de Google en faisant la moyenne de la couleur, du niveau de détail, de la luminosité de toutes les pièces mélangées, etc. et en identifiant éventuellement des objets familiers comme des visages, des fleurs, des bâtiments, etc.
Mais s'il s'agit d'une application qui serait juste alimentée par la solution depuis le début (image résolue) et que vous voulez juste qu'elle trace les étapes nécessaires pour arriver à la solution à partir d'un enchevêtrement donné de pièces, c'est beaucoup plus facile à programmer.
Non, désolé, je n'en connais toujours pas de mémoire.
Mise à jour : 2018 0406
J'y ai repensé et il existe une autre solution plus simple (coûteuse en calcul, mais qui ne nécessite pas de jeu de données d'apprentissage automatique).
La machine prendra en compte trois variables de chaque pièce : une valeur de couleur moyenne, une sorte de valeur pour identifier les lignes ou les motifs possibles sur une pièce, comme la variance de la couleur ou la valeur de Fourier, et enfin la forme des bords.
-Grouper ensemble les couleurs globalement similaires.
-Réfinir le regroupement en regroupant les motifs similaires.
-Avec la forme des bords, déterminer l'orientation ou l'endroit si possible (beaucoup de pièces de puzzle ont des côtés avec quelques bords plats qui vous donnent un indice sur l'orientation).
... Et ensuite faire en sorte que le système essaie de faire correspondre les pièces à partir de ces groupes. Et enfin un algorithme de mop-up pour prendre toutes les pièces non appariées et commencer à les apparier avec toutes les autres pièces de l'ensemble. Je ne sais pas comment, je ne suis pas encore programmeur et j'apprends encore.
.