タグ

algorithmに関するykikuchiのブックマーク (9)

  • BFS (幅優先探索) 超入門! 〜 キューを鮮やかに使いこなす 〜 - Qiita

    0. はじめに メジャーなグラフ探索手法には深さ優先探索 (depth-first search, DFS) と幅優先探索 (breadth-first search, BFS) とがあります1。このうち DFS については DFS (深さ優先探索) 超入門! 〜 グラフ理論の世界へ 〜 【前編】 DFS (深さ優先探索) 超入門! 〜 グラフ理論の世界へ 〜 【後編】 にて詳しく特集しました。これらの記事中で幅優先探索 (BFS) についても簡単に触れているのですが、今回改めて特集します。特に、後編で紹介した グラフの二点間の到達可能性 グラフの連結成分の個数 二部グラフ判定 トポロジカルソート サイクル検出 といった問題たちが BFS によっても解くことができることを示します。一つの問題を DFS・BFS と様々な探索手法で解くことで、グラフの様々な性質をより深く親しむことを狙います。

    BFS (幅優先探索) 超入門! 〜 キューを鮮やかに使いこなす 〜 - Qiita
  • うさぎでもわかる離散数学(グラフ理論) 第12羽 幅優先探索・深さ優先探索

    こんにちは、ももやまです。 今回はグラフをコンピュータ上で探索する方法のうち、よく使われる幅優先探索と深さ優先探索について説明していきたいと思います。 前回の記事 www.momoyama-usagi.com 1.探索とは 例えば、図の \( s \) から \( v_7 \) までの辺のたどる方法を考えてみましょう。 我々人間であれば、\[ s \to v_1 \to v_3 \to v_4 \to v_7 \\ s \to v_1 \to v_3 \to v_2 \to v_5 \to v_6 \to v_7 \]のように好き勝手にたどることができますね。 しかし機械(コンピュータ)は人間のようにやみくもにたどっていくことができません。なのである程度たどり方の方針を命令(プログラム)してあげなければなりません。 そこで今回はたどり方のの命令でよく使われる幅優先探索(横型探索)と深さ優先

    うさぎでもわかる離散数学(グラフ理論) 第12羽 幅優先探索・深さ優先探索
  • C#で多量データを持ったCSVファイルを読み込みソートする

  • 【C#】深さ優先探索(DFS)を実装してみる - はなちるのマイノート

    はじめに 今回は深さ優先探索を実装してみようという記事になります! 深さ優先探索とはこちら。 木やグラフを探索するためのアルゴリズムである。アルゴリズムは根から(グラフの場合はどのノードを根にするか決定する)始まり、バックトラックするまで可能な限り探索を行う。 深さ優先探索 - Wikipedia 幅優先探索(BFS)と似たアルゴリズムですが、計算量は幅優先探索の空間計算量より最悪のケースでは同じだけれど一般的なケースではずっと小さいそうです。 計算量は グラフ (頂点がV個,辺がE個) においてです。 早速詳しくみていきましょう。 はじめに 実装方針 コード 使い方 さいごに 実装方針 スタックを用いた方法と再帰関数を用いた方法がありますが、今回はスタックを用いた方法を選択します。 流れはこんな感じ。 始点のノードをスタックに入れる スタックにノードがあれば取り出し、なければ探索を終了す

    【C#】深さ優先探索(DFS)を実装してみる - はなちるのマイノート
  • 第 7 章: グラフ (graph) — WTOPIA v1.0 documentation

    7.0 グラフとは¶ グラフ (graph) は節点 (node, 頂点: vertex) を辺り (edge, 枝: branch) で結んだもの次のように表せる. 隣接行列 (Adjacency Matrix) を使って, 表すと: 8 X 8 の隣接行列: 1 2 3 4 5 6 7 8 --------------- 1 0 1 0 0 0 0 0 0 2 1 0 1 1 0 0 0 0 3 0 1 0 0 0 0 1 0 4 0 1 0 0 1 0 0 0 5 0 0 0 1 0 1 0 0 6 0 0 0 0 1 0 1 1 7 0 0 1 0 0 1 0 1 8 0 0 0 0 0 1 1 0 ----------------

  • DFS (深さ優先探索) 超入門! 〜 グラフ・アルゴリズムの世界への入口 〜【前編】 - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? 0. はじめに --- グラフ探索の動機 現代ではコンピュータはとても身近なものになりました。コンピュータの用途としては シミュレーションなどの大規模計算を行う 人工知能をつくる アプリを開発する などなど多様なものが考えられますが、「探索」もまた、コンピュータを用いるモチベーションとして、最も基的かつ重要なものの一つだと思います。探索とは、与えられた対象の中から、目的に合うものを見つけ出したり、最良のものを見つけ出したり、条件を満たすものを列挙したりする営みです。 世の中における様々な問題は、探索によって、考えられる場合を調べ尽くす

    DFS (深さ優先探索) 超入門! 〜 グラフ・アルゴリズムの世界への入口 〜【前編】 - Qiita
  • あのアルゴリズムはどこ? Pythonを使用してAtCoderの緑色や水色を目指す方に、30以上のアルゴリズムスニペットと100問以上の問題(ACコード付き)を紹介! - Qiita

    0.はじめに 2020年の5月よりAtcoderのコンテストに参加してから一年経った、現在水色コーダーとなりました、H20と申します。 AtCoderではPythonを使用して参加しており、水色になるまでに様々なアルゴリズムを使用しました。 アルゴリズムについてはほとんど自作せず、有識者の作成されたスニペットを調べては、ある程度理解しながら使用していました。 この記事では、Pythonにてあるアルゴリズムを使用する際にお勧めな書き方の説明をしているスニペットの記事に、それを利用してACしたコードを添えて紹介していきたいと思います。 (ただ、私のACコードは極力見ないで自力で解いてください。綺麗とは言い難いので…) 1.目次 ※各アルゴリズムで紹介している問題は、感覚的な難易度順に並べています。基的に後半は解けたら凄い!くらいの想いで載せてます。 解き方は多種多様であり、特に難易度の低い問

    あのアルゴリズムはどこ? Pythonを使用してAtCoderの緑色や水色を目指す方に、30以上のアルゴリズムスニペットと100問以上の問題(ACコード付き)を紹介! - Qiita
  • クイックソート

    クイックソートはピボット値を基準としてデータを分割し、分割後のデータに対して(ソートが完了するまで)同じ手法を適用していく高速なソートアルゴリズム。 連載目次 クイックソートはデータを並べ替えるソート手法の1つで、何らかの値を基準としてそれより大きな値と小さな値に分け、分割されたそれぞれに対して、並べ替えが完了するまで同じ手法を適用していく。理想的な状況では、クイックソートは他のソート手法よりも高速に並べ替えを行える。 クイックソートのアルゴリズム クイックソートでは、「ピボット」と呼ばれる何らかの基準値を選定し、並べ替えの対象となるデータを、ピボット値よりも大きい(または以上)/小さい(または以下)値の集合に並べ替える(これを「パーティショニング」と呼ぶ)。そして、並べ替えられた2つのデータ群に対して、再度同じアルゴリズムを再帰的に適用していく。データが1個以下となった時点で、そのデータ

    クイックソート
  • 「アルゴリズム」との出会い系マッチングサイト

    あ、どうも。なんかアルゴリズムさんと気が合いそうかなって。 マッチングサイトは、人と人の色恋の場だけの話じゃないわけです。一緒に働く仲間や、旅するパートナーをマッチングさせる場合もあるわけです。そもそも、人と人だけがマッチングのすべてではないのです。アルゴリズムと私の出会いだって立派なマッチングですから。 とあるスタートアップサーヴィスのAlgorithmiaは、アルゴリズムのマッチングが目当て。研究者やデータ分析を行なう人が、自分の持つデータをどのようなアルゴリズムで解けばいいのか、それをマッチングしてくれます。 アカデミックな業界では、日々多くの研究で専用のアルゴリズムが作られ使われていますが、そのアルゴリズムが他の研究で使われることはあまりありません。たとえ1つの研究のために特別に作られたアルゴリズムでも、他の研究でちょっと目線を変えれば使えることが多々あるのに…これはもったいない。

  • 1