タグ

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

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

    はじめに グラフ最適化(Graph Optimization)は、パラメータをグラフ構造で表現し、最適化問題を解決する手法です。特にロボティクスなどの領域で広く活用されています。 以下に、グラフ最適化の応用例をいくつか挙げます。 Visual SLAMやSFMのバンドル調整(Bundle Adjustment)問題 Graph SLAMのループクロージング問題 経路計画問題(TEB, ebandなど) 実際のアプリケーションでは、ceresやgtsam、g2oなどのグラフ最適化ライブラリを利用することで、グラフ最適化問題を解決することができます。しかし、グラフ最適化の内部原理を理解していないと、性能の向上や課題の解決が困難になることが多いです。 筆者自身は、グラフ最適化の理解を深めるため、独自のグラフ最適化ライブラリをPythonで実装したことがあります。g2oなどの大規模なOSSと比較し

    グラフ最適化をマスターしよう! - 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

    これはどんな記事? 記事は、私がヒューリスティック関連の知識をまとめることになった際に作成したJupyter Notebookを、Qiitaの記事へと改変したものです。 前提としてこれは梅谷俊治先生の「しっかり学ぶ数理最適化 モデルからアルゴリズムまで」という(以下、教科書と表記)の内容に準拠しています。 そしてその内容の多くは、ありがたいことにネット上の様々な形で公開されており、梅谷先生によるスライド1やスライド2、日オペレーションズ・リサーチ学会(以下、ORと表記)での記事1や記事2、そしてORの他の方の記事1や記事2などでも類似した内容を見ることが可能です。 (そしてそれ故に、記事を公開させて頂いています。流石に家の方がネット上で公開されていない内容を書くのは、例え権利的に問題がないとしても気が引けるので……) また、この記事は、それらの内容を踏まえた上で、私がネット上の様

    しっかり学ぶ数理最適化 ヒューリスティック編 - 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

    はじめに 書籍化 記事を元に ゲームで学ぶ探索アルゴリズム実践入門~木探索とメタヒューリスティクス という書籍を出版することになりました! 記事を読んで気になっていただけたらご購入をご検討いただけるとうれしいです! この記事で得られる技術 ゲームルールに適した探索アルゴリズムを選択する ゲーム木探索をするのに適したクラス設計 主要なゲーム木探索アルゴリズムの実装 この記事の特徴 汎用アルゴリズムの実装例による他ゲームへの応用力と、実際に動作可能なサンプルコードによる具体的実装イメージの両視点でわかりやすくした(片方しか記載のない記事が多い) サンプルコード付き日語記事がほぼないDUCTを解説している サンプルコードは印のついたメソッドを実装したクラスさえ書けば、アルゴリズム部分を変更せずそのまま他のゲームで動作可能になっている この記事で扱わない関連技術 探索の高速化 多様性の確保

    世界四連覇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
  • Algorithms Tutorial - GeeksforGeeks

    Algorithm is a step-by-step procedure for solving a problem or accomplishing a task. In the context of data structures and algorithms, it is a set of well-defined instructions for performing a specific computational task. Algorithms are fundamental to computer science and play a very important role in designing efficient solutions for various problems. Understanding algorithms is essential for any

    Algorithms Tutorial - 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

    とても久しぶりです! 1 年ぶりの投稿となりました、大槻 (通称、けんちょん) です。 去年、『AtCoder 版!マスター・オブ・整数』と題して、プログラミングコンテストで出題される整数問題を解くときに有効な考え方を特集する記事を 2 書きました! AtCoder 版!マスター・オブ・整数 (素因数分解編) AtCoder 版!マスター・オブ・整数 (最大公約数編) 今回はその続編として、素数を列挙するアルゴリズムであるエラトステネスの篩を特集していきます。なお今回の記事の内容は、競プロへの応用を意識していますが、純粋に数学的興味に沿って読み進めることもできるものになっています。下図は、これから紹介するエラトステネスの篩のイメージ図です。 0. はじめに エラトステネスの篩は、$1$ 以上 $N$ 以下の素数をすべて列挙する方法です。たとえば $20$ 以下の素数を列挙すると、$2,

    エラトステネスの篩の活用法を総特集! 〜 高速素因数分解・メビウスの反転公式 〜 - 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件) yuki2006 2024-06-01 02:04:47 yukicoder Wikiが変更されました。 yuki2006 2024-06-01 01:54:17 yukicoder Wikiが変更されました。 yuki2006 2024-06-01 01:49:48 yukicoder Wikiが変更されました。 yuki2006 2024-06-01 01:45:10 yukicoder Wikiが変更されました。 yuki2006 2024-06-01 01:27:26 add FUNDING.ymlが変更されました。 このWikiについて ACの問題数が10以上の方であれば、誰でも編集することができます。 新しいページを作成するには /wiki/〇〇 とURLに入力し、右上の編集を押したら作成することができます。 サイト的にはまだ実装途中で、まだ編集履歴のU

  • アルゴリズム・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