表を使って状態遷移を表現することもできる。transition[][]のような遷移表を作っておき、state = transition[state][input]のように現在の状態と入力から次の状態を計算するようにしておけばプログラムは簡単になる。 正確な遷移表を作ることだけ注意すれば良い。
表を使って状態遷移を表現することもできる。transition[][]のような遷移表を作っておき、state = transition[state][input]のように現在の状態と入力から次の状態を計算するようにしておけばプログラムは簡単になる。 正確な遷移表を作ることだけ注意すれば良い。
曖昧検索は便利なものである。「ピテカントロプス」の綴りは難しいが、最近のGoogle検索は曖昧検索対応しているようで、「pitekantoropusu」で検索してもちゃんと直立猿人(Pithecanthropus)がみつかる。しかし「musogurusuki-」でムソルグスキーを検索できないようなので、改良の余地はあるのかもしれない。 Unix系の計算機システムやプログラミング言語では曖昧な検索を行なうために正規表現を使えるものが多い。正規表現とは検索パタンとして文字列の繰り返しや文字列の選択を指定できるもので、a*という表現で「0回以上のaの繰り返し」というパタンを指定したり、(abc|def)という表現で「abcまたはdef」を指定したり、a.cという表現で「aac, abc, acc, ...」を指定したりできる。たとえばpi.*ca.*puのような曖昧なパタンを指定すれば辞書からP
ゴールデンウィーク中、Appleがオープンソースとしてリリースした分散データベース FoundationDB のドキュメントを読んでいました。なかなか面白いデータベースだと思うのでこれについては別途書きたいですが、それはそれとしてFoundationDBでは、分散環境下でACIDトランザクションを実現するために、分散合意プロトコルとして有名なPaxosを採用しているようでした。 PaxosはGoogleのChubbyやCassandraのLight Weight Transactionなどで使われていますが、僕はいまだにPaxosがどのように動作するのかあまりよく分かっていませんでした。良い機会だと思い、FoundationDBの技術を理解するためにも連休の後半でLeslie LamportによるPaxosの論文の一つ Paxos Made Simple を読み、何となくわかった気持ちにな
Task Queue Implementation Pattern Ekaterina Gonina (Author), Jike Chong (Shepherd), UC Berkeley ParLab Name Task Queue Problem Some applications can be broken down into variable length tasks to be executed concurrently. How do we efficiently load balance the tasks among processing elements in such applications? Context Many problems can be expressed as a set of tasks where the number of tasks is
Cryptographer, co-founder & chief security officer @ Taurus. Books Serious Cryptography (No Starch Press, 2017) Translations' covers 🚧 Second edition: to appear in 2024 (No Starch Press) 🚧 French translation: to appear in 2024 (Dunod) Petit Pingouin (self-published, 2021) Crypto Dictionary (No Starch Press, 2020) The Hash Function BLAKE (Springer, 2014) Crypto projects Hash functions BLAKE, BLAK
Per the Java documentation, the hash code for a String object is computed as: s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1] using int arithmetic, where s[i] is the ith character of the string, n is the length of the string, and ^ indicates exponentiation. Why is 31 used as a multiplier? I understand that the multiplier should be a relatively large prime number. So why not 29, or 37, or even 97?
こんにちは。インフラストラクチャー部 SRE グループの吉川 ( @rrreeeyyy ) です。今期オススメのアニメはツインエンジェル BREAK です。 普段の業務並びに趣味の一環として、サーバのモニタリング環境の調査や改善に取り組んでいます。 そこで本稿では、モニタリングのコンポーネントの一つとして外すことが出来ない、時系列データベースの基礎知識に関して紹介します。 そもそも時系列データ・時系列データベースとは? 時系列データというのは、特定の時間ごとに何らかの値を取得した際の、取得した一連の値を指します。 例えば、以下のようなフォーマットをしたデータなどは時系列データにあたるでしょう。 timestamp1,key,value1 timestamp2,key,value2 timestamp3,key,value3 : 時系列データベースとは、上記のような時系列データの保存・処理に
リクルートデータ組織のブログをはじめました。※最新情報はRecruit Data Blogをご覧ください。 Recruit Data Blogはこちら 汎用人型雑用AIの stakaya です。 たまたま数年前に社内のBLOGに書いたABテストのロジックのまとめ&比較記事を発掘したので、 このまま眠らせているのはもったいないぞと、 圧倒的もったいない精神を発揮し、シェアさせていただきます。 あの頃は私も若かった。 社内では”堅物・真面目・一途”で有名なものでして、下記文章がお硬いのはご勘弁ください。 はじめに 本記事は、施策の評価手法としてしばしば用いられるA/Bテスト(A/B testing)について、できる限り背後にある仮定を明記した上で、まとめたものである。 A/Bテストとは、主にインターネットマーケティングにおける施策の良否を判断するために、2つの施策(通常、A・Bと記載)を比較す
読みやすさにはいろいろな定義があると思いますが、これが一番シンプルでいいんじゃないかな~という定義をしてみたいと思います。 ネタ元は、Readability: a one-hundred-year-old field still in his teens(のスライド5~6枚目)です。ReadabilityはLegibilityとComprehensibilityと異なる、ということが示されていますが、doksyo-tekは、むしろ、これら3つを併せて(日本語で言うところの)読みやすさになるだろうと思っています。つまり、読みやすさとは、次の3要素からなると言えないでしょうか。 読みやすさ: Legibility:対象の文の、配置(文字の大きさ・行間・フォントなど)のこと Comprehensibility:対象の文を、読んでわかった・理解したという度合のこと Readability:対象の文
XorShiftの派生品はたくさんあるそうで、このうちのXorShift128+(64bitUIntを使用した物)を移植しようと試みた。結論としてはなんとかJavaScriptを64bit以上の整数を扱えるようにしない限り不可能。できたとしても速度的な利点が失われそう。 JavaScriptの表面では数値型はNumberとして扱われるけど内部的な型としてint32、float32、float64(double)の3つに分けられるみたいだ。asm.jsでそれぞれの型指定の方法が指示されているように、JavaScriptにおいても以下のキャスト方法が使用できる。(適切に使用すれば高速化も可能) var a=(1+2)|0; //int32 var b=Math.fround(1+2); //float var c=+(1+2); //double この時、各種論理演算子がint32以外では使用
こんにちは!はてなアプリケーションエンジニアの id:takuya-a です。 みなさんは、このような疑問をもったことはありませんか? grep はどのように文字列を検索しているのか? MeCab はどうやって辞書を高速にルックアップしているのか? パーサやコンパイラを作りたいけど、何から始めればいいのか? 本稿では、「文字列アルゴリズムとはどんなものなのか?」「なぜ重要なのか?」「何を知っておくべきか?」「どうやって勉強すればいいのか?」といった疑問にお答えしていこうと思います。 文字列アルゴリズムの意外な応用や、モチベーションを保ちやすい勉強のしかた、文字列アルゴリズムを勉強するために行った社内での取り組み、実装するときのコツといったトピックについても触れています。 このエントリは、はてなエンジニアアドベントカレンダー2016の22日目の記事です。昨日は id:syou6162 さんに
オバマ大統領の再選に大きく寄与したことで大きな注目を集めているA/Bテスト。A/Bテストを導入した、することを検討している、という開発現場も多いのではないだろうか。 そんな中、Web上で次のような議論を見つけた。 20 lines of code that will beat A/B testing every time Why multi-armed bandit algorithm is not “better” than A/B testing 一言でまとめると「A/Bテストよりバンディットアルゴリズムの方がすごいよ」「いやいやA/Bテストの方がすごいし」ということだ。 で、バンディットアルゴリズムとは一体何者なのか? そこでBandit Algorithms for Website Optimization (O'REILLY)を読んでみた。その結果分かったことを踏まえてざっくりと
About the #data-structures series The #data-structures series is a collection of posts about reimplemented data structures in JavaScript. If you are not familiar with data structures, a quick introduction and the full list of reimplemented data structures can be found in the introduction post of the series on data structures in JavaScript. If you feel comfortable with the concept of each data stru
Enjoy watching, trying, and learning with this guide to algorithms. The wide-ranging field of algorithms is explained clearly and concisely with animations. Deepen your understanding by exploring concepts in "Sim Mode". Also includes algorithms closer to home involving encryption and security. Come on, let's take a journey into the world of algorithms! ==== Categories and Included Topics ==== [ So
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く