J'étais récemment dans une discussion avec une personne non codeur sur les possibilités des ordinateurs d'échecs. Je ne connais pas bien la théorie, mais je pense en savoir suffisamment.
J'ai fait valoir qu'il ne pouvait pas exister une machine de Turing déterministe qui gagnait toujours ou se bloquait aux échecs. Je pense que, même si vous recherchez tout l'espace de toutes les combinaisons de coups de player1 / 2, le coup unique que l'ordinateur décide à chaque étape est basé sur une heuristique. Étant basé sur une heuristique, il ne bat pas nécessairement TOUS les mouvements que l'adversaire pourrait faire.
Mon ami pensait, au contraire, qu'un ordinateur gagnerait ou égalerait toujours s'il ne faisait jamais un mouvement «d'erreur» (comment définissez-vous cela?). Cependant, étant un programmeur qui a pris CS, je sais que même vos bons choix - étant donné un adversaire avisé - peuvent vous forcer à faire des "erreurs" à la fin. Même si vous savez tout, votre prochain coup est avide de faire correspondre une heuristique.
La plupart des ordinateurs d'échecs essaient de faire correspondre une éventuelle fin de partie à la partie en cours, qui est essentiellement une trace de programmation dynamique. Encore une fois, la fin de partie en question est évitable.
Edit: Hmm ... on dirait que j'ai ébouriffé des plumes ici. C'est bon.
En y repensant, il semble qu'il n'y a pas de problème théorique à résoudre un jeu fini comme les échecs. Je dirais que les échecs sont un peu plus compliqués que les dames en ce sens qu'une victoire n'est pas nécessairement due à l'épuisement numérique des pièces, mais par un partenaire. Mon affirmation originale est probablement fausse, mais là encore je pense avoir souligné quelque chose qui n'est pas encore prouvé de manière satisfaisante (formellement).
Je suppose que mon expérience de pensée était que chaque fois qu'une branche dans l'arbre est prise, alors l'algorithme (ou les chemins mémorisés) doit trouver un chemin vers un compagnon (sans être accouplé) pour toute branche possible sur les mouvements de l'adversaire. Après la discussion, j'achèterai que compte tenu de plus de mémoire que nous ne pouvons en rêver, tous ces chemins pourraient être trouvés.
la source
Réponses:
"J'ai fait valoir qu'il ne pouvait pas exister une machine de Turing déterministe qui gagnait toujours ou se bloquait aux échecs."
Tu n'as pas tout à fait raison. Il peut y avoir une telle machine. Le problème est l'immensité de l'espace d'états qu'il faudrait rechercher. C'est fini, c'est juste VRAIMENT gros.
C'est pourquoi les échecs retombent sur l'heuristique - l'espace d'états est trop grand (mais fini). Énumérer même - et encore moins rechercher chaque mouvement parfait le long de chaque parcours de chaque jeu possible - serait un très, très gros problème de recherche.
Les ouvertures sont programmées pour vous amener à un milieu de partie qui vous donne une position «forte». Pas un résultat connu. Même les parties de fin - lorsqu'il y a moins de pièces - sont difficiles à énumérer pour déterminer le meilleur coup suivant. Techniquement, ils sont finis. Mais le nombre d'alternatives est énorme. Même un roi 2 tours + a quelque chose comme 22 coups suivants possibles. Et s'il faut 6 coups pour s'accoupler, vous regardez 12 855 002 631 049 216 coups.
Faites le calcul sur les mouvements d'ouverture. Bien qu'il n'y ait qu'environ 20 coups d'ouverture, il y a environ 30 secondes, donc au troisième coup, nous examinons 360000 états de jeu alternatifs.
Mais les parties d'échecs sont (techniquement) finies. Énorme, mais fini. Il y a des informations parfaites. Il y a des états de début et de fin définis, il n'y a pas de tirage au sort ou de jet de dés.
la source
Je ne sais presque rien de ce qui a été découvert sur les échecs. Mais en tant que mathématicien, voici mon raisonnement:
Premièrement, nous devons nous rappeler que Blanc doit commencer et peut-être que cela lui donne un avantage; peut-être que cela donne un avantage aux noirs.
Supposons maintenant qu'il n'y ait pas de stratégie parfaite pour Black qui lui permette de toujours gagner / bloquer. Cela implique que peu importe ce que fait les Noirs, il existe une stratégie que les Blancs peuvent suivre pour gagner. Attendez une minute - cela signifie qu'il y a une stratégie parfaite pour les Blancs!
Cela nous dit qu'au moins l' un des deux joueurs n'ont une stratégie parfaite qui permet à ce joueur toujours gagner ou dessiner.
Il n'y a donc que trois possibilités:
Mais lequel de ceux-ci est réellement correct, nous ne le saurons peut-être jamais.
La réponse à la question est oui : il doit y avoir un algorithme parfait pour les échecs, au moins pour l'un des deux joueurs.
la source
Il a été prouvé pour le jeu de dames qu'un programme peut toujours gagner ou égaler la partie. Autrement dit, il n'y a pas de choix de mouvements qu'un joueur peut faire qui forcent l'autre joueur à perdre.
Oui, vous pouvez résoudre les échecs, non, vous ne le ferez pas de si tôt.
la source
Ce n'est pas une question sur les ordinateurs mais uniquement sur le jeu d'échecs.
La question est: existe-t-il une stratégie de sécurité pour ne jamais perdre la partie? Si une telle stratégie existe, alors un ordinateur qui sait tout peut toujours l'utiliser et ce n'est plus une heuristique.
Par exemple, le jeu tic-tac-toe se joue normalement sur la base d'heuristiques. Mais, il existe une stratégie de sécurité intégrée. Quel que soit le mouvement de l'adversaire, vous trouvez toujours un moyen d'éviter de perdre la partie, si vous le faites dès le début.
Vous auriez donc besoin de prouver qu'une telle stratégie existe ou non pour les échecs également. C'est fondamentalement la même chose, juste l'espace des mouvements possibles est beaucoup plus grand.
la source
J'arrive à ce fil très tard, et que vous avez déjà réalisé certains des problèmes. Mais en tant qu'ancien maître et ancien programmeur d'échecs professionnel, j'ai pensé que je pourrais ajouter quelques faits et chiffres utiles. Il existe plusieurs façons de mesurer la complexité des échecs :
Ma conclusion: alors que les échecs sont théoriquement résolubles, nous n'aurons jamais l'argent, la motivation, la puissance de calcul ou le stockage pour le faire.
la source
Certains jeux ont, en fait, été résolus. Tic-Tac-Toe est très facile pour construire une IA qui gagnera ou égalera toujours. Récemment, Connect 4 a également été résolu (et s'est avéré injuste pour le deuxième joueur, car un jeu parfait le fera perdre).
Les échecs, cependant, n'ont pas été résolus, et je ne pense pas qu'il y ait de preuve qu'il s'agit d'un jeu équitable (c'est-à-dire si le jeu parfait aboutit à un match nul). Parlant strictement d'un point de vue théorique cependant, Chess a un nombre fini de configurations de pièces possibles. Par conséquent, l'espace de recherche est fini (quoique incroyablement grand). Par conséquent, une machine de Turing déterministe qui pourrait jouer parfaitement existe. La question de savoir si une personne pourra jamais être construite est cependant une autre question.
la source
Le bureau moyen de 1000 $ sera capable de résoudre les dames en seulement 5 secondes d'ici 2040 (calculs 5x10 ^ 20).
Même à cette vitesse, il faudrait encore à 100 de ces ordinateurs environ 6,34 x 10 ^ 19 ans pour résoudre les échecs. Pas encore faisable. Pas même proche.
Vers 2080, nos ordinateurs de bureau moyens auront environ 10 ^ 45 calculs par seconde. Un seul ordinateur aura la puissance de calcul pour résoudre les échecs en environ 27,7 heures. Cela sera certainement fait d'ici 2080 tant que la puissance de calcul continuera de croître comme elle l'a fait ces 30 dernières années.
D'ici 2090, il y aura suffisamment de puissance de calcul sur un bureau à 1000 $ pour résoudre les échecs en environ 1 seconde ... donc à cette date, ce sera complètement insignifiant.
Compte tenu de dames a été résolu en 2007, et la puissance de calcul pour le résoudre en 1 seconde d'environ accuseront un retard 33-35 ans, nous pouvons probablement à peu près estimer échecs seront résolus quelque part entre 2055 et 2057. Probablement plus tôt que lorsque plus de puissance de calcul sera disponible (ce qui sera le cas dans 45 ans), on pourra consacrer davantage à des projets comme celui-ci. Cependant, je dirais 2050 au plus tôt et 2060 au plus tard.
En 2060, il faudrait en moyenne à 100 ordinateurs de bureau 3,17 x 10 ^ 10 ans pour résoudre les échecs. Réalisez que j'utilise un ordinateur à 1000 $ comme référence, alors que des systèmes plus grands et des supercalculateurs seront probablement disponibles car leur rapport prix / performances s'améliore également. En outre, leur ordre de grandeur de la puissance de calcul augmente à un rythme plus rapide. Supposons qu'un supercalculateur puisse maintenant effectuer 2,33 x 10 ^ 15 calculs par seconde et un ordinateur à 1000 $ environ 2 x 10 ^ 9. Par comparaison, il y a 10 ans, la différence était de 10 ^ 5 au lieu de 10 ^ 6. D'ici 2060, la différence d'ordre de grandeur sera probablement de 10 ^ 12, et même cela pourrait augmenter plus rapidement que prévu.
Cela dépend en grande partie du fait que nous, en tant qu'êtres humains, avons la volonté de résoudre les échecs, mais la puissance de calcul le rendra réalisable à cette époque (tant que notre rythme continue).
Sur une autre note, le jeu de Tic-Tac-Toe, qui est beaucoup, beaucoup plus simple, a 2.653.002 calculs possibles (avec un tableau ouvert). La puissance de calcul pour résoudre Tic-Tac-Toe en environ 2,5 secondes (1 million de calculs par seconde) a été atteinte en 1990.
En reculant, en 1955, un ordinateur avait le pouvoir de résoudre Tic-Tac-Toe en environ 1 mois (1 calcul par seconde). Encore une fois, cela est basé sur ce que 1000 $ vous rapporteraient si vous pouviez le mettre dans un ordinateur (un bureau de 1000 $ n'existait évidemment pas en 1955), et cet ordinateur aurait été consacré à la résolution de Tic-Tac-Toe .... ce qui ce n'était tout simplement pas le cas en 1955. Le calcul était coûteux et n'aurait pas été utilisé à cette fin, même si je ne crois pas qu'il y ait une date où Tic-Tac-Toe a été jugé "résolu" par un ordinateur, mais je suis sûr qu'il est en retard sur la puissance de calcul réelle.
De plus, sachez que 1000 $ en 45 ans vont valoir environ 4 fois moins que maintenant, donc beaucoup plus d'argent peut être investi dans des projets comme celui-ci, tandis que la puissance de calcul continuera de devenir moins chère.
la source
Il est en fait possible pour les deux joueurs d'avoir des stratégies gagnantes dans des jeux infinis sans un bon ordre; cependant, les échecs sont bien ordonnés. En fait, en raison de la règle des 50 coups, il y a une limite supérieure au nombre de coups qu'une partie peut avoir, et donc il n'y a qu'une infinité de parties d'échecs possibles (qui peuvent être énumérées pour résoudre exactement ... théoriquement, au moins :)
la source
Votre fin de l'argument est étayée par la façon dont les programmes d'échecs modernes fonctionnent maintenant . Ils fonctionnent de cette façon parce qu'il est trop gourmand en ressources pour coder un programme d'échecs pour fonctionner de manière déterministe. Ils ne fonctionneront pas nécessairement toujours de cette façon. Il est possible que les échecs soient un jour résolus , et si cela se produit, il sera probablement résolu par un ordinateur.
la source
Pour mémoire, il existe des ordinateurs qui peuvent gagner ou égaler aux dames . Je ne sais pas si la même chose pourrait être faite pour les échecs. Le nombre de coups est beaucoup plus élevé. De plus, les choses changent parce que les pièces peuvent se déplacer dans n'importe quelle direction, pas seulement en avant et en arrière. Je pense, bien que je ne sois pas sûr, que les échecs sont déterministes, mais qu'il y a juste trop de coups possibles pour qu'un ordinateur puisse actuellement déterminer tous les coups dans un laps de temps raisonnable.
la source
Je pense que tu es mort. Des machines comme Deep Blue et Deep Thought sont programmées avec un certain nombre de jeux prédéfinis et des algorithmes intelligents pour analyser les arbres jusqu'aux extrémités de ces jeux. Il s’agit, bien entendu, d’une simplification excessive. Il y a toujours une chance de «battre» l'ordinateur au cours d'une partie. J'entends par là faire un mouvement qui force l'ordinateur à faire un mouvement qui n'est pas optimal (quoi que ce soit). Si l'ordinateur ne peut pas trouver le meilleur chemin avant la limite de temps pour le déplacement, il pourrait très bien faire une erreur en choisissant l'un des chemins les moins désirables.
Il existe une autre classe de programmes d'échecs qui utilise un véritable apprentissage automatique, ou une programmation génétique / des algorithmes évolutifs. Certains programmes ont évolué et utilisent des réseaux de neurones, et al, pour prendre des décisions. Dans ce type de cas, j'imagine que l'ordinateur pourrait faire des "erreurs", mais finir par remporter une victoire.
Il existe un livre fascinant sur ce type de médecin généraliste appelé Blondie24 que vous pourriez lire. Il s'agit de dames, mais cela pourrait s'appliquer aux échecs.
la source
D'après la théorie des jeux, sur laquelle porte cette question, la réponse est oui, les échecs peuvent être parfaitement joués. L'espace de jeu est connu / prévisible et oui si vous aviez les ordinateurs quantiques de votre petit-enfant, vous pourriez probablement éliminer toutes les heuristiques.
Vous pouvez écrire une machine tic-tac-toe parfaite de nos jours dans n'importe quel langage de script et elle fonctionnerait parfaitement en temps réel.
Othello est un autre jeu auquel les ordinateurs actuels peuvent facilement jouer parfaitement, mais la mémoire et le processeur de la machine auront besoin d'un peu d'aide
Les échecs sont théoriquement possibles mais pas pratiquement possibles (en 2008)
i-Go est délicat, son espace de possibilités dépasse le nombre d'atomes dans l'univers, il nous faudra donc peut-être un certain temps pour créer une machine i-Go parfaite.
la source
Les échecs sont un exemple de jeu matriciel qui, par définition, a un résultat optimal (pensez à l'équilibre de Nash). Si les joueurs 1 et 2 effectuent chacun des mouvements optimaux, un certain résultat sera TOUJOURS atteint (s'il s'agit d'une victoire-égalité-perte est encore inconnue).
la source
En tant que programmeur d'échecs des années 1970, j'ai définitivement une opinion à ce sujet. Ce que j'ai écrit il y a environ 10 ans est toujours fondamentalement vrai aujourd'hui:
"Travail inachevé et défis pour les programmeurs d'échecs"
À l'époque, je pensais que nous pourrions résoudre les échecs de manière conventionnelle, si cela est fait correctement.
Checkers a été résolu récemment (Yay, Université de l'Alberta, Canada !!!) mais cela a été effectivement fait Brute Force. Pour faire des échecs de manière conventionnelle, vous devrez être plus intelligent.
Sauf, bien sûr, l' informatique quantique devienne une réalité. Si c'est le cas, les échecs seront résolus aussi facilement que Tic-Tac-Toe.
Au début des années 1970, dans Scientific American, une courte parodie a retenu mon attention. C'était une annonce que le jeu d'échecs avait été résolu par un ordinateur d'échecs russe. Il avait déterminé qu'il y avait un coup parfait pour les blancs qui assurerait une victoire avec un jeu parfait des deux côtés, et ce coup est: 1. a4!
la source
Beaucoup de réponses ici font ressortir les points importants de la théorie des jeux:
Cependant ces observations passent à côté d'un point pratique important: il n'est pas nécessaire de résoudre parfaitement le jeu complet pour créer une machine imbattable .
Il est en fait fort probable que vous puissiez créer une machine d'échecs imbattable (c'est-à-dire qu'elle ne perdra jamais et forcera toujours une victoire ou un match nul) sans chercher ne serait-ce qu'une infime partie de l'espace d'états possible.
Les techniques suivantes par exemple réduisent toutes massivement l'espace de recherche requis:
Avec la bonne combinaison des techniques ci-dessus, je serais à l'aise d'affirmer qu'il est possible de créer une machine à jouer aux échecs "imbattable". Nous ne sommes probablement pas trop loin de la technologie actuelle.
Notez que c'est presque certainement plus difficile à prouver que cette machine ne peut pas être battue. Ce serait probablement quelque chose comme l'hypothèse de Reimann - nous serions presque sûrs qu'il joue parfaitement et aurait des résultats empiriques montrant qu'il n'a jamais perdu (y compris quelques milliards de tirages consécutifs contre lui-même), mais nous n'aurions pas la capacité de le faire. prouve le.
Note supplémentaire concernant la "perfection":
Je fais attention à ne pas décrire la machine comme "parfaite" au sens de la théorie des jeux car cela implique des conditions supplémentaires inhabituellement fortes, telles que:
La perfection (en particulier compte tenu des adversaires imparfaits et inconnus) est un problème beaucoup plus difficile que d'être simplement imbattable.
la source
Il y a là deux idées concurrentes. L'un est que vous recherchez tous les mouvements possibles, et l'autre est que vous décidez en fonction d'une heuristique. Une heuristique est un système permettant de faire une bonne estimation. Si vous recherchez tous les mouvements possibles, vous ne devinez plus.
la source
Oui il y a. C'est peut-être pour White de toujours gagner. C'est peut-être pour Black de toujours gagner. C'est peut-être pour les deux de toujours se nouer au moins. Nous ne savons pas lequel, et nous ne le saurons jamais, mais cela existe certainement.
Voir également
la source
J'ai trouvé cet article de John MacQuarrie qui fait référence au travail du "père de la théorie des jeux" Ernst Friedrich Ferdinand Zermelo . Il tire la conclusion suivante:
La logique me semble saine.
la source
C'est parfaitement résoluble.
Il y a 10 ^ 50 positions impaires. Chaque position, à mon avis, nécessite un minimum de 64 octets ronds à stocker (chaque carré a: 2 bits d'affiliation, 3 bits de pièce). Une fois qu'elles sont rassemblées, les positions qui sont des coéquipiers peuvent être identifiées et les positions peuvent être comparées pour former une relation, montrant quelles positions mènent à d'autres positions dans un grand arbre de résultats.
Ensuite, le programme n'a besoin que de trouver les racines d'échec et mat les plus basses d'un seul côté, si une telle chose existe. En tout cas, Chess a été assez simplement résolu à la fin du premier paragraphe.
la source
Je ne suis convaincu qu'à 99,9% par l'affirmation selon laquelle la taille de l'espace d'états rend impossible l'espoir d'une solution.
Bien sûr, 10 ^ 50 est un nombre incroyablement grand. Appelons la taille de l'espace d'états n.
Quelle est la limite du nombre de coups dans la partie la plus longue possible? Puisque tous les jeux se terminent par un nombre fini de coups, il existe une telle limite, appelez-la m.
À partir de l'état initial, ne pouvez-vous pas énumérer tous les n mouvements dans l'espace O (m)? Bien sûr, cela prend du temps O (n), mais les arguments de la taille de l'univers ne traitent pas directement de cela. L'espace O (m) pourrait même ne pas être beaucoup. Pour l'espace O (m), vous ne pouviez pas non plus suivre, au cours de cette traversée, si la poursuite d'un état le long du chemin que vous parcourez mène à EitherMayWin, EitherMayForceDraw, WhiteMayWin, WhiteMayWinOrForceDraw, BlackMayWin ou BlackMayWinOrForceDraw? (Il y a un treillis selon le tour de qui c'est, annotez chaque état de l'histoire de votre parcours avec le treillis se rencontrent.)
À moins que je ne manque quelque chose, c'est un algorithme d'espace O (n) temps / O (m) pour déterminer dans laquelle des catégories possibles les échecs appartiennent. Wikipedia cite une estimation de l'âge de l'univers à environ 10 ^ 60e fois Planck. Sans entrer dans un argument cosmologique, supposons qu'il reste à peu près autant de temps avant la chaleur / le froid / quelle que soit la mort de l'univers. Cela nous oblige à évaluer un mouvement toutes les 10 ^ 10 fois Planck, ou toutes les 10 ^ -34 secondes. C'est un temps incroyablement court (environ 16 ordres de grandeur plus courts que les temps les plus courts jamais observés). Disons avec optimisme qu'avec une implémentation super-duper-bonne fonctionnant au-dessus de la technologie présente-ou-prévue-non-quantique-P-est-un-sous-ensemble-de-NP, nous pourrions espérer évaluer (prenez un un pas en avant, catégoriser l'état résultant comme un état intermédiaire ou l'un des trois états finaux) à une fréquence de 100 MHz (une fois toutes les 10 ^ -8 secondes). Comme cet algorithme est très parallélisable, cela nous laisse besoin de 10 ^ 26 de ces ordinateurs, soit environ un pour chaque atome de mon corps, ainsi que de la capacité de collecter leurs résultats.
Je suppose qu'il y a toujours une lueur d'espoir pour une solution par force brute. Nous pourrions avoir de la chance et, en explorant un seul des mouvements d'ouverture possibles des blancs, en choisir un avec une répartition bien inférieure à la moyenne et un dans lequel les blancs gagnent ou gagnent ou tirent toujours.
Nous pourrions également espérer réduire quelque peu la définition des échecs et persuader tout le monde que c'est toujours moralement le même jeu. Avons-nous vraiment besoin d'exiger que les positions se répètent 3 fois avant un tirage au sort? Avons-nous vraiment besoin de faire en sorte que les fugitifs démontrent leur capacité à s'échapper pendant 50 coups? Est-ce que quelqu'un comprend même ce qu'est la règle en passant ? ;) Plus sérieusement, avons-nous vraiment besoin de forcer un joueur à bouger (par opposition à dessiner ou à perdre) quand son seul mouvement pour échapper à un échec ou une impasse est un en passant prise ? Pouvons-nous limiter le choix des pièces auxquelles un pion peut être promu si la promotion non-reine souhaitée ne conduit pas à un échec ou un échec immédiat?
Je ne sais pas non plus dans quelle mesure autoriser chaque ordinateur à accéder par hachage à une grande base de données d'états de fin de partie et leurs résultats éventuels (ce qui pourrait être relativement réalisable sur le matériel existant et avec les bases de données de fin de partie existantes) pourrait aider à élaguer la recherche plus tôt. De toute évidence, vous ne pouvez pas mémoriser la fonction entière sans stockage O (n), mais vous pouvez choisir un grand entier et mémoriser autant de fin de partie énumérant à l'envers à partir de chaque état final possible (ou même pas facilement prouvable impossible, je suppose).
la source
Je sais que c'est un peu une bosse, mais je dois mettre mes 5 cents ici. Il est possible pour un ordinateur, ou une personne d'ailleurs, de mettre fin à chaque partie d'échecs à laquelle il / elle participe, soit dans une victoire, soit dans une impasse.
Pour y parvenir, cependant, vous devez connaître précisément tous les mouvements et réactions possibles et ainsi de suite, tout au long de chaque résultat possible du jeu, et pour visualiser cela, ou pour faire un moyen facile d'analyser cette information, pensez à c'est une carte mentale qui se ramifie constamment.
Le nœud central serait le début du jeu. Chaque branche de chaque nœud symboliserait un mouvement, chacun différent de ses mouvements frères. Le présenter dans ce manoir prendrait beaucoup de ressources, surtout si vous le faisiez sur papier. Sur un ordinateur, cela prendrait peut-être des centaines de Terrabytes de données, car vous auriez de très nombreux mouvements répétitifs, à moins que vous ne fassiez revenir les branches.
Cependant, mémoriser de telles données serait invraisemblable, voire impossible. Faire en sorte qu'un ordinateur reconnaisse le mouvement le plus optimal pour retirer des (au plus) 8 mouvements instantanément possibles, serait possible, mais pas plausible ... car cet ordinateur aurait besoin de pouvoir traiter toutes les branches après ce mouvement, jusqu'à une conclusion, comptez toutes les conclusions qui aboutissent à une victoire ou à une impasse, puis agissez sur ce nombre de conclusions gagnantes contre des conclusions perdantes, et cela nécessiterait une RAM capable de traiter des données dans les Terrabytes, ou plus! Et avec la technologie d'aujourd'hui, un tel ordinateur exigerait plus que le solde bancaire des 5 hommes et / ou femmes les plus riches du monde!
Donc, après toute cette considération, cela pouvait être fait, mais personne ne pouvait le faire. Une telle tâche nécessiterait 30 des esprits les plus brillants vivants aujourd'hui, non seulement aux échecs, mais en science et en informatique, et une telle tâche ne pourrait être accomplie que sur un (mettons-le entièrement dans une perspective de base) ... extrêmement finalement hyper hyper ordinateur super-duper ... qui ne pourrait pas exister pendant au moins un siècle. Ça sera fait! Mais pas dans cette vie.
la source
Il y a deux erreurs dans votre expérience de pensée:
Si votre machine de Turing n'est pas "limitée" (en mémoire, vitesse, ...) vous n'avez pas besoin d'utiliser des heuristiques mais vous pouvez calculer évaluer les états finaux (victoire, perte, tirage au sort). Pour trouver le jeu parfait, il vous suffirait alors d'utiliser l'algorithme Minimax (voir http://en.wikipedia.org/wiki/Minimax ) pour calculer les mouvements optimaux pour chaque joueur, ce qui conduirait à un ou plusieurs jeux optimaux.
Il n'y a pas non plus de limite à la complexité de l'heuristique utilisée. Si vous pouvez calculer un jeu parfait, il existe également un moyen d'en calculer une heuristique parfaite. Si nécessaire, c'est juste une fonction qui cartographie les positions d'échecs de la manière "Si je suis dans cette situation S, mon meilleur coup est M".
Comme d'autres l'ont déjà souligné, cela se terminera par 3 résultats possibles: les blancs peuvent forcer une victoire, les noirs peuvent forcer une victoire, l'un d'eux peut forcer un match nul.
Le résultat d'un jeu de dames parfait a déjà été "calculé". Si l'humanité ne se détruit pas avant, il y aura aussi un calcul pour les échecs un jour, lorsque les ordinateurs auront suffisamment évolué pour avoir suffisamment de mémoire et de vitesse. Ou nous avons des ordinateurs quantiques ... Ou jusqu'à ce que quelqu'un (chercheur, experts en échecs, génie) trouve des algorithmes qui réduisent considérablement la complexité du jeu. Pour donner un exemple: quelle est la somme de tous les nombres entre 1 et 1000? Vous pouvez soit calculer 1 + 2 + 3 + 4 + 5 ... + 999 + 1000, ou simplement calculer: N * (N + 1) / 2 avec N = 1000; result = 500500. Maintenant, imaginez que vous ne connaissez pas cette formule, vous ne connaissez pas l'induction mathématique, vous ne savez même pas comment multiplier ou ajouter des nombres, ... Alors, il est possible qu'il y ait un algorithme actuellement inconnu qui réduit finalement la complexité de ce jeu et il faudrait juste 5 minutes pour calculer le meilleur coup avec un ordinateur actuel. Peut-être serait-il même possible de l'estimer comme un humain avec un stylo et du papier, ou même dans votre esprit, avec un peu plus de temps.
Donc, la réponse rapide est: si l'humanité survit assez longtemps, ce n'est qu'une question de temps!
la source
Cela pourrait être résolu, mais quelque chose me dérange: même si l'arbre entier pouvait être traversé, il n'y a toujours aucun moyen de prédire le prochain coup de l'adversaire. Nous devons toujours baser notre prochain coup sur l'état de l'adversaire et rendre disponible le «meilleur» coup. Ensuite, en fonction de l'état suivant, nous recommençons. Ainsi, notre mouvement optimal pourrait être optimal si l'adversaire se déplace d'une certaine manière. Pour certains mouvements de l'adversaire, notre dernier coup aurait pu être sous-optimal.
Je ne vois tout simplement pas comment il pourrait y avoir un mouvement «parfait» à chaque étape.
Pour que cela soit le cas, il doit y avoir pour chaque état [dans le jeu en cours] un chemin dans l'arbre qui mène à la victoire, quel que soit le prochain coup de l'adversaire (comme dans tic-tac-toe), et j'ai un dur le temps de le comprendre.
la source
Mathématiquement, les échecs ont été résolus par l' algorithme Minimax , qui remonte aux années 1920 (trouvé par Borel ou von Neumann). Ainsi, une machine à turing peut effectivement jouer aux échecs parfaits.
Cependant, la complexité informatique des échecs le rend pratiquement impossible. Les moteurs actuels utilisent plusieurs améliorations et heuristiques. Les meilleurs moteurs d'aujourd'hui ont surpassé les meilleurs humains en termes de force de jeu, mais en raison des heuristiques qu'ils utilisent, ils pourraient ne pas jouer parfaitement lorsqu'ils sont donnés un temps infini (par exemple, les collisions de hachage pourraient conduire à des résultats incorrects).
Les plus proches que nous ayons actuellement en termes de jeu parfait sont les tables de fin de partie . La technique typique pour les générer est appelée analyse rétrograde . Actuellement, toutes les positions avec jusqu'à six pièces ont été résolues.
la source
Oui , en mathématiques, les échecs sont classés comme un jeu déterminé, cela signifie qu'il a un algorithme parfait pour chaque premier joueur, cela s'est avéré être vrai même pour un échiquier infini, donc un jour, une IA quantique trouvera probablement la stratégie parfaite, et le jeu est parti
Plus d'informations à ce sujet dans cette vidéo: https://www.youtube.com/watch?v=PN-I6u-AxMg
Il y a aussi des échecs quantiques, où il n'y a pas de preuve mathématique qu'il s'agit d'un jeu déterminé http://store.steampowered.com/app/453870/Quantum_Chess/
et voilà une vidéo détaillée sur les échecs quantiques https://chess24.com/en/read/news/quantum-chess
la source
Bien sûr, il n'y a que 10 à la puissance de cinquante combinaisons de pièces possibles sur le plateau. Ayant cela à l'esprit, pour jouer à chaque compibation, vous auriez besoin de faire moins de 10 à la puissance de cinquante coups (y compris les répétitions, multipliez ce nombre par 3). Donc, il y a moins de dix à la puissance de cent coups aux échecs. Choisissez simplement ceux qui mènent à l'échec et vous êtes prêt à partir
la source
Les maths 64 bits (= échiquier) et les opérateurs binaires (= prochains coups possibles) sont tout ce dont vous avez besoin. Si simplement. Brute Force trouvera généralement le meilleur moyen. Bien sûr, il n'y a pas d'algorithme universel pour toutes les positions. Dans la vraie vie, le calcul est également limité dans le temps, le timeout l'arrêtera. Un bon programme d'échecs signifie un code lourd (pions passés, doublés, etc.). Le petit code ne peut pas être très fort. Les bases de données d'ouverture et de fin de partie ne font que gagner du temps de traitement, une sorte de données prétraitées. L'appareil, je veux dire - le système d'exploitation, les possibilités de thread, l'environnement, le matériel définissent les exigences. Le langage de programmation est important. Quoi qu'il en soit, le processus de développement est intéressant.
la source