こんにちは!はてなアプリケーションエンジニアの id:takuya-a です。 みなさんは、このような疑問をもったことはありませんか? grep はどのように文字列を検索しているのか? MeCab はどうやって辞書を高速にルックアップしているのか? パーサやコンパイラを作りたいけど、何から始めればいいのか? 本稿では、「文字列アルゴリズムとはどんなものなのか?」「なぜ重要なのか?」「何を知っておくべきか?」「どうやって勉強すればいいのか?」といった疑問にお答えしていこうと思います。 文字列アルゴリズムの意外な応用や、モチベーションを保ちやすい勉強のしかた、文字列アルゴリズムを勉強するために行った社内での取り組み、実装するときのコツといったトピックについても触れています。 このエントリは、はてなエンジニアアドベントカレンダー2016の22日目の記事です。昨日は id:syou6162 さんに
何かのやり方や、問題の解決方法をどんどんメモするブログ。そんな大学院生の活動「キャッシュ」に誰かがヒットしてくれることを祈って。 P2P、特にDHTの前提知識が無い状態から、オリジナルDHTアルゴリズムを実装・評価できるようになるまでの学習方法と参考資料をまとめました。 基本的なアルゴリズムの仕組みから、実装評価に用いるツールキットの使い方までを短期間で学習することが出来ます。 「P2Pに関する卒論を書こうと思っている人」や「P2Pアプリケーションの開発前に、アルゴリズムをテストしたい人」、「なんとなくP2Pアルゴリズムに興味が出た人」などにぴったりだと思います。また、研究室での後輩教育用資料にするのも良いと思います。実際に使いましたし。 ここで紹介する資料一覧は以下の通りです。 資料1:「ChordアルゴリズムによるDHT入門」 資料1ーオプション1:「DHTアルゴリズムSymphony
Overlay Weaver はオーバレイ構築ツールキットです。 アプリケーション開発に加えて、 オーバレイのアルゴリズム設計もサポートします。 アプリケーション開発者に対しては、 分散ハッシュ表 (DHT) やマルチキャストといった高レベルサービスに対する 共通 API を提供します。 この API を用いることで、 特定のトランスポートプロトコル、データベース、ルーティングアルゴリズム に依存しないアプリケーションを開発できます。 Overlay Weaver は、 ルーティングアルゴリズムとして Chord、Kademlia、Koorde、Pastry、Tapestry、FRT-Chord の実装を提供しています。 ルーティング層の分割によって、 これらのアルゴリズムをたかだか数百ステップで実装することが可能となりました。 ルーティング層は高レベルサービスの下位に位置し、 ルーティン
9月に中途で入社した@wat-aroです. 前職はプログミングと全く関係のない仕事でしたが,プログラムを書く仕事がしたくて退職しました. 退職してからはまず基礎を身につけようとSICPを読み,ほとんどの問題を解き終わったのでFjrodのリモートインターンに参加して勉強していました. 今日は永和システムマネジメントの技術面接で出されたアルゴリズムの問題を紹介しようと思います. 出された問題はアナグラムの判定です. アナグラムとは文字列の順番を入れかえて,別の文字列になっているものです. eros と rose は文字の順番を入れ替えているだけなのでアナグラムです. eros と lose は文字を入れ替えただけでは一致しないのでアナグラムではありません. これを判定するコードを書きます. 面接ではRubyで書くのが難しければ疑似コードでもいいし,口頭でアルゴリズムを説明するだけでもいいと言わ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く