09-11-2020, 09:37 PM
> Après tout, au bout d'un temps infini, même l'espace infini peut être plein. Mais bon, là on est un peu dans le philosophique donc pas forcément hyper intéressant.
Nope, ce n'est pas de la philosophie Comme ton espace informatique ne sera de toute façon pas "infini", on peut raisonner sur un espace "très grand" (arbitrairement grand, mais fini). Dans ce cas, imaginons un automate très simple disant: une cellule est vivante (1) si elle est morte (0) et si au moins une de ses voisines est vivante. Alors, avec un seul 1 dans ton espace fini "très grand", l'entièreté de cet espace finira couvert de 1
Je ne pense pas que ce soit une bonne idée de garder tes "dossiers": tu perds la possibilité éventuellement de faire un prorotype en RAM, tu perds probablement en place & perf (parce qu'un dossier, c'st une forme d'index dans un système de fichiers sur le disque, or, ici, tu n'as pas besoin d'un tel index au final). Si tu vaux faire cela, je pencherai plutôt pour un index dans le fichier initial. Par exemple, les 1M de premiers bits seraient l'index. L'index en place N contient un 1 si au moins 1 cellule du N-eme groupe de 1G de bits du fichier est un 1. Tu peux alors gagner quelques giga, mais si et seulement si ces blocs sont vides. Ne sachant pas quel automate du définit, je ne sais pas si c'est le cas (j'en doute perso, car alors, l'automate a pas grand intéret?!)
Si tu veux réduire la taille du fichier, je pencherai plutôt pour essayer d'utiliser directement un filesystem compressé (genre, sur windows, tu peux flagger un fichier comme "compressé" sur le disque, et il apparaissait [sous W7] en vert). Il se peut que l'implé de cette compression soit alors bien plus efficace que tout bricolage de dossiers que tu feras (ou d'index en début de fichier).
Donc pour moi, fais simple: un fichier, où 1 bit = 1 cellule de ton automate. Je ne suis en revanche pas fan du tout de ton système "ternaire" (car c'est pas le principe usuel des automates, en tous cas, pas à ma connaissance). Je remplacerai donc les espaces par des 0 et une règle supplémentaire basée sur les 1: on remplace les espaces par des "0", on applique la règle "dès qu'on croise un 1, on entre dans une commande; quand on est dans une commande, les 4x5 prochains bits définissent les paramètres, avec le 1er bit le signe et les 4 suivants la valeur" (par exemple)
Ca te simplifiera énormément le codage et la gestion de l'automate
Nope, ce n'est pas de la philosophie Comme ton espace informatique ne sera de toute façon pas "infini", on peut raisonner sur un espace "très grand" (arbitrairement grand, mais fini). Dans ce cas, imaginons un automate très simple disant: une cellule est vivante (1) si elle est morte (0) et si au moins une de ses voisines est vivante. Alors, avec un seul 1 dans ton espace fini "très grand", l'entièreté de cet espace finira couvert de 1
Je ne pense pas que ce soit une bonne idée de garder tes "dossiers": tu perds la possibilité éventuellement de faire un prorotype en RAM, tu perds probablement en place & perf (parce qu'un dossier, c'st une forme d'index dans un système de fichiers sur le disque, or, ici, tu n'as pas besoin d'un tel index au final). Si tu vaux faire cela, je pencherai plutôt pour un index dans le fichier initial. Par exemple, les 1M de premiers bits seraient l'index. L'index en place N contient un 1 si au moins 1 cellule du N-eme groupe de 1G de bits du fichier est un 1. Tu peux alors gagner quelques giga, mais si et seulement si ces blocs sont vides. Ne sachant pas quel automate du définit, je ne sais pas si c'est le cas (j'en doute perso, car alors, l'automate a pas grand intéret?!)
Si tu veux réduire la taille du fichier, je pencherai plutôt pour essayer d'utiliser directement un filesystem compressé (genre, sur windows, tu peux flagger un fichier comme "compressé" sur le disque, et il apparaissait [sous W7] en vert). Il se peut que l'implé de cette compression soit alors bien plus efficace que tout bricolage de dossiers que tu feras (ou d'index en début de fichier).
Donc pour moi, fais simple: un fichier, où 1 bit = 1 cellule de ton automate. Je ne suis en revanche pas fan du tout de ton système "ternaire" (car c'est pas le principe usuel des automates, en tous cas, pas à ma connaissance). Je remplacerai donc les espaces par des 0 et une règle supplémentaire basée sur les 1: on remplace les espaces par des "0", on applique la règle "dès qu'on croise un 1, on entre dans une commande; quand on est dans une commande, les 4x5 prochains bits définissent les paramètres, avec le 1er bit le signe et les 4 suivants la valeur" (par exemple)
Ca te simplifiera énormément le codage et la gestion de l'automate