このプロジェクトについて

このリポジトリは、Javaで書かれたアルゴリズムとデータ構造の実装を厳選して収集したものです。一般的な計算技法の正確でエレガントな実装を示すことを目的としており、開発者と学生にとっての参照ライブラリであり教育リソースでもあります。 このプロジェクトは、主要なセクションに整理された幅広いトピックをカバーしています: **データ構造**: 平衡木(AVL、Red-Black)、二分探索木、スプレー木、動的配列、Fenwick木、Fibonacciヒープ、ハッシュテーブル(複数の衝突解決戦略を含む)、連結リスト、優先度付きキュー(バイナリヒープ、D-ヒープ、インデックス付きバリアント)、キュー、セグメント木、スパーステーブル、スタック、接尾辞配列、トライ、Union-Find構造などがあります。 **動的計画法**: コイン問題、編集距離、ナップサック問題の変種、最大連続部分配列、最長共通部分列、最長増加部分列、最長回文部分列、巡回セールスマン問題、最小重み完全マッチングなどの古典的な問題を扱います。また、タイリング問題やアドホックな課題の例も含まれます。 **幾何学**: 2Dおよび3Dベクトル演算、円と直線の交差アルゴリズム、最近点対、凸包構築(Graham ScanおよびMonotone Chain)、多角形の面積と包含判定、三角形の面積計算、地理的な距離計算をカバーしています。 **グラフ理論**: 有力なセクションで、木アルゴリズム(ルート付け、同型判定、中心、直径、LCA)、ネットワークフローアルゴリズム(Ford-Fulkerson、Edmonds-Karp、Dinic's、容量スケーリング、最小費用最大流)、およびBFS、DFS、Dijkstra、Bellman-Ford、Floyd-Warshall、トポロジカルソート、最小全域木(Kruskal、Prim、Boruvka)、強連結成分(Tarjan、Kosaraju)、関節点、橋、オイラーパスなどの基本アルゴリズムが含まれます。 **線形代数**: ガウスの消去法、行列演算(行列式、逆行列、乗算、べき乗)、Freivaldのアルゴリズム、線形漸化式ソルバーが含まれます。 **数学**: 中国剰余定理、素数篩、オイラーのφ関数、拡張ユークリッド互除法、GCD、高速フーリエ変換など、数論のトピックをカバーしています。 このプロジェクトはビルドシステムとしてBazelを使用し(JDK 8+が必要)、個々のアルゴリズムの実行や完全なテストスイートの実行方法について明確な手順を提供しています。多くの実装には、William FisetのYouTubeチャンネルでの解説動画が併設されており、視覚学習者にとって利用しやすいものになっています。各アルゴリズムのエントリには通常、時間計算量が含まれ、コードはトピックごとに一貫した命名規則で整理されています。リポジトリはMITライセンスで提供され、BazelテストとREADME URLチェックのためのCI/CDバッジを含んでいます。