Finite automata are awesome but inherently
sequential. On the other hand, finite monoid machines solve the same
problems while being amenable to parallel execution.
Did you know that Finite Automata can recognize
divisibility? To find one such automaton, the procedure is simple but
constructing the minimal one requires a lot of modular
arithmetic.
Finite automata accept a description using linear
algebra that we can translate into a system of tensors or quantum
circuits. These provide examples of quantum systems only requiring a
polynomial amount of information to represent and simulate
classicaly.
You may be used to sampling from probabilities,
but what about sampling a random finite probability? As it turns out,
this is a procedure rich in geometry and symmetries.
Cutting planes are a powerful tool for solving
stochastic programs. We focus on the possible ways to represent the cuts
during algorithms and their consequences for
parallelization.
From monads to stochastic control and from fixed
points to value iteration. An exploration about using abstract concepts
to construct concretes algorithms.
Writing a symbolic calculator for derivatives may
sound like a hard task. It is feasible, however, in a few dozen lines of
Haskell. All this thanks to syntax trees and recursion.
The standard definition of average can be rather
opaque. Nevertheless, looking at it from the perspective of minimizing a
square error, sheds light on how natural the definition actually
is.
Most introductions to recursion schemes are aimed
at functional programmers. But what if you are a functional entusiast
mathematician? Don’t worry, we have you covered in this
one.