Constraint solvers are a good tool to have in the toolbox. If this sounds like a familar beat, it should. Today I’m revisiting the AC-3 constraint solver I had previously written in F#, but this time I’ll be using Zig as a continued learning adventure.
Dynamic Time Warping with Zig
Read Time: 10 minutesReimplementation time! Today I’ll dig into a dynamic time warping implementation using Zig. Its been a language on my radar for awhile now, initially from its usage by TigerBeetle and more recently Ghostty. The new year is as good a time as any to take something new for a spin. So time to get started.
Estimated Shortest Path with F#
Read Time: 14 minutesCalculating the shortest path between two nodes in large graphs can be a time-consuming process. One approach to solving this is to calculate an estimated path. There are many situations where the exact path isn’t necessary; an estimated path is good enough. This is the case especially if the performance benefits of estimating are high enough. I’ll look at implementing the algorithm from A Sublinear Algorithm for Approximate Shortest Paths in Large Networks in F#. It offers a hefty performance boost at the cost of some preprocessing; well worth the time.
Estimating Distinct Element Counts with F#
Read Time: 10 minutesPerforming estimated counting of distinct elements in large datasets is a common task. While there are straightforward approaches, they can be memory-intensive and slow for massive datasets. Today I’m going to take a look at the F0 Estimator introduced in the paper Distinct Elements in Streams: An Algorithm for the (Text) Book∗. As often, this will be an implementation in F#.