Python実装ノート: 確率・数論・線形代数・状態遷移

確率実験

対象ファイル:

examples/python/probability_experiments.py

乱数実験は直観の確認には有効だが、証明の代替にはならない。乱数を使うときは seed を固定し、理論値と実験値を区別する。

合同算術

対象ファイル:

examples/python/modular_arithmetic.py

a ≡ b (mod n) は、abn で割った余りを共有することを意味する。Python の % 演算子で確認できるが、逆元や gcd は定義から理解する必要がある。

Hamming距離

対象ファイル:

examples/python/hamming_distance.py

Hamming距離は、同じ長さの語を位置ごとに比較して、異なる位置を数える。

def hamming_distance(x: str, y: str) -> int:
    if len(x) != len(y):
        raise ValueError("same length required")
    return sum(a != b for a, b in zip(x, y))

状態遷移系

対象ファイル:

examples/python/state_transition.py

状態遷移系では、次状態が一つとは限らない。非決定性は set で表せる。

next_states: dict[State, set[State]]

safety の検査は「到達可能状態の中に悪い状態が存在しないこと」を確認する問題として書ける。