Hashlife

Le Hashlife est un algorithme pour calculer le destin à long terme d'une configuration commençante donnée dans les diverses règles de la vie de . L'algorithme a été inventé par le Bill Gosper dans les années 80 tôt tandis qu'il était engagé dans la recherche au centre de recherches de Palo Alto de Xerox . Hashlife a été à l'origine mis en application sur le de Symbolics blèsent les machines à l'aide de la prolongation des saveurs .

Hashlife

Hashlife est conçu pour exploiter des grands nombres de redondance spatiale et de temps de dans la plupart des règles de la vie. Par exemple, dans la vie de Conway de , la densité maximum des cellules de phase dans une région est seulement 1/2, et beaucoup de modèles apparemment aléatoires finissent toujours vers le haut comme collections de lifes simples et d'oscillateurs .

Représentation

Le champ est typiquement traité comme théoriquement grille infinie du , avec le modèle en question centré près de l'origine . Un Quadtree est employé pour représenter le champ. Une opération de mise à jour prend la place 22 des cellules du k , 2 le k d'un côté, au niveau de Th du k de l'arbre, et calcule la prochaine génération 2 de la place du k /2 du k /2 -by-2 des cellules au centre.

Brouillage

Tandis qu'un quadtree a trivialement bien plus aérien que d'autres représentations plus simples (telles qu'employer une matrice de peu , elle tient compte de différentes optimisations. Pendant que le nom suggère, il emploie les tables de brouillage pour stocker les noeuds du quadtree. Beaucoup de sous-modèles dans l'arbre sont habituellement identiques entre eux ; par exemple le modèle étant étudié peut contenir beaucoup de copies du même vaisseau spatial , ou même grandes bandes de l'espace vide. Ces sous-modèles veulent tout le gâchis dans la même position dans la table de brouillage, et beaucoup de copies du même sous-modèle peuvent être stockées ainsi using la même entrée de table de brouillage. En outre, ces sous-modèles doivent seulement être évalués une fois, pas une fois par copie comme dans d'autres algorithmes de la vie.

Ce lui-même mène aux améliorations significatives des conditions de ressource ; par exemple une génération des divers sélectionneurs et des spacefillers , qui se développent à de grandes vitesses, peut être évaluée dans Hashlife using l'espace et le temps logarithmiques du .

Superspeed et mise en antémémoire

Un autre speedup pour beaucoup de modèles peut être encore réalisé en évoluant différents noeuds à différentes vitesses. Par exemple, on pourrait calculer deux fois le nombre de générations en avant pour un noeud au ( k +1) - niveau de Th comparé à un au Th du k . Pour les modèles clairsemés ou réitérés tels que le pistolet classique de planeur de , ceci peut avoir comme conséquence des speedups énormes, permettant paradoxalement à on de calculer de plus grands modèles du à un plus élevé un plus rapide de générations du , parfois le exponentiellement . Pour profiter pleinement de ce dispositif, les sous-modèles des générations passées devraient être sauvés par aussi bien.

Puisqu'on permet à différents modèles de fonctionner à différentes vitesses, quelques réalisations, comme le propre programme du hlife de Gosper, n'ont pas un affichage interactif, mais calculent simplement un résultat final de préréglage pour commencer un modèle, courent habituellement de la ligne de commande . Des programmes plus récents tels que Golly, cependant, ont une interface graphique qui peut être conduite par un moteur Hashlife-basé.

Le comportement typique d'un programme de Hashlife sur un modèle favorisant est comme suit : d'abord l'algorithme court plus lent comparé à d'autres algorithmes en raison de l'associé aérien constant au brouillage et au bâtiment l'arbre ; mais plus tard, assez de données seront recueillies et sa vitesse augmentera énormément - l'augmentation rapide de la vitesse est souvent décrite comme " de ; exploding" ; .

Inconvénients

Hashlife peut consommer significantly more mémoire que d'autres algorithmes, particulièrement sur les modèles modéré-classés avec beaucoup d'entropie, ou qui contiennent des sous-modèles mal alignés sur les limites des noeuds de quadtree (IE. puissance-de-deux sizes) ; la cachette est un composant vulnérable. Elle peut également consommer plus de temps que d'autres algorithmes sur ces modèles. Golly, entre d'autres simulateurs de la vie, ont des options pour alterner Hashlife et algorithmes conventionnels.

Hashlife est également sensiblement plus complexe à l'instrument . Par exemple, il a besoin d'un collecteur d'ordures consacré pour enlever des noeuds inutilisés de la cachette. Tandis qu'un programmeur d'amateur pourrait pouvoir écrire un joueur simple de la vie au-dessus d'un après-midi, peu de réalisations de Hashlife existent.

Voir également

Le jeu de Conway de de la vie
Optimisation
Structures de données fonctionnelles , dont le quadtree haché est un

.

Random links:Clinton, Arkansas | Brattleboro occidental, Vermontn | Gnoppix | Hughes de Courson | Bride de Foerster | Hashlife