タグ

algorithmとprogrammingに関するgriefworkerのブックマーク (12)

  • テキストエディタで使われがちなデータ構造 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
  • レッドコーダーが教える、競プロ・AtCoder上達のガイドライン【上級編:目指せレッドコーダー!】 - Qiita

    そのうち、最初の 12 個(表の 1 ~ 3 行目)をマスターする方法は、中級編 2-2-2. 節で解説がされていますので、こちらをご覧ください。節では、残りの 11 個を理解できる記事たちを紹介したいと思います。 座標圧縮 まとまった解説記事が見つからないので、こちらで簡潔に解説しておきます。 座標圧縮とは、とても大きい座標があって現実的に扱えないサイズである場合に、圧縮して計算量を抑えるというテクニックです。以下の画像のように、相対的な位置関係が崩れないように圧縮します。(一次元の場合でも、二次元の場合でも通用します。) 実装などを含めた詳しい部分は、以下の記事に書かれています。 座標圧縮について勉強した (java)| バイトの競プロメモ 座標圧縮| 個人的な競プロメモ 半分全列挙 $N$ 通りの全列挙を $O(\sqrt{N})$ 程度の計算回数で効率的に計算する手法です。以下の

    レッドコーダーが教える、競プロ・AtCoder上達のガイドライン【上級編:目指せレッドコーダー!】 - Qiita
  • レッドコーダーが教える、競プロ・AtCoder上達のガイドライン【中級編:目指せ水色コーダー!】 - Qiita

    それらのアルゴリズムが学習できる記事たちなどを紹介します。 全探索 全探索には、「全列挙」「ビット全探索」「順列全探索」「再帰関数を用いた全探索」など多くの種類に分かれます。しかし、基的に以下の記事を読めば全部理解できます。 全列挙 たのしい探索アルゴリズムの世界【前編:全探索、bit全探索から半分全列挙まで】 の 2 章 その他の全探索 たのしい探索アルゴリズムの世界【前編:全探索、bit全探索から半分全列挙まで】 の 3 章 二分探索 アルゴリズムの代表例ともいわれる二分探索は、以下の 2 記事で解説されています。 二分探索とは:アルゴリズムを勉強するなら二分探索から始めよう! 『なっとく!アルゴリズム』より 競プロで使える二分探索:二分探索アルゴリズムを一般化 〜 めぐる式二分探索法のススメ 〜 【補足】二分探索に類似したアルゴリズムとして「二分法」があります。それについて詳しく知

    レッドコーダーが教える、競プロ・AtCoder上達のガイドライン【中級編:目指せ水色コーダー!】 - Qiita
  • レッドコーダーが教える、競プロ・AtCoder上達のガイドライン【初級編:競プロを始めよう】 - Qiita

    こんにちは、高校 2 年生の E869120 です。 私は競技プログラミング趣味で、AtCoder や日情報オリンピックなどの各種コンテストに出場しております。ちなみに、2020 年 2 月 19 日現在、AtCoder では赤(レッドコーダー)です。 今回は、競技プログラミング上達のためのガイドラインを記します。初級編では未経験者が競プロを始めるところからサポートしますので、是非お読みください。 【シリーズ】 レッドコーダーが教える、競プロAtCoder上達のガイドライン【初級編:競プロを始めよう】 ←記事 レッドコーダーが教える、競プロAtCoder上達のガイドライン【中級編:目指せ水色コーダー!】 レッドコーダーが教える、競プロAtCoder上達のガイドライン【上級編:目指せレッドコーダー!】 0. はじめに 皆さん、競技プログラミング (競プロ) をご存知でしょうか。

    レッドコーダーが教える、競プロ・AtCoder上達のガイドライン【初級編:競プロを始めよう】 - Qiita
  • BFS (幅優先探索) 超入門! 〜 キューを鮮やかに使いこなす 〜 - Qiita

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

    BFS (幅優先探索) 超入門! 〜 キューを鮮やかに使いこなす 〜 - Qiita
  • DFS (深さ優先探索) 超入門! 〜 グラフ・アルゴリズムの世界への入口 〜【後編】 - Qiita

    目次 DFS (深さ優先探索) 超入門! 〜 グラフ理論の世界へ 〜 【前編】 からの続きです!! 前編 0 章: はじめに 1 章: グラフとは 2 章: 計算機上でのグラフの表し方 3 章: 深さ優先探索 (DFS) と幅優先探索 (BFS) 後編 (いまここ) 4 章: グラフの様々な例題 5 章: 発展的話題 6 章: おわりに 7 章: 参考文献 4. グラフ上の様々な例題 いよいよ、深さ優先探索 (DFS) を用いて、グラフに関する様々な問題を解いてみましょう。グラフの連結性に関する問題の多くが、単純な探索によって解決できることがわかります。 そしてグラフ探索はとにかく「習うより慣れろ」の精神が重要なテーマでもあります。記事では、グラフの連結性に関する諸概念に親しみながら、探索にも慣れるという一石二鳥を狙います。なお、ここで取り上げる問題のほとんどは DFS だけでなく BF

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

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? 0 はじめに プログラミングコンテストチャレンジブック (通称、蟻) は日競技プログラミングの普及に多大な貢献を果たしています。多くの競技プログラマたちが蟻を手に取りながらコンテストの世界に没入して行きます。しかしながら発売から 6 年以上経過する間に競技プログラミング界隈には大きな変化がありました。蟻的に影響が大きいのは以下の点です: POJ が国内ではあまり使用されなくなった (計算速度が遅いなど) AtCoder 上で問題を解くことが盛んになった 今回はこの完全解決を試みます。具体的には、蟻に載っている例題たち (ほと

    AtCoder 版!蟻本 (初級編) - Qiita
  • アルゴリズムとは何か!? ~ 文系理系問わず楽しめる精選 6 問 ~ - Qiita

    今の場合は A さんが 31 歳の場合のストーリーでしたが、A さんが 20 歳~ 35 歳のうちのどの年齢であったとしても、似たようなストーリーで必ず 4 回の質問で当てることができます!(他の例も是非考えてみてください。) ちなみに、このような「真ん中で切ってどちらかに絞って行く」タイプのアルゴリズムには二分探索法という名前がついています。応用情報技術者試験でも頻出のテーマですので馴染みのある方も多いと思います。 1-2. つまり、アルゴリズムとは 上の年齢当てゲームという問題では、相手の年齢を当てる「方法・手順」を二分探索法に基づいて導きました。このようにアルゴリズムとは、 問題を解くための方法・手順 のことです。さて、アルゴリズムと聞くと「コンピュータ上で実装されたプログラム」のことを思い浮かべる方も多いと思いますが、必ずしもコンピュータと関係がある必要はなく、日常生活でも多々登場

    アルゴリズムとは何か!? ~ 文系理系問わず楽しめる精選 6 問 ~ - Qiita
  • 計算量オーダーの求め方を総整理! 〜 どこから log が出て来るか 〜 - Qiita

    NTT データ数理システムでリサーチャーをしている大槻 (通称、けんちょん) です。今回は計算量オーダーの求め方について書きます。 0. はじめに 世の中の様々なシステムやソフトウェアはアルゴリズムによって支えられています。Qiita Contribution ランキング作成のために用いるソートアルゴリズムのような単純なものから、カーナビに使われている Dijkstra 法、流行中のディープラーニングに用いられている確率的勾配降下法など、様々な場面でアルゴリズムが活躍しています。アルゴリズムとはどんなものかについて具体的に知りたい方には以下の記事が参考になると思います: アルゴリズムとは何か ~ 文系理系問わず楽しめる精選 6 問 ~ アルゴリズムを学ぶと $O(n^2)$ や $O(n\log{n})$ や $O(2^n)$ といった計算量オーダーの概念が登場します。こうした記法を見ると

    計算量オーダーの求め方を総整理! 〜 どこから log が出て来るか 〜 - Qiita
  • GeoHashのdecodeのアルゴリズムの解説します & ScalaのGeoHashライブラリを作ってみました(仮) - ( ꒪⌓꒪) ゆるよろ日記

    GeoHash(http://en.wikipedia.org/wiki/Geohash)は、緯度経度を文字列のハッシュで表現する仕様です。 GeoHashにより表現された緯度経度の情報は、一つの文字列で緯度と経度という2次元の情報に加えて精度も表すことができるという特徴を持っています。 例えば、どうでしょうバカの聖地である北海道札幌市の平岸高台公園は、北緯43.025東経141.377ですが、これをGeoHashで表現すると、"xpssc0"となります。 この"xpssc0"というGeoHash表現は、「北緯43.0224609375から43.0279541015625の間で、東経141.3720703125から141.383056640625の矩形範囲」であり、座標はこの矩形範囲の中心点になります。 @masuidrive blogさんの緯度経度を文字列で表すGeoHash - @ma

    GeoHashのdecodeのアルゴリズムの解説します & ScalaのGeoHashライブラリを作ってみました(仮) - ( ꒪⌓꒪) ゆるよろ日記
  • 実行時間の差は996倍以上。オンラインハッカソン最速コードの裏側に迫る! -

    2013年12月2日より2014年1月8日まで開催していたpaizaオンラインハッカソン(略してPOH![ポー!])Vol.1「新人女子の書いたコードを直すだけの簡単なお仕事です!」で0.01秒を叩き出したコード(最遅コードとの差は最大996倍! 詳しくは結果発表をご確認ください)はどんな過程で生み出されたのでしょうか? 今回は前回の最速コード発表レポート(【結果発表】新人女子PGを最も助けたプログラミング言語とは?)に引き続き、最速コードの裏側に迫ります。 ※ちなみにこちらの野田ちゃん画像は、2014年1月17日に開催されたエンジニアサポートcross2014というイベントで等身大パネルとしてpaizaブースを盛り上げてくれました! ■高速化のアプローチ 前回のレポートでもふれましたが、POH Vol.1はアルゴリズムに変更による計算量(オーダー)の改善による大幅な高速化と、定数倍高速化

    実行時間の差は996倍以上。オンラインハッカソン最速コードの裏側に迫る! -
    griefworker
    griefworker 2014/02/05
    アルゴリズムを勉強し直さないといけないな。
  • 「最強最速アルゴリズマー養成講座」関連の最新 ニュース・レビュー・解説 記事 まとめ - ITmedia Keywords

    最強最速アルゴリズマー養成講座: そのアルゴリズム、貪欲につき――貪欲法のススメ アルゴリズムの世界において、欲張りであることはときに有利に働くことがあります。今回は、貪欲法と呼ばれるアルゴリズムを紹介しながら、ハードな問題に挑戦してみましょう。このアルゴリズムが使えるかどうかの見極めができるようになれば、あなたの論理的思考力はかなりのレベルなのです。(2010/9/4) 最強最速アルゴリズマー養成講座: 病みつきになる「動的計画法」、その深淵に迫る 数回にわたって動的計画法・メモ化再帰について解説してきましたが、今回は実践編として、ナップサック問題への挑戦を足がかりに、その長所と短所の紹介、理解度チェックシートなどを用意しました。特に、動的計画法について深く掘り下げ、皆さんを動的計画法マスターの道にご案内します。(2010/5/15) 最強最速アルゴリズマー養成講座: アルゴリズマーの登

    griefworker
    griefworker 2011/01/23
    アルゴリズムの勉強はあまりしていないから、ここの記事を繰り返し読もう。
  • 1