DummyWittyのブックマーク (1,271)

  • 接尾辞配列(Suffix Array) - Shogo Computing Laboratory

    接尾辞配列(Suffix Array)は,全文検索などに用いられるデータ構造です. それ以外にも,単語の出現回数を高速に求められたり, データ圧縮に使えたりなど,様々な応用例が提案されています. 2012年現在,SA-ISと呼ばれる手法がもっとも効率的に Suffix Array を求められるようです. その基礎となる考え方を1つずつ見ていくことにしましょう. Suffix Arrayとは Suffix Array とはどんなものなのでしょう? 定義にそった,もっとも簡単なアルゴリズムを紹介します. バケットソート 基数ソートとバケットソートは,ソートする対象の種類が有限で範囲がはっきりしている場合に 非常に有効なソート手法です. これを使って Suffix Array を求めてみます. 2段階ソート 隣り合った接尾辞の比較は非常に簡単にできます. ことのことを利用してソートを高速化します

  • Multinomial distributionとCategorical distributionの違い | LESS IS MORE

    些細な違いなんだけど調べたのでメモ。Multinomial distributionは多項分布のこと。Categorical distributionは、一般的な日語表現が見つからなかった(なのでタイトルは英語)。打つのが大変なので、以下カテゴリカル分布と書く。 結論としては、多項分布のn=1の特殊な場合がカテゴリカル分布ですよってこと。以下少しまとめる。 分布を仮定する離散変数をカテゴリと呼ぶとして、 多項分布は、n回試行したときに各カテゴリが何回出るかを表す確率分布 多項分布は、二項分布を多カテゴリに一般化したもの カテゴリカル分布は、多項分布のn=1の場合に相当する カテゴリカル分布は、ベルヌーイ分布を多カテゴリに一般化したもの 以上 nokunoさんによるこの記事→ 多項分布の最尤推定 は、多項分布というよりカテゴリカル分布の話。文には書いてあるけどね。あと最尤推定の結果はどち

    Multinomial distributionとCategorical distributionの違い | LESS IS MORE
  • 離散最適化基礎論 (2015年度後学期) 組合せ最適化におけるマトロイドの役割

    電気通信大学大学院情報理工学研究科情報・通信工学専攻 2015年度後学期 金曜4限 (14:40-16:10) 教室:西5-214 岡 吉央 テーマ:組合せ最適化におけるマトロイドの役割 注意:内容は毎年変わります ショートカット:講義資料 | コメント | 試験 | 公式シラバス | スケジュール | 過去の講義 講義資料 1/29 (12) マトロイドの合併 スライド | 印刷用スライド | メモ欄付き印刷用スライド | 演習問題はありません 1/22 (11) マトロイド交わり定理:アルゴリズム スライド | 印刷用スライド | メモ欄付き印刷用スライド | 演習問題 1/8 (10) マトロイド交わり定理 スライド (1/14修正) | 印刷用スライド (1/14修正) | メモ欄付き印刷用スライド (1/14修正) | 演習問題 12/25 (9) マトロイドの交わり スライド

  • 【図解Vim】mapとnoremap - ここぽんのーと

    Vimの設定を少しずつ.vimrcに加えはじめた当時は、mapとnoremapの違いがわからなかった。 情報はWeb上にたくさんあったが、当時の自分にとってはどれも説明が難しくて、しばらく曖昧なまま放置してしまった記憶がある。 そんな昔の自分に向けて、この記事を書いてみる。 — この記事は、 Vim Advent Calendar 2012 の328日目の記事です。 昨日の記事は、 @raa0121 さんの「Jenkinsとvimenvで最新版のVimを自動で手に入れよう」。 mapの話をする前に: 便利なCTRL-A, CTRL-Xmapの話をする前に、ひとつだけ。 CTRL-A と CTRL-X を使ったことがあるだろうか。 もし初耳であれば、便利なのでこの機会に覚えてしまおう。 適当な数字を入力し、ノーマルモードに戻る。 入力した数字にカーソルを合わせて、 CTRL-A を押してみよ

    【図解Vim】mapとnoremap - ここぽんのーと
    DummyWitty
    DummyWitty 2022/10/12
    “noremap”
  • C++ でファイルを文字列に読み込む

    C++ でファイルを文字列に読み込むには istreambuf_iterator を使用する C++ でファイルを文字列に変換して読み込むには rdbuf を使用する ファイルを文字列に読み込むには fread を使用する ファイルを文字列に読み込むには read を用いる この記事では、C++ でファイルの内容を std::string に読み込むいくつかの方法を説明します。 C++ でファイルを文字列に読み込むには istreambuf_iterator を使用する istreambuf_iterator は std::basic_streambuf オブジェクトから連続した文字を読み込む入力イテレータです。したがって、istreambuf_iterator を ifstream のストリームと一緒に利用して、ファイルの全内容を std::string に読み込むことができます。 まず

    C++ でファイルを文字列に読み込む
  • C++ ハウツー

    この記事では、C++ で数値を累乗する方法について複数の方法を示します。 C++ で数値を累乗するには std::pow 関数を使用する 関数 std::pow を用いると、指定された基底数を n の累乗で計算できます。この関数には複数の例外や特殊なケースがあり、プログラマが処理するか、C++ の <cmath> ライブラリヘッダで提供されている別の関数を用いて実装する必要があることに注意してください。例えば、pow は負数の根の計算には利用できないので、代わりに std::sqrt や std::cbrt を利用する必要があります。次の例では、int ベクトルの各要素を 3 の任意の累乗で累乗します。

    C++ ハウツー
  • プログラマーを目指すみなさんにおすすめのYOUTUBER紹介!まずは、JARVISの「パイソンでピザを注文してみた」から! — POTENTIALIST

  • Homepage | Drogon Web Framework

  • プログレスバーを表示するC++ライブラリを作った - われがわログ

    成果物: github.com 背景 Pythonで重い処理をする際は、tqdmでプログレスバーを表示している。最近、C++でもプログレスバーを表示させたいと思ったのだが、既存のライブラリは微妙なものしかなかった。サーベイの結果は以下の通り。 tqdm.cpp: tqdmのC++への公式ポートだがメンテされていない。コンパイルして動かしてみても正常に表示されない。 indicators: スター数的には一番人気のライブラリ。だが、Windows + PowerShellの環境だと、バーの後に余分な改行が入り表示が乱れる。また、UTF8対応を謡ってはいるが、日語環境では文字化けする。Win32 APIを使って文字出力していないことが原因と思われる。将来的に廃止予定のcodecvtクラスを使っているのも微妙に感じた。 progressbar: 200行弱のシンプルなライブラリ。これでもよかっ

    プログレスバーを表示するC++ライブラリを作った - われがわログ
  • 巡回セールスマン問題(TSP)の基本的な解き方(ILS) | フューチャー技術ブログ

    SAIGアルバイトの後藤です。業務では、アルゴリズムの知識を用いた既存処理の高速化やスケジュールの自動作成による業務の効率化を行っています。 配送計画問題など、最適化問題に属する社会課題は、部分問題に巡回セールスマン問題(TSP: Travelling Salesman Problem)を含むことが少なくありません。したがってTSPの基的なアプローチを知っていることは重要です。TSPは組合せ最適化の代表的な問題として古くから様々なアプローチが試みられており、記事は専門家の方にとっては既知の内容だと思いますが改めて紹介します。この記事では、2/3-optの焼きなまし法(SA: Simulated Annealing)より良い解法として2/3-optの反復局所探索法(ILS: Iterated Local Search)を紹介します(競技プログラマへ: TSPは焼きなましより山登り + K

    巡回セールスマン問題(TSP)の基本的な解き方(ILS) | フューチャー技術ブログ
  • 貪欲法、山登り法、焼きなまし、ビームサーチ、これらの間の関係について

    概要 マラソンマッチにおける有力なアルゴリズムとして焼きなましとビームサーチがある。 たいていの問題においてこのどちらかのうちより適切な方を実装すれば上位が得られることや、性質や実装の仕方が異なることから、これらの関係は二項対立のようにして理解されている。 しかしこのふたつのアルゴリズムがどちらも貪欲法の延長にあることも知られている。 この記事では、貪欲法を中心に整理して焼きなましとビームサーチの二項対立の構図は適切でないことを示す。 特に、これらの差異が状態空間の間のグラフが有向であるか無向であるかのみであることを明らかにし、下図のような形で整理する。 またその系として、焼きなましとビームサーチの間で互いに知見を流用できることを説明する。 <?xml version=”1.0” encoding=”UTF-8”?> 状態のグラフが有向 状態のグラフが無向 貪欲 / 山登り ビームサーチ

  • priority_queue - cpprefjp C++日本語リファレンス

    namespace std { template <class T, class Container = std::vector<T>, class Compare = less<typename Container::value_type>> class priority_queue; } 概要 priority_queueはコンテナアダプタであり、優先順位付きキューを実現する目的で設計されている。要素をpush()で追加し、取り出す際にtop()を呼び出すことで、Compare述語によって優先順に要素が取り出される。デフォルトでは降順に処理される。 priority_queueは、所定のメンバ関数を持つコンテナのオブジェクトを内部実装として用いており、標準のコンテナ、もしくは独自に実装したコンテナを指定することができる。 このコンテナに必要な要件は、ランダムアクセスイテレータを持ち、か

    DummyWitty
    DummyWitty 2022/10/05
    “compare”
  • priority_queueで自作のクラスを使う

    C++のSTLの中のpriority_pueue(優先順位付きキュー)について。自作のクラスのオブジェクトを要素にして、そのオブジェクトのメンバを基準に降順(または昇順)に格納する方法のメモ。 参考サイト:STL PRIORITY_QUEUE クラスを使用して、カスタムの型にする方法 priority_queueってなんだ まず初めに、priority_queueを知らないという人のために軽く説明を。簡単に言えば、中に入っている要素を勝手にソートしておいてくれる便利な箱です。 アルゴリズムを多少でもかじったことがある人なら聞いたことがあるかと思いますが、ヒープと呼ばれるものですね。(より正確には、優先順序付きキューはヒープを使って実現できる、というだけですが) 要素の挿入・削除ごとに要素の順序を守るよう並び替えを行うことで、最大(または最小)の要素を、要素の総数に関係なく素早く取り出すこと

    priority_queueで自作のクラスを使う
  • priority\_queue | Programming Place Plus C++編【標準ライブラリ】 第12章

    priority_queue は、コンテナアダプタの一種で、その名のとおり、優先度付きキュー(アルゴリズムとデータ構造編【データ構造】第10章)を提供します。使用するには、queue(第11章)と同じく、<queue> という名前の標準ヘッダをインクルードする必要があります(<priority_queue> ではありません)。 priority_queue は、次のように定義されています。 namespace std { template <typename T, typename Container = vector<T>, typename Compare = less<typename Container::value_type> > class priority_queue { }; } テンプレート仮引数 T は、格納する要素の型です。 テンプレート仮引数 Container は

    priority\_queue | Programming Place Plus C++編【標準ライブラリ】 第12章
  • A* Search Algorithm - GeeksforGeeks

  • C++でmap, filterを使うために方言に馴染もう

    filterとC++11時点で対応していたと思われるものはcopy_ifですが引き継がれなかったので気にしなくても良いです。 map C++ではmapの代わりにtransformという用語を割り当てています。 ただ、私の経験上transformを使っている人をほとんど見たことがありません。 C++11からstd::transformというアルゴリズムが提供されています。 mapを使わないということがプログラミングにおいてあり得ないので命名が悪いと言わざるを得ません。 しかし、今更はるか昔の命名の悪さに文句を言っても始まらないのでC++mapの代わりにtransformという方言を使うということを広く認識してもらうことが大事なのかなと思っています。 slide tupleを返すかiterableな物を返すかで名前がまた違う言語もある。好きな方で受け取れる言語もある。 C++はtupleとi

    C++でmap, filterを使うために方言に馴染もう
  • MathJax-Latexで数式をそろえたい!使える数式の書き方メモ

    MathJax-Latexで数式をそろえたい!使える数式の書き方メモ 2019年11月4日 2020年5月30日 ワードプレス ワードプレスでMathJax-Latexというプラグインを使っていくつか数式を使う記事を書きましたが、数式の書き方で困ったことがありました。 数式をそろえたり、2つの式をかっこでひとまとめにしたり・・・ とどうやって書いたらいいかわからなかったので目的別にまとめてみました。 数式を書く際に式の書き方がわからないというときは以下のサイトがとても参考になりました。 Easy Copy MathJax

  • ギリシャ文字・ドイツ文字・花文字・筆記体のLaTeX数式の書き方

    数学などの文書で現れるギリシャ文字・花文字・筆記体・ドイツ文字のTeXでの表記を一覧にまとめます。 LaTeX でギリシャ文字などの文字を書きたいときのためのものです。 ギリシャ文字一覧 読み方 大文字 (TeX) 小文字 (TeX) 変体文字 (TeX)

    ギリシャ文字・ドイツ文字・花文字・筆記体のLaTeX数式の書き方
  • List of LaTeX mathematical symbols - OeisWiki

    There are no approved revisions of this page, so it may not have been reviewed. All the predefined mathematical symbols from the TeX package are listed below. More symbols are available from extra packages.

  • Vim Cheat Sheet

    Global :h[elp] keyword - open help for keyword :sav[eas] file - save file as :clo[se] - close current pane :ter[minal] - open a terminal window K - open man page for word under the cursor Cursor movement h - move cursor left j - move cursor down k - move cursor up l - move cursor right gj - move cursor down (multi-line text) gk - move cursor up (multi-line text) H - move to top of screen M - move