2025-01-21

Generating Voronoi Diagrams using Fortune’s Algorithm

Fortune's Algorithm generates Voronoi diagrams using a sweepline approach and beachline data structure, processing site and circle events to build cell boundaries in O(nlogn) time, though simpler O(n^2) implementations may be more practical for smaller diagrams.

Original archive.is archive.ph web.archive.org

Log in to get one-click access to archived versions of this article.

read comments on news aggregators:

Related articles

3,200% CPU Utilization

An in-depth analysis of a critical Java performance issue where unprotected concurrent TreeMap modifications led to 3,200% CPU utilization. The investigation revealed how thread interleaving can create infinite loops in red-black trees, with experiments across multiple programming languages demonstrating similar vulnerabilities.

Markov Chains explained visually

Markov chains are mathematical systems that model transitions between different states with associated probabilities, represented through transition matrices or diagrams. The concept finds practical applications in various fields, from weather prediction to Google's PageRank algorithm, with the ability to simulate real-world phenomena by incorporating probabilistic state transitions.

Postgres as a Graph Database: (Ab)using pgRouting

pgRouting, a Postgres extension typically used for geospatial routing, offers versatile graph functionality beyond GIS applications. The extension can handle task scheduling, resource allocation in distributed systems, and power recommendation engines, making it a lightweight alternative to specialized graph databases.

Why We Designed TigerBeetle's Docs from Scratch | TigerBeetle Blog

TigerBeetle rebuilt their documentation site from scratch, moving away from Docusaurus to achieve better performance, simplicity, and integration with their zero-dependency philosophy. The new implementation uses Zig and Pandoc, resulting in a 10x reduction in footprint while maintaining functionality and adding features like integrated search and offline capabilities.

Sublinear Time Algorithms

Sublinear time algorithms represent a paradigm shift in computational efficiency, allowing processing of extremely large datasets by reading only a fraction of the input. While exact deterministic sublinear algorithms exist for some problems, most solutions require randomization and approximation techniques, with applications spanning optimization, property testing, and distribution analysis.

Relaxed Radix Balanced Trees | Peter Horne-Khan

An in-depth exploration of Relaxed Radix Balanced (RRB) Trees explains their implementation for immutable vectors, focusing on efficient merging operations. The data structure combines radix search with size tables to maintain balanced trees while allowing flexible node sizes, offering improved performance over traditional Persistent Vectors.

0+0 > 0: C++ thread-local storage performance

An in-depth analysis of thread-local storage (TLS) performance in C++, examining how different implementations and contexts affect access speed. Core findings show that TLS access is fastest in executables without constructors, while shared libraries and constructors significantly degrade performance due to complex initialization and addressing mechanisms.

On word embeddings - Part 3: The secret ingredients of word2vec

An in-depth analysis reveals that word embedding models like word2vec aren't inherently superior to traditional distributional semantic methods, with hyperparameter optimization being more crucial than algorithm choice. The study demonstrates that Singular Value Decomposition (SVD) often outperforms popular embedding methods in word similarity tasks, while Skip-gram Negative Sampling (SGNS) excels in analogy tasks.

The Largest Sofa You Can Move Around a Corner | Quanta Magazine

A mathematician has proven that Gerver's sofa shape, with an area of approximately 2.2195, is the largest possible shape that can move around a 90-degree corner in a hallway, solving a 60-year-old mathematical problem without computer assistance. Jineon Baek's elegant proof introduces new mathematical techniques that could help solve other optimization problems.