世界を動かす技術を、日本語で。

ルイス・キャロルの行列式の計算方法 (2023)

2025年12月27日原文(johndcook.com)

概要

  • Charles Dodgson (Lewis Carroll)による行列式計算手法「 Dodgson凝縮法」の紹介
  • 手計算に適した方法だが、 機械計算 にも有用
  • 行列を繰り返し 凝縮 し、行・列を減らしていくアルゴリズム
  • ゼロによる割り算回避 のための前処理が必要
  • Gaussian eliminationと同等の計算効率、 整数保持 ・並列化が容易

Dodgson凝縮法(Dodgson Condensation)の概要

  • Dodgson凝縮法 は、行列式を効率よく計算するための手法
  • 行列のサイズを 1つずつ減らしながら 計算を進めるアルゴリズム
  • 各要素を、その要素と 南・東・南東 の隣接要素で作る2×2小行列の行列式で置き換える
  • 一番下の行と一番右の列は 削除
  • 各ステップで 2ステップ前の要素で割り算 を行う必要

アルゴリズム詳細

  • 元の行列を A、k回凝縮した行列を A(k) と表記
  • A(1) は、2×2小行列の行列式で構成
  • A(2) 以降は、各2×2行列式を 2ステップ前の要素で割る
  • 割り算の分母の選び方には注意が必要、Dodgson本人の論文でもやや分かりにくい記述
  • 計算例:4×4行列での凝縮手順と結果の検証(例:Mathematicaで228を得る)

ゼロによる割り算回避

  • アルゴリズム中で ゼロ割り が発生しないようにする必要
  • Dodgsonの推奨: 行や列の入れ替え、または 他の行を定数倍して加算 することで内部のゼロを回避
  • この前処理は主に ゼロ割り回避 のためだが、他の理由があるかは不明
  • 元の行列が 整数成分のみ の場合、途中の計算でも全て整数を保持

効率と他手法との比較

  • 初学者は 余因子展開 で行列式計算を学ぶが、これは O(n!) で非効率
  • Gaussian elimination (部分ピボット付き消去法)は O(n³) で効率的
    • Dodgson凝縮法も O(n³) の計算量
    • Gaussian eliminationでもゼロ割り回避のため部分ピボットが必要
  • Dodgson凝縮法は手計算しやすく、拡張性も高い
    • 途中で整数を保つため、 整数行列 に向いている
    • 各2×2行列式は 並列計算 が可能

関連

  • 余因子行列式随伴行列 との関係
  • 1の列を持つ行列式 に関する応用
  • 応用線形代数 分野での利用

Hackerたちの意見

HNのタイトルフィルターが最初の「How」をカットしちゃったね。手動で戻せるよ。

「‘how’は省いちゃえ。すっきりするから。」

必要なら与えられたブロックを整理して、内部にゼロが入らないようにしなさい。ゼロってアラビア語から来てたってこと、すっかり忘れてた。別の言語では数字を意味することもあるんだよね。

笑 そのつながりに気づかなかったわ — トルコ語ではゼロは「sıfır」で、確かに「cipher」に似てる。パスワードは「şifre」って言うんだけど、これも似てるよね。ネットで調べたら、道筋はsifr(アラビア語でゼロ)→cifre(フランス語、最初はゼロ、その後は数字、さらに暗号メッセージ)→şifre(トルコ語でコード/暗号)って感じらしい。

オランダ語も同じだよ:「Cijfer」、ドイツ語は「Ziffer」、フランス語は「Chifre」、スペイン語は「Cifra」。

タミル語では、今でもゼロを意味するよ。ただ、タミル語には「f」や「ph」の音がないから、普通は「サイバー」みたいに発音されるんだ。

面白い事実:ゼロと数字はアラブ人によって発明されたわけじゃないよ。アラブ人は古代のヒンドゥー教徒/インド人から数学的ゼロ、数字、十進法、数学的計算の概念を学んだんだ。そしてアラブ人から、ヨーロッパ人がそれを学んだ。

それがメジャーゼロと彼の組織サイファーの説明になるね、メタルギアシリーズの中で。

ダッジソンの1867年のオリジナル論文は意外と読みやすいよ。数学の記法や用語が時間とともに変わるのに、驚くほど読みやすい。ジャバウォックもかなり読みやすいから、あまり驚くことじゃないね。

この場合、「読みやすい」というのは「理解しやすい」という意味だと思うけど、ジャバウォックにはあまり当てはまらないかもね(意図的にそうなってるし)。

仕事と子供たちで頭が疲れてないときに、ちゃんと座ってこれを読みたいな。

テレンス・タオがこれについてブログに書いてたよ。 https://terrytao.wordpress.com/2017/08/28/dodgson-condensati...

Hacker Newsで議論の続きを見る