Skip to main content

Rotations as a Special Case of Vector Transformations

· One min read

Rotations as a Special Case of Vector Transformations

... with Applications to Game World Modeling

Rotations, as a class of affine vector transformations, represent rigid body transformations that change the direction of a vector within a given plane.
Efficient and accurate handling of such transformations poses challenges not only for game and animation engines, but also for simulations and real-time systems, where the limitations of floating-point arithmetic and operation throughput can negatively impact the computational outcomes.

The Geometry of the Dot Product

· One min read

The Geometry of the Dot Product

... and Applications to Visibility Modeling

The Dot Product is a fundamental building block for vector operations in video games and simulations. A solid understanding is crucial for applications involving view-related coordinate transformations and even physical modeling within a game world. For many practical use cases, the dot product offers an elegant alternative to constructing explicit visibility cones or relying on computationally expensive raytracing algorithms.

Contracted Events for Micro Frontend Communication

· 2 min read

Contracted Events for Micro Frontend Communication

A non-formal approach to non-breaking events for displaying information in distributed Frontend Fragments

Schema Versioning and Consumer-driven contracts play critical roles in the world of distributed systems, where data structures often evolve across releases. These concepts can be applied to Micro Frontends, where messages need to be exchanged across system boundaries: Release-agnostic systems, which can dynamically enter and exit the system of concern, must be able to properly respond to event messages: Updated message structures must not introduce breaking changes.

In a frontend, provide contracts for data structures consumed by conceptually related modules and process the data according to the individual requirements of the consuming context.

[DE] Betrachtung des Widerspruchsbeweis des speziellen Halteproblems nach Vossen und Witt

· 6 min read

Oft wird der Nachweis, dass das Halteproblem nicht entscheidbar ist, in der Fachliteratur (Schöning [📖Sch08, p. 119 f.], Asteroth und Baier [📖BA02, p. 106 f.], Sipser [📖Sip12, p. 216 f.]) mithilfe einer Turingmaschine und einem Widerspruchsbeweis gezeigt, in etwa:

Angenommen,

K={wΣw=T,T stoppt bei Eingabe w}K' = \{w \in \Sigma^* | w = \langle T \rangle, \text{$T$ stoppt bei Eingabe $w$}\}

ist entscheidbar.

Sei TT' ist die Turingmaschine, die KK' entscheidet.
Sei w=Tw = \langle T \rangle die Codierung1 einer Turingmaschine, die wie folgt arbeitet:

  • TT simuliert das Verhalten von TT' bei der Eingabe ww:
    • TT stoppt, wenn TT' die Eingabe ww verwirft (wKw \notin K')
    • TT stoppt nicht, wenn TT' die Eingabe ww akzeptiert (wKw \in K')

Damit folgt: TT stoppt bei Eingabe ww \Leftrightarrow TT' verwirft ww \Leftrightarrow wKw \notin K' \Leftrightarrow TT stoppt nicht

Widerspruch!

Footnotes

  1. Anstatt Gödelnummer wird im Folgenden auch einfach der Begriff Codierung verwendet, wobei streng genommen τ(T)\tau(T) die Codierung einer normierten Turingmaschine ist, bevor ihr eine Gödelnummer zugewiesen wird

[DE] Shellsort Laufzeitanalyse

· 14 min read

Donald Shell stellt 1959 in [📖She59] einen Sortieralgorithmus vor, der später nach ihm benannt wird: Shellsort.
Die in dem Algorithmus verwendete Sortiermethode ist auch bekannt als Sortieren mit abnehmenden Inkrementen [📖OW17b, p. 88], das Verfahren ist eine Variation von Insertion Sort:

[Shellsort] uses insertion sort on periodic subarrays of the input to produce a faster sorting algorithm. [📖CL22, p. 48]

In der vorliegenden Implementierung (siehe Listing 1) werden t=log2(n)t = log_2(n) Inkremente[^1] hth_t[^2] der Form n2i\lfloor {\frac{n}{2^i}} \rfloor verwendet, um lg(n)lg(n) hh-sortierte Folgen zu erzeugen. Im letzten Schritt sortiert der Algorithmus dann in h1h_1 die Schlüssel mit Abstand=11.

Die Effizienz des Sortierverfahrens ist stark abhängig von hh: So zeigt Knuth, dass O(n32)O(n^{\frac{3}{2}}) gilt, wenn für hh gilt: hs=2s+11h_s = 2^{s+1} - 1 mit 0s<t=lg(n)0 \leq s < t = \lfloor{lg(n)} \rfloor (vgl. [📖Knu97c, p. 91][^3]. In unserem Fall können wir von O(n2)O(n^2) ausgehen.

[DE] Zulassungsarbeit M.Sc. Informatik

· 6 min read

Man darf behaupten, dass im Jahr 2023 das Thema Künstliche Intelligenz endgültig in der Gesellschaft angekommen ist. Mit der Veröffentlichung von ChatGPT Ende 2022 ist "KI" plötzlich für jeden begreifbar. Einmal mehr rutschen defätistische Prophezeiungen auf die Titelseiten der Boulevard-Presse.

Als Software Entwickler mit Schwerpunkt Design und Architektur hatte ich Künstliche Intelligenz bis dahin weitestgehend in den akademischen Bereich verortet.

Dann hatte ich das Glück, mich ausgiebig mit Künstlicher Intelligenz im Rahmen meiner Zulassungsarbeit für den Fernstudiengang Informatik (M.C.Sc.) an der Hoschschule Trier beschäftigen zu dürfen.

Entstanden ist eine Arbeit, in dem ich mathematische Modelle künstlicher Neuronen vorstelle. Auf dem Weg dorthin bin ich in die frühen Anfänge der Neurowissenschaft, der Kybernetik und Rechnerarchitektur eingetaucht. Es hat meine Sichtweise auf vieles, was mir bis dahin (un)verständlich gewesen ist, geändert.

Perceptron Function Plotting with Python

· 3 min read

I have updated my Perceptron-implementation with a plotting function that allows for visualizing the adjustments of the Perceptron's weight-vector through the epochs.

The source-code can be found at https://github.com/ThorstenSuckow/pylabs.

Usage

Create input data and the associated output values. As an example, the following represents the logical AND-function:

[DE] Verfällt ein Big Ball of Mud?

· 8 min read
info

Ein Kommentar zu einem Kommentar zu Eberhard Wolff's Episode 159 - Big Ball of Mud als Teil von Software-Architektur im Stream. Eine englische Übersetzung findet sich hier.

Verfällt ein Big Ball of Mud?

Durch den Fortschritt der Technologie und der Arbeit von Leuten wie Brooks, Buschmann und Booch wurde uns Entwicklern der Weg vom mikroskopischen ins makroskopische geebnet. Lang vorbei sind die Zeiten, in denen schrankhohe Rechnersysteme nah an der Infrastruktur programmiert werden mußten.
Jedoch, wer heute den Mythischen Mann-Monat [📖MMM] liest und über die damals zur Verfügung stehende Technik schmunzelt, der wird spätestens bei der Aktualität der anderen erwähnten Probleme betreffs Organisation und Planung von Projekten rasch in die Gegenwart zurückgeworfen. Aus Eskapismus wird ein erhobener Finger: Das Lesevergnügen mahnt plötzlich zur Reflektion. Die Probleme von damals sind heute immer noch aktuell, und die Entwicklung der Technik verlief bis dato offensichtlich ungleich schneller als die von Planung und Organisation.