Article de reference

Machine à pointer

En informatique théorique , une machine à pointeurs est une machine de calcul abstraite atomistique dont la structure de stockage est un graphe . Un algorithme de pointeur peut ...

En informatique théorique , une machine à pointeurs est une machine de calcul abstraite atomistique dont la structure de stockage est un graphe . Un algorithme de pointeur peut également être un algorithme restreint au modèle de machine à pointeurs.

Certains types particuliers de machines à pointeurs sont appelés automate de liaison, machine KU, SMM, machine LISP atomistique , machine à pointeur d'arbre, etc.

Les machines à pointeurs ne possèdent pas d'instructions arithmétiques. Le calcul s'effectue uniquement par la lecture de symboles d'entrée, leur modification et divers tests sur leur structure de stockage (l'agencement des nœuds et des pointeurs), puis par la production de symboles de sortie en fonction des résultats de ces tests. En ce sens, ce modèle est similaire à la machine de Turing .

Types de « machines à pointeur »

Gurevich et Ben-Amram recensent tous deux plusieurs modèles « atomistiques » très similaires de « machines abstraites » ; Ben-Amram estime qu’il convient de distinguer les « modèles atomistiques » des modèles « de haut niveau ». Les modèles atomistiques suivants seront présentés ci-dessous :

  • Machines de modification de stockage de Schönhage (SMM),
  • Machines Kolmogorov – Uspenskii (KUM ou KU-Machines).

Ben-Amram présente également les variétés suivantes, qui ne sont pas abordées plus en détail dans cet article :

  • Machine atomistique pure LISP (APLM)
  • Machine atomistique entièrement LISP (AFLM),
  • Machines à pointeur atomistiques générales,
  • Le langage I de Jones (deux types).

Modèle de machine de modification de stockage (SMM) de Schönhage

La présentation suivante fait suite à celle de van Emde Boas.

La machine se compose d'un alphabet fixe de symboles d'entrée, d'un programme fixe et d'un graphe orienté mutable dont les flèches sont étiquetées par des symboles de l'alphabet. Ce graphe constitue la mémoire de la machine . Chaque nœud du graphe possède une unique flèche sortante, étiquetée par chaque symbole, même si certaines de ces flèches peuvent boucler vers le nœud d'origine. Un nœud fixe du graphe est identifié comme le nœud de départ ou « actif ».

Chaque mot de symboles de l'alphabet peut alors être traduit en un chemin à travers la machine ; par exemple, 10011 se traduirait par le fait de prendre l'arête 1 à partir du nœud de départ, puis l'arête 0 à partir du nœud résultant, puis l'arête 0, puis l'arête 1, puis l'arête 1. Ainsi, un mot identifie un nœud, le nœud final du chemin, mais cette identification changera à mesure que le graphe change au cours du calcul.

La machine peut recevoir des instructions qui modifient la disposition du graphique. Les instructions de base sont :

(1) nouvelle instruction w , qui crée un nouveau nœud à la fin du chemin w , avec toutes ses arêtes dirigées vers l'avant-dernier nœud dans w .

(2) L'instruction « set w to v » (re)directe une arête vers un nœud différent. Ici, w et v représentent des mots . Cette instruction modifie la destination de la dernière arête du chemin w .

Quelques étapes de l'exécution d'une machine à 2 symboles {0,1} avec les instructions suivantes : (1) nouveau ε ; (2) nouveau 1 ; (3) nouveau 11. L'instruction n° 1 initialise le graphe de stockage comme un seul nœud, le nœud 1, dans le graphe de stockage.

(3) Si v = w alors instruction z : Instruction conditionnelle comparant deux chemins représentés par les mots w et v pour déterminer s'ils aboutissent au même nœud ; si c'est le cas, passer à l'instruction z, sinon continuer. Cette instruction remplit la même fonction que la commande « si » dans tout langage de programmation impératif .

Évolution du graphe de stockage dans une machine à 2 symboles {0,1} avec les instructions suivantes : (1) nouveau ε ; (2) nouveau 1 ; (3) nouveau 11 ; (4) nouveau 10 ; (5) définir 111 à 10. À ce moment-là, si la machine devait faire le si 10=111 alors xxx, alors le test serait réussi et la machine sauterait effectivement à xxx.

(4) lire et écrire des instructions d'entrée/sortie, en accédant à une bande d'entrée en lecture seule et à une bande de sortie en écriture seule, contenant toutes deux des symboles de l'alphabet.

Knuth a noté que le modèle SMM coïncide avec un type d'« automate de liaison » brièvement expliqué dans le premier volume de The Art of Computer Programming .

Modèle de machine Kolmogorov – Uspenskii (machine KU)

KUM se distingue de SMM par le fait qu'il n'autorise que des pointeurs inversibles : pour chaque pointeur d'un nœud x vers un nœud y, il doit exister un pointeur inverse de y vers x, étiqueté par le même symbole. Autrement dit, le graphe de stockage est non orienté. Puisque les pointeurs sortants doivent être étiquetés par des symboles distincts de l'alphabet, les graphes KUM et SMM ont tous deux un degré sortant O(1). Cependant, l'inversibilité des pointeurs KUM restreint également le degré entrant à O(1). Ceci répond à certaines exigences de réalisme physique (par opposition au réalisme purement informationnel).

Il existe d'autres différences mineures entre les modèles, comme la forme du programme : une table d'états au lieu d'une liste d'instructions.

Considérations relatives au modèle de machine à pointeur

Utilisation du modèle dans la théorie de la complexité : van Emde Boas (1990) exprime son inquiétude quant au fait que cette forme de modèle abstrait soit :

« Un modèle théorique intéressant, mais… son attrait en tant que modèle fondamental pour la théorie de la complexité est discutable. Sa mesure du temps repose sur un temps uniforme, alors que l’on sait que cette mesure sous-estime la complexité temporelle réelle. La même observation vaut pour la mesure de l’espace de la machine » (van Emde Boas (1990), p. 35).

Gurevich exprime également son inquiétude :

« D’un point de vue pragmatique, le modèle de Schönhage fournit une bonne mesure de la complexité temporelle à l’état de l’art actuel (bien que je préférerais quelque chose comme les ordinateurs à accès aléatoire d’Angluin et de Valiant) ».

Schönhage démontre les équivalences en temps réel de deux types de machines à accès aléatoire avec le SMM.

Algorithmes du modèle SMM : Schönhage démontre que le SMM peut effectuer une multiplication d'entiers en temps linéaire.

Utilisations potentielles du modèle : Gurevich se demande si une machine KU parallèle « ressemble quelque peu au cerveau humain »

Calcul parallèle : Tous les modèles mentionnés ci-dessus sont séquentiels. Un modèle de machine à pointeurs parallèle (atomistique) a été proposé par Cook et Dymond ; un modèle de machine à pointeurs parallèle de haut niveau (non atomistique) a également été utilisé

Plus d articles de Worldlex Wiki

Revenez a l index pour explorer davantage de pages sur l histoire, la science, la culture, la geographie et la societe en francais.

Explorer l index