Hinweise von Stefan Born
Es ist lehrreich, das komplett selbst zu programmmieren. Dann sind die Automaten erst mal vergleichsweise langsam. Wenn du darauf achtest, dass die Zustände in einem numpy-Array gespeichert werden und die Programmierung schön modular ist, so dass das Zustandsupdate eine Methode/Funktion ist wäre es leicht, in einer zweiten Stufe, diese Funktion auszulagern und als Cython zu kompilieren. Das wurde schon mal für das Game-of-Life schon einmal gemacht, und es bringt einen Geschwindigkeitsgewinnfaktor 50-100.
- Es gibt auch einige Python-Pakete, die man verwenden könnte, einige davon mit Multiprocessing-Unterstützung.
- Die schnellsten Implementierungen verwenden die Graphikkarte für die eigentlichen Zustandsupdates, du kannst etwa mal nach Vispy + Game of Life suchen. Das ist keine Hexerei, aber natürlich noch eine andere Sprache (ein C-Dialekt), den man verstehen müsste. Vispy erlaubt, diesen C-Dialekt von Python aus an die Graphik-Karte zu schicken.
- Selbst mit einer klassischen Game of Life ließen sich interessante (und 'neue') Ziele formulieren: Wenn der Simulator erst mal da ist, kann man nach interessanten Konstellationen suchen: – periodisch mit Periode N
Eine Frage, die ich mir mal gestellt und nicht beantwortet habe: Das Game-of-Life ist, wie ich zu wissen glaube, Turing- vollständig. Wie realisiert man eine logische Schaltung mit Hilfe des GoL?