約 1,380,014 件
https://w.atwiki.jp/sevenlives/pages/354.html
配列 ゲーム木 ソート・アルゴリズム データ圧縮? 暗号化アルゴリズム? 検索アルゴリズム ヒューリスティクス 分散アルゴリズム 乱択アルゴリズム Luhnアルゴリズム O記法? B-Tree? ヒープソート? ダイクストラ法? バックトラック? モンテカルロ法? ラスベガス法? シャッフル?Fisher-Yates shuffle?
https://w.atwiki.jp/ookubo/pages/33.html
アルゴリズム C/C++のアルゴリズム1- C/C++のアルゴリズム2- 物理系のアルゴリズム- バイナリの読み書き-
https://w.atwiki.jp/omoshiro2ch/pages/38.html
アルゴリズム 十問目 アルゴリズム1 ○ アルゴリズム2 --
https://w.atwiki.jp/projecthikky/pages/114.html
さまざまなプログラミングしていく上でアルゴリズムやデータ構造の選択が大事になってくる場面があります このページでいくつかアルゴリズムやデータ構造を紹介できるといいと思います アルゴリズムやデータ構造が重要になる場面は 大量のデータを分類や分析や解析をしたいときやゲームAIを作りたいときなどがよくある事例だと思います 選択するデータ構造やアルゴリズムによって処理にかかる時間や必要なメモリ量などが違ってきます 作りたいプログラムに合わせて適切なアルゴリズムやデータ構造を選択できるようになるのが理想です そのために色々なアルゴリズムやデータ構造が存在するということを知るのが大事になります (名前や用途や性能だけでも把握しておくことが大事です) 競技プログラミングの場合は自分で実装しなければならない場面が多いですので実装法を知る必要がありますが それ以外の場面では誰かが実装した有償・無償のライブラリやコードを利用することになると思います アルゴリズムやデータ構造のリンク集 色んなアルゴリズムやデータ構造の実装例が載ってるサイト Spaghetti Source 旧 http //www.prefield.com/algorithm/ 新 https //github.com/spaghetti-source/algorithm アルゴリズムやデータ構造の概要等がまとめられている http //home.wakatabe.com/ryo/wiki/index.php?%E3%82%A2%E3%83%AB%E3%82%B4%E3%83%AA%E3%82%BA%E3%83%A0 このwikiのページ一覧 ※各アルゴリズム/データ構造のリンク集のページになってます ※難易度の分類は編者の感覚で付けた適当なので不適切なものもあります ※編者募集中 名前 概要や用例や用途など 難易度(低) 総当り(ブルートフォース) その名の通り、全ての解の候補を調べる手法。全探索とも呼ぶ。 キュー(FIFO) 先入れ先出しのデータ構造。幅優先探索などに使われる。 スタック(LIFO) 後入れ先出しのデータ構造。深さ優先探索などに使われる。 両端キュー(deque) ハッシュテーブル 二分木 バブルソート 隣り合う2つの要素を比較してスワップを繰り返していくソートアルゴリズム。計算量はO(N^2)と遅いが直感的には分かりやすい。 マージソート ソートしたい配列を半分に区切り、それらを別々に再帰的にソートしてマージするアルゴリズム。計算量は比較ソートの理想値であるO(NlogN)。安定ソートでもある。 挿入ソート 選択ソート クイックソート バケットソート 幅優先探索(BFS) スタートからゴールまでの最短距離を計算するとか 深さ優先探索(DFS) スタートからゴールまでのルートを見つけ出すとか 二分探索 ソートされた配列から目的の値を探すときに、探索範囲を半分、半分、・・・と削っていくアルゴリズム。計算量はO(logN)と高速。探索以外にも最小値や最大値を求める問題にも応用できる。 累積和 配列のある区間の和を高速に求めたいというときに使われる。配列の先頭からi番目までの和を計算した配列を別に持っておくことで、ある区間の和がO(1)で求められるというテクニック。 しゃくとり法 最小二乗法 二分法 ニュートン法 ヒープ木 分割統治法 木の直径 木構造の2頂点間の距離で最も距離の長いペアを1つ見つけるアルゴリズム 難易度(中) 平衡二分木 赤黒木 平衡二分木の一種 AVL木 平衡二分木の一種 ワーシャルフロイド法(WF) グラフの全ての2点間の最短距離を求めたいときに使われるアルゴリズム。頂点数をNとすると計算量はO(N^3)。辺の重みが負であっても適用でき、負閉路があればそれを検出することも可能。 最小全域木 ダイクストラ法 グラフのある始点から全ての頂点への最短距離を求めたいときに使われるアルゴリズム。頂点数をN、辺の数をMとすると計算量はO((N+M)logN)。辺の重みが全て非負でないと適用できないことに注意。 素集合データ構造(UnionFind/DisjointSet/UF) 2つの集合を1つにまとめたり、ある2つの要素が同じ集合に属しているかを高速に判定することを可能にするデータ構造。Nを要素数とすると、各操作のならし計算量はO(A(N))となる。A(N)はアッカーマン関数の逆関数で増加速度が非常に遅く、実質O(1)と考えても問題は無い。 FenwickTree(BinaryIndexedTree/BIT) 部分的な値の更新を繰り返す必要のあるデータの累積和を高速取得できるデータ構造。値の更新、累積和の取得がどちらもO(logN)で出来る。セグメント木の機能制限版のようなものであるが、こちらのほうが定数倍速い、実装が軽いなどの長所がある。 動的計画法(DynamicProgramming/DP) 小さい部分問題の解を利用してより大きな部分問題の解を求めることを繰り返す手法。部分問題の解を記録しておくことと漸化式を用いることがポイント。非常に応用範囲が広く、競技プログラミングにおいても必須のテクニックである。代表的な問題としてナップサック問題がある。 線型計画法(LinearProgramming/LP) 貪欲法(GreedyAlgorithm/GA) 後のことは考えずにその時その時での最適行動を取っていく手法。探索範囲を大きく狭められるので計算量を劇的に改善することも出来るが、その貪欲法で正しい解答が得られるかは慎重に考える必要がある。正しい解が得られない貪欲法を嘘貪欲と言ったりする。 トライ木(TrieTree) セグメント木 トポロジカルソート 三分探索 難易度(高) k平均法 高速フーリエ変換(FFT) モンテカルロ法 A*サーチ(Aスターサーチ) タブーサーチ ビームサーチ 山登り法(HC) 焼きなまし法(SA) いもす法(imos法) chokudaiサーチ 内容が存在するページ FenwickTree(BinaryIndexedTree) ダイクストラ法 ワーシャルフロイド法(WF) 木の直径 素集合データ構造(UnionFind)
https://w.atwiki.jp/charolles/pages/24.html
アルゴリズム 画像圧縮アルゴリズム
https://w.atwiki.jp/shomen-study7/pages/741.html
アルゴリズム (algorithm) ある方法に基づいて行えば、必ず問題解決に辿り着くという、情報処理における処理手順のこと。 問題の解決が保障されてはいるが、多くの時間と労力を要する場合いが多いことが欠点である。 これに対して、蓋然性(可能性)、類似性に基づき、必ずしも成功するとは限らないが、成功すればかなりの時間と労力を節約することができるような手続きを、ヒューリスティクス(heuristics)という。 各手続きの例としては、以下のようなものがある。 EX) 電話帳を使用して自分の親戚を見つけたい場合。 アルゴリズム的手続き : 電話帳の始めから一人ずつ電話をかけていく。 ヒューリスティクス的手続き : 自分と同じ姓の人から順に電話をかけていく。 saya
https://w.atwiki.jp/masuhara/pages/52.html
再帰とは 世界最古のアルゴリズム・ユークリッド互除法で最大公約数① 世界最古のアルゴリズム・ユークリッド互除法で最大公約数② 世界最古のアルゴリズム・ユークリッド互除法で最大公約数③ ゲーマーでなくても知っておきたいアルゴリズム集 ゲームのアルゴリズム40 迷路のアルゴリズム マリオのジャンプアルゴリズム
https://w.atwiki.jp/dactiltoeb/pages/400.html
アルゴリズム ステータス コードネーム 風神 クラス バルタン 装備 エウロス 疾風の指輪? 建国暦 紹介 テスト
https://w.atwiki.jp/naobe/pages/155.html
ソフトウェア共通に戻る トポロジカルソート http //www.geocities.jp/oraclesqlpuzzle/csharp/csharp-8-18.html 参照 閉路のない有向グラフ(Directed Acyclic Graph)(DAG)をソートする。結合ノードごとに経路をソートする。ジョブの実行順序を求めるために使う。 ハッシュ SDBM http //www.cse.yorku.ca/~oz/hash.html 参照 sdbm(ndbmのpublic domain reimplimentation)データベースライブラリ用に作成された。ビットスクランブルが良い。 実質の機能は、hash(i) = hash(i - 1) * 65599 + str[i]。バークレーDBでは以下のアルゴリズムを使っている、 static unsigned long sdbm(str) unsigned char *str; { unsigned long hash = 0; int c; while (c = *str++) hash = c + (hash 6) + (hash 16) - hash; return hash; }
https://w.atwiki.jp/sms20120113/pages/67.html
日時 毎週火曜日 20 00~21 30 テキスト 『Introduction to Algorithms (MIT Press) (英語)』 - Thomas H. Cormen (著), Charles E. Leiserson (著), 他2名 前提知識 高校数学 プログラミングの経験 などが前提知識としてあるとベストですが、無くてもどうにかなると思われます アルゴリズム解析概説 アルゴリズム解析とは、アルゴリズムの実行に必要とされるリソース(時間や記憶領域)量を見積もることである。アルゴリズムの「効率」や「複雑さ」は一般に、入力長からそのアルゴリズムを実行するのに必要なステップ数(時間複雑性)や記憶領域サイズ(空間複雑性)への関数として表される。(Wikipedia抜粋) また、学習については英語書籍を利用するが、翻訳済みの書籍も存在しています。 備考 聴講可能 現在メンバー募集中 活動報告 -1.2016/12/27 第1章―第1節 -2.2017/01/03 第1章―第2節~第2章-第1節(挿入ソートの証明まで) -3.2017/01/10 第2章―第1節 -4.2017/01/17 第2章―第2節(挿入ソートのアルゴリズム解析直前まで) -5.2017/01/31 第2章―第2節~第2章-第3節(分割統治法まで) -6.2017/02/07 第2章―第3節(p35冒頭まで) -7.2017/02/21 第2章―第3節~第2章-章末問題(章末問題 2-1まで) -8.2017/02/28 第2章-章末問題 -9.2017/03/07 第3章-第1節(Ω記法の解説まで) -10.2017/03/14 第3章-第1節(練習問題3.1-2まで) -11.2017/03/21 第3章-第1節~第3章-第2節(指数関数まで) -12.2017/03/28 第3章-第2節 -13.2017/04/04 第3章-章末問題(3.1~3.3まで) -14.2017/04/11 第3章-章末問題(3.4~3.5まで) -15.2017/04/18 第3章-章末問題(3.6) -16.2017/04/25 第4章-序文 -17.2017/05/02 第4章-第1節 -18.2017/05/09 第4章-第2節 -19.2017/05/16 第4章-第3節 -20.2017/05/23 第4章-第4節(練習問題手前まで) -21.2017/05/30 第4章-第5節~第4章 章末問題 -22.2017/06/06 第5章-第1節~第5章-第2節の途中まで -23.2017/06/13 第5章-第2節~第5章-第3節の途中まで -24.2017/06/20 第5章-第3節まで -25.2017/06/27 第5章-第4節まで -26.2017/07/04 第5章-章末問題 -27.2017/07/18 第6章-第1節 次回予告 07/25 20 00 ~ 21 30 第6章-第2節から