Paradoxes sur la compression des données

Paradoxes sur la compression des donnĂ©es La tĂąche de compression des donnĂ©es, dans sa forme la plus simple, peut se rĂ©fĂ©rer aux nombres et Ă  leurs dĂ©signations. Les nombres peuvent ĂȘtre dĂ©signĂ©s par des numĂ©raux («onze» pour le nombre 11), par des expressions mathĂ©matiques («deux Ă  la vingtiĂšme» pour 1048576), par des expressions textuelles («cinq nines» pour 99999), par des noms propres («le nombre de la bĂȘte» pour 666, «l'annĂ©e de la mort de Turing» pour 1954), ou par des combinaisons arbitraires de ceux-ci. Toute dĂ©signation qui permet Ă  l'interlocuteur d'identifier sans ambiguĂŻtĂ© de quel nombre il s'agit est valable. Il est Ă©vident qu'il est plus efficace de dire Ă  l'interlocuteur «le facteuriel de huit» que la dĂ©signation Ă©quivalente «quarante mille trois cent vingt». La question qui se pose ici est : quelle dĂ©signation pour un nombre donnĂ© est la plus courte ?

Le philosophe Bertrand Russell a publiĂ© en 1908 le «paradoxe de Berry», qui aborde la question des dĂ©signations des nombres sous un angle opposĂ© : quel est le plus petit nombre pour lequel il n’est pas suffisant d’utiliser quatre-vingts lettres ?
Un tel nombre doit exister : avec quatre-vingts lettres russes et espaces, on peut composer seulement 3480 dĂ©signations, donc, avec l'utilisation de quatre-vingts lettres, il est impossible de dĂ©signer plus de 3480 nombres. Ainsi, un nombre ne pouvant pas ĂȘtre dĂ©signĂ© de cette façon ne dĂ©passera pas 3480.

Donc, ce nombre sera dĂ©signĂ© par «le plus petit nombre pour lequel il n’est pas suffisant d’utiliser quatre-vingts lettres», qui contient seulement 78 lettres ! D'une part, ce nombre doit exister ; d'autre part, si ce nombre existe, alors sa dĂ©signation ne lui correspond pas. Un paradoxe !

La façon la plus simple de balayer ce paradoxe est de faire rĂ©fĂ©rence Ă  l'informalitĂ© des dĂ©signations verbales. On pourrait dire que si seules un ensemble spĂ©cifiquement dĂ©fini d'expressions Ă©tait autorisĂ© alors «le plus petit nombre pour lequel il n’est pas suffisant d’utiliser quatre-vingts lettres» cela ne constituerait pas une dĂ©signation valide, tandis que des dĂ©signations pratiquement utiles comme «le facteuriel de huit» resteraient valides.

Existe-t-il des moyens formels pour dĂ©crire la sĂ©quence (algorithme) d'actions sur les nombres ? Oui, et en abondance — on les appelle des langages de programmation. Utilisons des programmes au lieu de dĂ©signations verbales (par exemple, en Python), pour afficher les nombres nĂ©cessaires. Par exemple, pour cinq nines, le programme suivant convient : print("9"*5). Nous allons continuer Ă  nous intĂ©resser Ă  la plus courte programme pour un nombre donnĂ©. On appelle la longueur d'un tel programme la complexitĂ© de Kolmogorov .; c'est la limite thĂ©orique Ă  laquelle un nombre donnĂ© peut ĂȘtre compressĂ©.

Au lieu du paradoxe de Berry, on peut maintenant envisager un analogue : quel est le plus petit nombre pour lequel un programme de moins d'un kilo-octet n'est pas suffisant ?

Nous allons raisonner de la mĂȘme maniĂšre qu'auparavant : il existe 2561024 textes d'un kilo-octet, donc, avec des programmes d'un kilo-octet, on peut produire au maximum 2561024 nombres. Il existe donc un certain nombre, qui ne dĂ©passe pas 2561024, qui ne peut pas ĂȘtre produit de cette maniĂšre.

Mais Ă©crivons un programme en Python qui gĂ©nĂšre tous les textes d'un kilo-octet possibles, les exĂ©cute, et si l'un d'eux produit un nombre, ajoute ce nombre Ă  un dictionnaire d'atteignabilitĂ©. AprĂšs avoir vĂ©rifiĂ© toutes les 2561024 possibilitĂ©s, peu importe le temps que cela prendra — le programme cherche quel est le plus petit nombre absent du dictionnaire et l'affiche. Il semble Ă©vident qu'un tel programme tiendra dans un kilo-octet de code — et affichera ce nombre qui est impossible Ă  produire avec un programme d'un kilo-octet !

Quel est donc le piÚge maintenant ? Avec une telle formalisation, on ne peut plus passer à la légÚre sur les notations !

Si vous ĂȘtes dĂ©rangĂ© par le fait que notre programme nĂ©cessitera une quantitĂ© astronomique de mĂ©moire pour fonctionner — un dictionnaire (ou un tableau de bits) de 2561024 Ă©lĂ©ments — on peut faire tout cela sans lui : parcourir chacun des 2561024 nombres un par un en testant tous les 2561024 programmes possibles jusqu'Ă  ce que l'on trouve le bon. Peu importe que ce processus prenne beaucoup de temps : aprĂšs avoir vĂ©rifiĂ© moins de (2561024)2 paires du nombre et du programme, il doit se terminer et trouver ce nombre tant convoitĂ©.

Ou ne se terminera-t-il pas ? Car parmi tous les programmes qui seront testĂ©s, on rencontrera while True: pass et ses analogues fonctionnels — et ensuite, la vĂ©rification d'un tel programme n'avancera plus !

Contrairement au paradoxe de Berry, oĂč le piĂšge rĂ©sidait dans la non-formalisation des notations, dans le second cas, nous avons une reformulation bien masquĂ©e "du problĂšme de l'arrĂȘt". En effet, il est impossible de dĂ©terminer la sortie d'un programme dans un temps fini. En particulier, la complexitĂ© de Kolmogorov est non calculable.: il n'existe aucun algorithme permettant de trouver, pour un nombre donnĂ©, la longueur du programme le plus court affichant ce nombre ; par consĂ©quent, il n'y a pas de solution non plus pour le problĂšme de Berry — trouver, pour un nombre donnĂ©, la longueur de la reprĂ©sentation verbale la plus courte.

Source : habr.com

Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS đŸ”„ Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster