Article de reference

Tri de spaghettis

Schéma du tri des spaghettis. Les spaghettis peuvent être triés en les retirant du paquet posé sur la table dans l'ordre où ils dépassent. Le tri spaghetti est un algorithme ana...

Schéma du tri des spaghettis. Les spaghettis peuvent être triés en les retirant du paquet posé sur la table dans l'ordre où ils dépassent.

Le tri spaghetti est un algorithme analogique linéaire permettant de trier une séquence d'éléments. Il a été introduit par A.K. Dewdney dans sa chronique du Scientific American . Cet algorithme trie une séquence d'éléments de manière stable, nécessitant un espace mémoire de pile de O ( n ). Il requiert un processeur parallèle, supposé capable de trouver le maximum d'une séquence d'éléments en temps constant ( O ( 1 )).

Algorithme

Par souci de simplicité, supposons que nous triions une liste de nombres naturels . La méthode de tri est illustrée à l'aide de spaghettis crus :

  1. Pour chaque nombre x de la liste, obtenez une tige de longueur x . (Une méthode pratique pour choisir l'unité consiste à faire correspondre le plus grand nombre m de la liste à une tige de spaghetti complète. Dans ce cas, la tige complète mesure m unités de spaghetti. Pour obtenir une tige de longueur x , cassez une tige en deux de façon à ce qu'un morceau mesure x unités ; jetez l'autre morceau.)
  2. Une fois que vous avez tous vos spaghettis, prenez-les délicatement dans votre main et posez-les à plat sur la table. Ensuite, pour chaque spaghetti, abaissez votre autre main jusqu'à ce qu'elle rencontre le spaghetti le plus long. Retirez-le et insérez-le au début de la liste de sortie (initialement vide) (ou, de manière équivalente, placez-le dans le dernier emplacement libre du tableau de sortie). Répétez l'opération jusqu'à ce que tous les spaghettis aient été retirés.

Analyse

La préparation des n spaghettis prend un temps linéaire. Déposer les spaghettis sur la table prend un temps constant, O ( 1 ). Ceci est possible car la main, les spaghettis et la table fonctionnent comme un système de calcul entièrement parallèle . Il reste ensuite n spaghettis à retirer ; par conséquent, en supposant que chaque opération de contact et de retrait prenne un temps constant, la complexité temporelle de l'algorithme dans le pire des cas est O ( n ).

Wayback Machine.