タグ

Algorithmとalgorithmに関するtanakaBoxのブックマーク (301)

  • グラフ最適化をマスターしよう! - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? はじめに グラフ最適化(Graph Optimization)は、パラメータをグラフ構造で表現し、最適化問題を解決する手法です。特にロボティクスなどの領域で広く活用されています。 以下に、グラフ最適化の応用例をいくつか挙げます。 Visual SLAMやSFMのバンドル調整(Bundle Adjustment)→「解説記事」 Graph SLAMのループ閉じ込み問題→「解説記事」 経路計画問題(TEB, ebandなど)→(coming soon) 実際のアプリケーションでは、ceresやgtsam、g2oなどのグラフ最適化ライブラリを

    グラフ最適化をマスターしよう! - Qiita
  • テキストエディタで使われがちなデータ構造 Piece Table の概要と実装 - A Memorandum

    テキストエディタのデータ構造 Gap method Piece Table method Piece Table の構造 Piece Table の実装 Piece Table のメソッド まとめ テキストエディタのデータ構造 テキストエディタで採用されているデータ構造にはいろいろあります。 こちらの論文 Data Structures for Text Sequences では各種データ構造について比較検討されています。 多くは、Gap method や Piece table method をベースにしたものが多いのではないでしょうか(図で言う最下部の中心の丸印に当たります)。最近では Rope なども有名ですね。 Gap method Gap method では、現在のカーソル位置で、テキストバッファを2つに分割し Gap を間に挟み、カーソル位置に対する編集(テキスト追加/削除)を

    テキストエディタで使われがちなデータ構造 Piece Table の概要と実装 - A Memorandum
  • Policy Based Data Structures - 競プロ練習記録

    この記事はCompetitive Programming (2) Advent Calendar 2018およびISer Advent Calendar 2018 1日目の記事です。 CodeForcesやTopCoderで海外勢がよくヘッダーに #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> とかをインクルードしていますが、これのことです。日語の記事が見当たらなかったので書くか〜と思いましたが、書き始めると普通に見つかってしまいました。 hogloid.hatenablog.com ということでもうちょっと詳しく書くことにします。 Policy Based Data Structures (PBDS) 何ができるか k番目の値を高速に取り出せるデータ構造があります std::un

    Policy Based Data Structures - 競プロ練習記録
  • 数理最適化ことはじめ / Introduction to Mathematical Optimization

    スライドでは、数理最適化を概観し、基的な問題とその解き方を分かりやすく解説することを目標にしています。数理最適化に興味を持っていただければ嬉しいです。 【目次】 1 章 数理最適化とは(p.2~20) 2 章 連続最適化問題(p.21~133) 3 章 離散最適化問題(p.134~238…

    数理最適化ことはじめ / Introduction to Mathematical Optimization
  • 【連載】Let’s 競技プログラミング! E8さんが教える アルゴリズム発想のキホン

    競技プログラミング大会・AtCoderのレッドコーダーであるE8さんが、アルゴリズム発想のキホンをレクチャーします。

    【連載】Let’s 競技プログラミング! E8さんが教える アルゴリズム発想のキホン
  • しっかり学ぶ数理最適化 ヒューリスティック編 - Qiita

    導入 記事では、 発見的解法 (heuristics、ヒューリスティック) について扱います。 ヒューリスティックという単語の定義は、IoT用語辞書によると、 ヒューリスティック……(中略)……とは、ある程度正解に近い解を見つけ出すための経験則や発見方法のことで、「発見法」とも呼ばれます。いつも正解するとは限らないが、おおむね正解するという直感的な思考方法で、たとえば、服装からその人の性格や職業を判断するといったことは、ヒューリステックな方法といえます。理論的に正しい解を求め、コンピュータのプログラムなどに活用される「アルゴリズム」に対置する概念です。 となっています。 教科書における対応範囲は、大まかには4.6, 4.7節に相当します。なお、都合上教科書とは順番を少し変えて各内容を見ていくことにします。また、教科書に載っている内容の全ては、記事には載っておらず、逆もまた然りです。 前

    しっかり学ぶ数理最適化 ヒューリスティック編 - Qiita
  • 30 分でわかる!アルゴリズムの基本

    このスライドは、2022/4/14 に実施されたイベント『問題解決のための「アルゴリズム × 数学」- Forkwell Library #1』の基調講演を加筆修正したものです。実際の講演(35 分)を見たい方は、以下の URL をご覧ください。 https://www.youtube.com/wat…

    30 分でわかる!アルゴリズムの基本
  • 直感でわかる、ヒューリスティック問題の羅針盤 ~貪欲法から山登り法まで~ - Qiita

    1. はじめに 最初に、記事ではどのようなトピックを扱うのかについて、少し説明したいと思います。 1-1. 記事で扱うトピック 21 世紀になり、IT 化が急速に進む今、現実社会ではいろいろなものが最適化されて動いています。これを形作るプログラミングの現場でも、例えば以下のような問題を考えたり、あるいは実際に使ったりすることもあるのではないでしょうか1。いくつか例を挙げてみましょう。 例 1. コイン問題:特定の金額をぴったり支払うために、最小で何枚の硬貨が必要か? 例 2. 最短経路問題:地図上の A 地点から B 地点までに行くのに、最短で何メートル歩く必要があるか? 例 3. 箱詰め問題:長方形の箱に、できるだけ多くの荷物を敷き詰めたい 例 4. 数分割問題:「できるだけ合計の値が近くなるように」2 つのグループに分割したい このように、いろいろな問題があります(もちろん名前を覚

    直感でわかる、ヒューリスティック問題の羅針盤 ~貪欲法から山登り法まで~ - Qiita
  • 線形計画法使ってあすけんで100点とってみた - asken テックブログ

    今回テックブログを書くにあたり、以下の記事を参考にしました。 qiita.com こちらの記事では、マクドナルドのメニューを対象に組み合わせ最適化問題を扱っており、内容も非常に面白く読ませて頂きました。 今回、弊社askenでも自社データを使用して事の組み合わせ最適化問題をやってみたのでご紹介します。 はじめに こんにちは! askenで機械学習エンジニアとして働いているyumaです。 shoku_panという名前でTwitterをやってます。 さてみなさん、弊社ダイエットアプリ「あすけん」をご存知ですか? www.asken.jp あすけんでは、その日の事内容を記録すると栄養士の未来(みき)さんからアドバイスをもらえます。点数も出るので、高得点をとることがモチベーションになっている方もいらっしゃると思います。 もちろん僕も使っています。ちなみに今年のお正月はこのような結果になりました

    線形計画法使ってあすけんで100点とってみた - asken テックブログ
  • 世界四連覇AIエンジニアがゼロから教えるゲーム木探索入門 - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? はじめに 書籍化 記事を元に ゲームで学ぶ探索アルゴリズム実践入門~木探索とメタヒューリスティクス という書籍を出版することになりました! 記事を読んで気になっていただけたらご購入をご検討いただけるとうれしいです! この記事で得られる技術 ゲームルールに適した探索アルゴリズムを選択する ゲーム木探索をするのに適したクラス設計 主要なゲーム木探索アルゴリズムの実装 この記事の特徴 汎用アルゴリズムの実装例による他ゲームへの応用力と、実際に動作可能なサンプルコードによる具体的実装イメージの両視点でわかりやすくした(片方しか記載のない記事

    世界四連覇AIエンジニアがゼロから教えるゲーム木探索入門 - Qiita
  • Python言語による実務で使える100+の最適化問題 | opt100

    はじめに 書は,筆者が長年書き溜めた様々な実務的な最適化問題についてまとめたものである. 書は,Jupyter Laboで記述されたものを自動的に変換したものであり,以下のサポートページで公開している. コードも一部公開しているが,ソースコードを保管した Github 自体はプライベートである. を購入した人は,サポートページで公開していないプログラムを 圧縮ファイル でダウンロードすることができる. ダウンロードしたファイルの解凍パスワードは<に記述>である. 作者のページ My HP 書のサポートページ Support Page 出版社のページ Pythonによる実務で役立つ最適化問題100+ (1) ―グラフ理論と組合せ最適化への招待― Pythonによる実務で役立つ最適化問題100+ (2) ―割当・施設配置・在庫最適化・巡回セールスマン― Pythonによる実務で役立つ

  • アルゴリズムと数学の本を書きました - E869120's Blog

    1. はじめに こんにちは、はじめまして。東京大学 1 年生の米田優峻(E869120)と申します。私は競技プログラミング趣味で、AtCoder や国際情報オリンピックなどの大会に出場しています1。2021 年 11 月時点で、AtCoder では赤色(レッドコーダー)です。また、2020 年以降、アルゴリズムを学べる以下のようなコンテンツや資料を作成してきました。 レッドコーダーが教える、競プロ上達ガイドライン 競プロ典型 90 問 50 分で学ぶアルゴリズム さて、このたびは技術評論社から、書籍を出版させていただくことになりました2。アルゴリズムと数学が同時に学べる新しい入門書です。 「アルゴリズム×数学」が基礎からしっかり身につく - amazon 発売日は今年のクリスマス、2021/12/25 です。電子書籍版も同時期に出る予定です。記事では、このの内容と想定読者について、

    アルゴリズムと数学の本を書きました - E869120's Blog
  • DSA Tutorial - Learn Data Structures and Algorithms - GeeksforGeeks

    DSA stands for Data Structures and Algorithms. Data structures manage how data is stored and accessed. Algorithms focus on processing this data. Examples of data structures are Array, Linked List, Tree and Heap, and examples of algorithms are Binary Search, Quick Sort and Merge Sort. Why to Learn DSA?Foundation for almost every software like GPS, Search Engines, AI ChatBots, Gaming Apps, Databases

    DSA Tutorial - Learn Data Structures and Algorithms - GeeksforGeeks
  • 競技プログラミングにおける剰余の基礎と mod 逆元

    ▲「お兄ちゃん、最近『ABC 緑 diff を攻略する』っていうスライドを見たんだけど、要求される数学の知識に $\bmod$ 関連の知識が載ってるんだよね」 ■「ああ、最近は $\bmod$ 逆元を使う問題も緑あたりの難易度になるんだね」 ▲「で、このスライド、必要って言っときながら説明しないんだよねー」 ■「そうなんだ。実装は言語によるから、各自で調べてってことなのかな」 ▲「だから、教えて?」 ■「それはいいんだけど、そもそもどこまで知ってるの?」 mod の定義 ▲「$\bmod$ っていうのは、割った余りの話だよね」 ■「うん。整数を正整数で割ったときの余りを考える話だね」 ▲「で、“$a$ と $b$ をそれぞれ $M$ で割った余りが一致する” っていうのを、こんなふうに書くんだよね。“合同式” っていう名前があって、『$a$ と $b$ は $M$ を法として合同』って言っ

    競技プログラミングにおける剰余の基礎と mod 逆元
  • デバッグ力を高める! ~5 年間の経験から学んだ、競プロ・アルゴリズム実装におけるバグ取りの戦略~ - Qiita

    こんにちは、大学 1 年になったばかりの E869120 です。 私は 5 年前に趣味競技プログラミングを始め、AtCoder や日情報オリンピックなどに出場しています。ちなみに、2021 年 5 月 5 日現在、AtCoder では赤(レッドコーダー)です。 今回は、アルゴリズムや競技プログラミングの問題を速く解くために必要な、効率的なデバッグの方法について記したいと思います。是非お読みください。 1. はじめに 皆さんがプログラミングの問題を解いていく際に、次のような場面に遭遇したことはありますでしょうか。おそらく、読者の大半が「はい」と答えると思います。 ソースコードに謎のミスを埋め込んでしまったせいで D 問題が解けない… ああ、プログラムを 1 文字変えただけで WA(不正解)が AC(正解)に変わった、悲しい… このように、プログラムにバグ(プログラム実装上のミス)を埋め込

    デバッグ力を高める! ~5 年間の経験から学んだ、競プロ・アルゴリズム実装におけるバグ取りの戦略~ - Qiita
  • エラトステネスの篩の活用法を総特集! 〜 高速素因数分解・メビウスの反転公式 〜 - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? とても久しぶりです! 1 年ぶりの投稿となりました、大槻 (通称、けんちょん) です。 去年、『AtCoder 版!マスター・オブ・整数』と題して、プログラミングコンテストで出題される整数問題を解くときに有効な考え方を特集する記事を 2 書きました! AtCoder 版!マスター・オブ・整数 (素因数分解編) AtCoder 版!マスター・オブ・整数 (最大公約数編) 今回はその続編として、素数を列挙するアルゴリズムであるエラトステネスの篩を特集していきます。なお今回の記事の内容は、競プロへの応用を意識していますが、純粋に数学的興味に

    エラトステネスの篩の活用法を総特集! 〜 高速素因数分解・メビウスの反転公式 〜 - Qiita
  • 最適輸送の解き方

    最適輸送問題(Wasserstein 距離)を解く方法についてのさまざまなアプローチ・アルゴリズムを紹介します。 線形計画を使った定式化の基礎からはじめて、以下の五つのアルゴリズムを紹介します。 1. ネットワークシンプレックス法 2. ハンガリアン法 3. Sinkhorn アルゴリズム 4. ニューラルネットワークによる推定 5. スライス法 このスライドは第三回 0x-seminar https://sites.google.com/view/uda-0x-seminar/home/0x03 で使用したものです。自己完結するよう心がけたのでセミナーに参加していない人にも役立つスライドになっています。 『最適輸送の理論とアルゴリズム』好評発売中! https://www.amazon.co.jp/dp/4065305144 Speakerdeck にもアップロードしました: https

    最適輸送の解き方
  • yukicoder Wiki Wiki - yukicoder

    編集履歴 (最新5件) Nachia 2025-09-01 22:05:57 多項式を使うテクニックたちが変更されました。 yuki2006 2025-08-18 21:55:29 作問から公開までの流れが変更されました。 yuki2006 2025-03-08 14:00:31 リアクティブ形式の問題についてのまとめが変更されました。 yuki2006 2025-03-08 13:52:12 リアクティブ形式の問題についてのまとめが変更されました。 Tamiji 2025-01-07 19:30:50 初心者のためのガイドが変更されました。 このWikiについて ACの問題数が10以上の方であれば、誰でも編集することができます。 新しいページを作成するには /wiki/〇〇 とURLに入力し、右上の編集を押したら作成することができます。 サイト的にはまだ実装途中で、まだ編集履歴のUIが無

  • アルゴリズム・AtCoder のための数学【後編:数学的考察編】 - Qiita

    0. はじめに こんにちは、大学 1 年生になったばかりの E869120 です。記事は、 アルゴリズム・AtCoder のための数学【前編:数学的知識編①】 アルゴリズム・AtCoder のための数学【中編:数学的知識編②】 からの続きです!!! ※前編・中編を読んでいなくても理解できる、独立したトピックになっているので、ご安心ください。 後編から読む方へ 21 世紀も中盤に入り、情報化社会が急激に進行していく中、プログラミング的思考やアルゴリズムの知識、そしてアルゴリズムを用いた問題解決力が日々重要になっています。 しかし、アルゴリズム構築能力・競プロの実力は、単純にプログラミングの知識を学ぶだけでは身につきません。近年、数学的なスキルが重要になりつつあります。実際、私はこれまでの経験で「数学の壁で躓いた競プロ参加者」をたくさん見てきました。そこで記事では、 AtCoder のコン

    アルゴリズム・AtCoder のための数学【後編:数学的考察編】 - Qiita
  • アルゴリズム・AtCoder のための数学【中編:数学的知識編②】 - Qiita

    4. アルゴリズムと密接に関わる数学<中級編> 2 章では問題文を読むために必要なテクニックを 12 個のポイントに絞ってまとめました。しかし、競プロに出題されるようなアルゴリズムだけを考えても、数学と結びつく場面はまだまだたくさんあります。例えば、 3-2. 節では、二分探索の計算量 $O(\log N)$ と対数関数の関係 3-6. 節・3-7. 節では、幾何計算と三角関数・ベクトルの関係 3-11. 節では、経路の数の計算とフェルマーの小定理の関係 について紹介してきました。4 章ではさらに追加で 8 個のトピックを紹介し、アルゴリズムを数学的側面から捉えていきたいと思います。皆さんにアルゴリズムと数学が如何に密接に関わっているかを体感してもらうことが最大の目標です。 なお、3 章・4 章の構成は次のようになっています。 4-12. 最大値検索に学ぶ、微分法(レベル:3) まず、次の

    アルゴリズム・AtCoder のための数学【中編:数学的知識編②】 - Qiita