Chapter 2
アルゴリズムとデータ構造の用語を順に解説します。
計算量のオーダー表記とは計算量のオーダー表記(O記法/オー記法)とは、アルゴリズム(問題を解く手順)の効率の良さを評価するために、処理を実行するのに必要な手間や時間が、処理するデータの量(N)が増えたときにどれくらい増加するかを大まかに表す記法です。コンピュータの性能や実行環境に関わらず、アルゴリズムそのものの純粋な「賢さ」を測るために使われます。データの数Nに対して、処理回数が比例して増える場合は「O(N)」、データの数の2乗で増える場合は「O(N^2)」のように表記します。Oの中の式が小さいほど、データ量が増え
動的計画法とは動的計画法(DP:Dynamic Programming)とは、大きな問題を解くために、それを小さな問題に分割して解き、その「途中の計算結果」をメモリなどに記録(メモ化)しておき、後で同じ計算が必要になったときに再利用するアルゴリズムの設計手法です。同じ計算を何度も繰り返す無駄を省くことで、処理時間を劇的に短縮することができます。通常、再帰呼び出しと呼ばれる手法などでは、過去に解いたはずの同じ問題を何度もゼロから計算し直してしまいますが、動的計画法では一度計算した結果を「テーブル(表)」に保存しておき
分割統治法とは分割統治法とは、そのままでは解決するのが難しい大きな問題を、いくつかの「扱いやすい小さな問題」に細かく分割し、それぞれの小さな問題を個別に解決(統治)してから、最後にその結果を組み合わせて元の大きな問題の答えを導き出す手法です。このアプローチはアルゴリズム設計の基本であり、特にデータを並び替える「ソート」や、データを検索する処理でよく使われます。問題を細かく分割するプロセスは、これ以上分割できない最小単位になるまで再帰的(繰り返し)に続けられ、小さな問題を一瞬で解いてから、ドミノ倒しのように組み上げて
平衡二分探索木とは平衡二分探索木とは、データを効率よく検索するための「ツリー構造(木構造)」の一種で、左右の枝のバランス(高さ)が常にほぼ均等に保たれるように自動的に調整されるデータ構造です。「AVL木」や「赤黒木」などが有名です。通常の二分探索木は、データを追加していく順番によっては、枝が片側だけに偏って長く伸びてしまい、データを検索する効率が著しく低下して単なるリストのようになってしまう欠点があります。平衡二分探索木では、データを追加・削除するたびに、ツリーの左右のバランスが崩れていないかをチェックし、崩れそう
ハッシュ衝突とはハッシュ衝突とは、異なるデータ(入力値)をハッシュ関数と呼ばれる計算式に通した結果、偶然にも「全く同じハッシュ値(出力されるコード)」が生成されてしまう現象のことです。ハッシュ関数は、どんな長さのデータからも、固定された短い長さ of ランダムな値(ハッシュ値)を作り出す便利な仕組みです。しかし、入力できるデータのパターンは無限にあるのに対し、出力されるハッシュ値のパターンは有限であるため、異なるデータから同じハッシュ値が生まれる可能性(衝突)はゼロにはできません。ハッシュ衝突が起きると、データの検
公式資料へのリンクと確認日を各記事に掲載しています。