Skip to content →

カテゴリー: アルゴリズム

Cipolla のアルゴリズム

\(p\) を奇素数として \(\mathbb{F}_p\) における平方根を \(O(\log p)\) で求める Cipolla のアルゴリズムを解説する。フロベニウス写像との関連を説明して、平方根以外の場合についても拡張する。

Prüfer コード

この記事ではラベル付き木を全単射な方法で数列に変換する、Prüfer コード(Prüfer 列)と呼ばれるテクニックを解説する。Prüfer コードを使えば、ラベル付き木を数えやすい対象に変換することができ、木の数え上げに威力を発揮する。

線形篩

素数を線形時間で列挙する篩を扱います。付随して列挙される最小素因数を用いて冪数を効率的に列挙する方法も解説しました。

Level Ancestor Problem

level ancestor を前計算 \(O(N)\) 、クエリ当たり \(O(1)\) で計算するアルゴリズムを解説します。色々なテクニックがぎゅっと詰まってます。