タグ

algorithmに関するmotchangのブックマーク (12)

  • 徐々に高度になるリングバッファの話 - Software Transactional Memo

    リングバッファのイメージ図 1. リングバッファとは何か 機能的にはFirst In First Out (FIFO)とも呼ばれるキューの一種であるが、リング状にバッファを置いてそれの中でReadとWriteのインデックスがグルグルと回る構造をとる事によって容量に上限ができることと引き換えに高速な読み書き速度を得たものである。キューを単に実装するだけなら山ほど方法があって線形リストを使ってもいいしスタックを2つ使っても原理的には可能だ。その中でもリングバッファを用いた方法の利点はひとえに性能の高さでありメモリ確保などを行わないお陰でシステム系の様々な場所で使われている。 これの実装自体は情報系の大学生の演習レベルの難度であるが少し奥が深い。まずリングバッファのスタンダードなインタフェースと実装は以下のようなものである。 class RingBuffer { public: explicit

    徐々に高度になるリングバッファの話 - Software Transactional Memo
  • Aho–Corasick algorithm - Wikipedia

    In computer science, the Aho—Corasick algorithm is a string-searching algorithm invented by Alfred V. Aho and Margaret J. Corasick in 1975.[1] It is a kind of dictionary-matching algorithm that locates elements of a finite set of strings (the "dictionary") within an input text. It matches all strings simultaneously. The complexity of the algorithm is linear in the length of the strings plus the le

    Aho–Corasick algorithm - Wikipedia
  • Boyer–Moore string-search algorithm - Wikipedia

    Alignments of pattern PAN to text ANPANMAN, from k=3 to k=8. A match occurs at k=5. T denotes the input text to be searched. Its length is n. P denotes the string to be searched for, called the pattern. Its length is m. S[i] denotes the character at index i of string S, counting from 1. S[i..j] denotes the substring of string S starting at index i and ending at j, inclusive. A prefix of S is a sub

  • Raft Consensus Algorithm

    What is Raft? Raft is a consensus algorithm that is designed to be easy to understand. It's equivalent to Paxos in fault-tolerance and performance. The difference is that it's decomposed into relatively independent subproblems, and it cleanly addresses all major pieces needed for practical systems. We hope Raft will make consensus available to a wider audience, and that this wider audience will be

    Raft Consensus Algorithm
  • Coursera.org Algorithms, Part I

    We asked all learners to give feedback on our instructors based on the quality of their teaching style.

    Coursera.org Algorithms, Part I
  • 再帰的なアルゴリズムの実例集 - Qiita

    再帰的なアルゴリズムの考え方に慣れるためにいくつかの有名な例を集めた。それぞれについてサンプルコードと「問題を小さくする方法」「終了条件」を記している。 注意事項: アルゴリズムの細かい効率よりも、論理の分かりやすさに重点を置いている 問題の前提に沿わない入力(例えば負の整数や小数)のチェックは省いている 再帰的なデータ構造や再帰を除去する方法については扱わない サンプルコードはRubyで書いている 基的な再帰 階乗 nの階乗とは n! = 1*2*...*n という計算のこと。例えば「n人が一列に並ぶ方法の総数」を表せる。 「1からnまでの整数の積」と言われたらfor文などのループで書きたくなるが、再帰的な計算もできる。

    再帰的なアルゴリズムの実例集 - Qiita
  • 文字列アルゴリズムの学びかた - Hatena Developer Blog

    こんにちは!はてなアプリケーションエンジニアの id:takuya-a です。 みなさんは、このような疑問をもったことはありませんか? grep はどのように文字列を検索しているのか? MeCab はどうやって辞書を高速にルックアップしているのか? パーサやコンパイラを作りたいけど、何から始めればいいのか? 稿では、「文字列アルゴリズムとはどんなものなのか?」「なぜ重要なのか?」「何を知っておくべきか?」「どうやって勉強すればいいのか?」といった疑問にお答えしていこうと思います。 文字列アルゴリズムの意外な応用や、モチベーションを保ちやすい勉強のしかた、文字列アルゴリズムを勉強するために行った社内での取り組み、実装するときのコツといったトピックについても触れています。 このエントリは、はてなエンジニアアドベントカレンダー2016の22日目の記事です。昨日は id:syou6162 さんに

    文字列アルゴリズムの学びかた - Hatena Developer Blog
  • そのデッキは本当に最強なのか? - Qiita

    ソーシャルゲームに携わって結構な月日が流れましたが その大半が俗にいうところの『カードゲーム』でした。 で、カードゲームとなると気になるのが 『ぼくのかんがえたさいきょうのデッキ』なわけです。 『おすすめ編成』みたいな機能は割とよく見かけるので、 サーバサイドで何かしらロジックは組まれていると思うんですが、 よくよく思い返してみると、コードそのものを見たことないなーと気づきました。 (ソーシャルではフロント担当ばっかりなので) 果たしてどんな感じなんだろう? と気になってしまったので・・・ デッキ内のカードの攻撃力が最大となるような組み合わせを求めるコードを ソーシャルで(少なくとも自分が関わった中では)よく使われるPHPで考えてみました。 アルゴリズムを考える まずはいろいろと考えてみたんですが 総当たりにならないパターンでは 攻撃力順に並べて上から入れ、余ったコストに入るカードを入れる

    そのデッキは本当に最強なのか? - Qiita
  • CMIX is a lossless data compression program aimed at optimizing compression ratio at the cost of high CPU/memory usage. - Byron Knoll

    Description I started working on cmix in December 2013. Most of the ideas I implemented came from the book Data Compression Explained by Matt Mahoney. cmix uses three main components: Preprocessing Model prediction Context mixing The preprocessing stage transforms the input data into a form which is more easily compressible. This data is then compressed using a single pass, one bit at a time. cmix

    motchang
    motchang 2015/11/23
    試してみたいけど環境がない…
  • Paxos

    Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)NTT DATA Technology & Innovation

    Paxos
  • 古くて新しい自動迷路生成アルゴリズム - やねうらおブログ(移転しました)

    最近、ゲーム界隈ではプロシージャルテクスチャー生成だとか、プロシージャルマップ生成だとか、手続き的にゲーム上で必要なデータを生成してしまおうというのが流行りであるが、その起源はどこにあるのだろうか。 メガデモでは初期のころから少ないデータでなるべくど派手な演出をするためにプロシージャルな生成は活用されてきたが、ゲームの世界でプロシージャル生成が初めて導入されたのは、もしかするとドルアーガの塔(1984年/ナムコ)の迷路の自動生成かも知れない。 なぜ私が迷路のことを突然思い出したのかと言うと、最近、Twitterで「30年前、父が7年と数ヶ月の歳月をかけて描いたA1サイズの迷路を、誰かゴールさせませんか。」というツイートが話題になっていたからである。 この迷路を見て「ああ、俺様も迷路のことを書かねば!俺様しか知らない(?)自動迷路生成のことを後世に書き残さねば!」と誰も求めちゃいない使命感が

    古くて新しい自動迷路生成アルゴリズム - やねうらおブログ(移転しました)
  • 第6回 上手なアルゴリズムの見つけ方

    図1に示すHTML形式のテキスト・データ(以下,HTMLデータ)があります。このHTMLデータをブラウザに表示させたときに「表示される文字列」と「その文字列に対して有効なタグ名」を対応付けるアルゴリズムを考えてください。結果は配列に格納して,画面に表示させるものとします(図2)。 見わたせば,世の中はアルゴリズムだらけです。私のようなプログラマは,日常生活でも「締め切り順に仕事をソートしてごらん」「仕事のスタックがたまっているからてんてこまい」など,いま置かれている状態をアルゴリズムやデータ構造になぞらえて会話することがよくあります。前回紹介した再帰処理と言えば,落語の演目の一つ,「頭山」です。自分の頭に生えた桜の木を引っこ抜いて,その跡にできた池に自分自身が身を投げる,という不思議な話ですが,これこそ再帰処理をよく言い表していると思います。 このように世の中には,ハッシュだってスタックだ

    第6回 上手なアルゴリズムの見つけ方
  • 1