Nature of Code

Sammlung von interessanten, mathematischen Konzepten und Algorithmen, die sich teilweise auch in der Natur wiederfinden.

Computer können vor allem eines sehr gut: Rechnen. Immer wieder stoße ich auf faszinierende Mathematik und Algorithmen mit welchen sich total ästhetische und nützliche Muster und Abläufe generieren lassen und die dabei oft auf erstaunlich simplen Regeln basieren.

[…] the seemingly inhuman algorithms that we code on computers may be more human and natural than we’d actually think. 1

Patterns

Rule 30

Penrose Pattern

Ein Muster bestehend aus nur zwei Formen das eine undendlich große Fläche perfekt füllt, sich jedoch niemals widerholt. Entdeckt von Roger Penrose im Jahr 1973.

Durch seine Unregelmäßigkeit bekommt das Muster eine natürliche Ästhetik und ist dennoch durch seine Unendlichkeit völlig ungreifbar und paradox.

There are actually an uncountably infinite number of different patterns of kites and darts that tile the entire plane. […] If you were on any of those tilings, you wouldn’t be able to tell which one it is. I mean you might try to look further and further out gather more and more data, but it’s futile. Because any finite region of one of these tilings appears infinitely many times in all of the other versions of those tilings – I mean don’t get me wrong those tilings are also different in an infinite number of ways –but it’s impossible to tell that, unless you could see the whole pattern, which is impossible2

Fractal Tree

Ein einfaches, fast schon banales, Pattern, das durch immer wieder weiderholte Verzweigung eine exponentiell wachsende Baumstruktur erzeugt.

Wiederholung taucht in der Programmierung wie in der Natur ständig auf. Vor allem das Prinzip der Rekursion (Also ein Ablauf der sich selbst immer wieder ausführt) erzeugt faszinierende, für das menschliche Gehirn erstaunlich schwer nachvollziehbare Muster.

nature paints with recursion quietly and obviously. 1

Künstliches Leben

Um lebensähnliche, computerbasierte Simulationen zu schaffen braucht es tatsächlich gar keine gigantischen LLMs. Oft genügen nur wenige, einfache Regeln, um komlexe, erstaunlich natürlich und lebendig wirkende Simulationen zu erzeugen, wie einige schon Jahrzehnte alte Algorithmen zeigen.

Boids

Ein Model das ich bereits in einigen bisherigen Experimenten angewendet habe. Siehe Boids

Boids-Algorithmus wurde schon und basiert auf nur 3 Regeln die jedes Element in der Simulation (Ein Boid) immer wieder ausführt und wodurch seine weitere Bewegung definiert wird.

boids

Conways Game of Life

Langtons Ant

Methoden

Algorithmen sind in aller Regel Problemlöser. Mathematische und logische Methoden um kleine Aufgaben zu bewältigen. Oft passiert das im Hintergrund, aber manchmal liegt in der Visualisierung von diesen systematischen Abläufen auch eine ganz eigene Ästhetik.

Sorting

Sortieren ist eine der fundamentalsten Aufgaben, die Computer für uns übernehmen können und ständig tun. Im Laufe der Zeit wurden dafür viele verschiedene Algorithmen entwickelt, die verschiedene Vor- und Nachteile haben. Wie faszinierend es sein kann, diese Abläufe zu visualisieren und zu beobachten, zeigt die wundersame und eigentümliche Welt der Sorting-Algorithm-Videos auf YouTube

KD Tree

Ein k-d Baum ist eine Methode mit der sich beliebig dimensionaler Raum systematisch unterteilen lässt – beispielsweise um ein Element darin zu suchen und seine Position möglichst effizient zu definieren.

Fourier Transform

Die Fourier Transformation ist eine Mathematische Methode mit verschiedenen Anwändungsfällen, etwa in der Kompression von digitalen Daten oder der Analyse von Frequenzen. Sie lässt sich aber auch auf eine faszinierende Art darstellen, bei der aneinander gekettete, sich in verschiedenen Frequenzen drehende Vektoren beliebige Formen annäherungsweise nachzeichnen.

https://www.youtube.com/watch?v=-qgreAUpPwM

Bezier Curves

Pathfinding


  1. John Maeda: How to speak Machine – Computational thinking for the rest of us 2

  2. Veritasium: The Infinite Pattern That Never Repeats → YouTube