Benutzer-Werkzeuge

Webseiten-Werkzeuge


Seitenleiste

ws1920:hinweise_von_stefan_born

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

  1. 'Guns', also nach N Schritten sich reproduzierend mit zusätzlicher Produktion von einem neuen Objekt.
  2. Gleiter (reproduziert sich nach N Schritten an einem anderen Ort).

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?

ws1920/hinweise_von_stefan_born.txt · Zuletzt geändert: 2020/03/18 14:44 von richard.wonneberger