タグ

関連タグで絞り込む (0)

  • 関連タグはありません

タグの絞り込みを解除

AlgorithmとALgorithmとProgrammingに関するagwのブックマーク (1,893)

  • Topcoder

    Topcoder is a crowdsourcing marketplace that connects businesses with hard-to-find expertise. The Topcoder Community includes more than one million of the world’s top designers, developers, data scientists, and algorithmists. Global enterprises and startups alike use Topcoder to accelerate innovation, solve challenging problems, and tap into specialized skills on demand.

    Topcoder
  • JavaでTrieデータ構造を実装する

    WEB+DB PRESS vol.42の特集「アルゴリズム&データ構造」でもとりあげられていたTrie(とらい; p34-37)について調べてみたので、忘れないようにメモです。 Trie(s)というのは単語を辞書のなかから見つけ出すときに人がふつうに行っている探し方のアルゴリズムです。例えば、poolならまず、pのところに行って、次にoのところに行って、、、つまり、p -> o -> o -> lと探していきます。続いてprizeを見つけるとしたら、p -> r -> i -> z -> eですが、先頭の文字が同じpなので、pの付近からはずれたところから始めたりはしません。この二つの単語の場合pをprefixと見なすのがTrieです。poolとpoleだったらprefixはpoにのびていきます。prefixがのびていけばいくほど候補は減っていきます。ちょうどIDEのメソッド補完機能のように

    JavaでTrieデータ構造を実装する
  • エンコーディング - Protocol Buffers - ずっと君のターン

    Ruby版作るために部分的に訳してたので、せっかくだから完成させました。Protocol Buffersのバイナリエンコーディング詳細です。この情報が必要な人はあんまりいないとおもいますが、よろしければどうぞ。 http://code.google.com/apis/protocolbuffers/docs/encoding.html エンコーディング このドキュメントはプロトコルバッファメッセージのバイナリ・ワイヤ形式について説明しています。アプリケーションでプロトコルバッファを使用するだけであれば気にする必要はありませんが、プロトコルバッファの様々なフォーマットがエンコードされたメッセージのサイズにどう影響するかを理解することは非常に役に立つでしょう。 簡単なメッセージ 次のとても簡単なメッセージ定義があるとしましょう: message Test1 { required int32 a

    エンコーディング - Protocol Buffers - ずっと君のターン
  • https://www.codeblog.org/blog/akr/20060413.html

  • diffのアルゴリズム - Plan9日記

    ふと見つけた「あなたが一番好きなアルゴリズムを教えてください。また、その理由やどんな点が好きなのかも教えてください」を読んで、diffのアルゴリズムを調べてみた。2つのファイルの違いを見つけるには、共通する部分が最長になるペアを見つければよい。これはLCS (Longest Common Subsequence)問題と呼ばれる。LCS問題の最適解は動的計画法を用いて求めることができるが、計算時間、メモリ使用量ともにO(MN)になる*1。これより早く、また小メモリで実行できるようにいろいろなアルゴリズムが提案されている。 テキストを比較するdiffというUnix系のコマンドがありますが、これは実は高度に数学的なエディットグラフというアルゴリズムが使われています。 [1] E.W.Myers, "An O(ND) difference algorithm and its variations"

    diffのアルゴリズム - Plan9日記
  • CiNii - ぷよぷよはNP完全

    JaLC IRDB Crossref DataCite NDLサーチ NDLデジコレ(旧NII-ELS) RUDA JDCat NINJAL CiNii Articles CiNii Books DBpedia KAKEN Integbio PubMed LSDB Archive 極地研ADS 極地研学術DB OpenAIRE 公共データカタログ

  • マリオのジャンプ実装法とVerlet積分(実践編) - Gemmaの日記

    前回の続き 実際にやってみました。(Canvas要素を使っているのでFirefoxでどうぞ) http://eva-lu-ator.net/~gemma/geocities/jsmario/jsmario.html マリオのようにジャンプで放物線運動をするゲームを作るとき、 たいていは、座標と速度を使って物理計算すると思います。これはEuler法といいます。 Verlet法では、座標と、前回の座標を使って計算します。つまり、速度を記憶しません。 Verlet法では、座標だけ扱えばすむので、壁にめりこんじゃいけないといった条件を簡単に書くことができます。 単に座標を、壁の直前にするだけでいいです。 ネタ元はCowboy Programming >> Blob Physicsです。 今回のコードの肝は以下の部分です。衝突判定がすっきり書けました。 //Verlet法 var y_temp =

  • マリオのジャンプ実装法とVerlet積分 - Gemmaの日記

    (追記)JavaScriptで実装してみました 昔、何かの雑誌*1でマリオのジャンプの実装法を見た覚えがあって、あの放物線運動は、 マリオの速度ベクトルを保存しておいて座標を計算するんじゃなくて、 マリオの前回の座標を保存しておいて座標を計算しているんだそうです。 y_temp = Mario.y; Mario.y += (Mario.y - Mario.y_prev) + F; Mario.y_prev = y_temp;Fはその瞬間の力で、ジャンプの瞬間はF=10にして、空中ではF=-1にします。 するとこんな放物線になります。 [0,10,19, 27, 34, 40, 45, 49, 52, 54, 55, 55, 54, 52, 49, 45, 40, 34, 27, 19, 10, 0] 加減算しか使わないので、非常に高速にできたと。 これがVerlet積分に似ているなと思った

    マリオのジャンプ実装法とVerlet積分 - Gemmaの日記
  • 協調フィルタリングのグラフィカルモデル - nokunoの日記

    協調フィルタリングとはAmazonのお勧めのように「この商品を購入した人はこんな商品も購入しています」という情報を用いて推薦をする手法です。グラフィカルモデルはベイジアンネットワークとも呼ばれ、最近一部で流行している機械学習の手法です。今回は、協調フィルタリングをグラフィカルモデルで表現したらどのようになるだろう、と考えて思いついたアイデアを紹介します。 今、ユーザuとアイテムiの組{u,i}のデータが大量に与えられているとします。例えばソーシャルブックマークならユーザとブックマークしているページの組み合わせ、E-commerseならユーザと購入した商品の組み合わせ、などです。ここではSBMを例に考えるので、はてブと同様にユーザはマイナスの評価を付けることはできないものとします。 このときユーザuに対してお勧めのページを推薦することを考えると、ユーザuがまだブックマークしていないページiに

  • いまさらアルゴリズムを学ぶ意味

    いまさらアルゴリズムを学ぶ意味:コーディングに役立つ! アルゴリズムの基(1)(1/3 ページ) 連載ではアルゴリズムを学ぶ、または学び直すことで、プログラミングのスキルを深めていきます。アルゴリズムは学問として取り扱われることが多いですが、この連載では開発の現場に役立つスキルを身に付けることを目的とします。初回は、アルゴリズムを学ぶ意義について。コンピュータに「3の倍数と3の付く数字」を判断させるにはどうしたらいいか。発想力を鍛えよう。 アルゴリズムを学ぶ意味 IT技術者である読者の皆さんなら、普段から何げなく「アルゴリズム」という言葉はよく使っていることでしょう。しかしあらためて「『アルゴリズム』とは何か」と問われて、すぐに明快に答えられるでしょうか。 また、IT技術者であってもアルゴリズムをきちんと勉強した人は意外と多くないのではないでしょうか。大学で学んだとか、入社後の新人研修

    いまさらアルゴリズムを学ぶ意味
  • ゲームのバグにみるアルゴリズム - 衝突判定

    何を見てもアルゴリズムを考えてしまうのがプログラマの職業病といったところです。 私は結構ゲーム好きなんですが、ついついアルゴリズムを考えてしまうんですね。 バグを発見したときなどは楽しくてたまりません。 そのほつれからプログラムのコードが透けて見えるのです。 日のターゲットは2001年、匠から発売されたアーケードゲーム「ナイトレイド」です。 ジャンルはシューティングなのですが、変なシステムを採用した、あまり見栄えのしないゲームでした。 このゲーム、非常にマイナーです。多分、名前を聞いて分かる人の方が少数派ですね。 ちなみにプレイステーションに移植されています。 アーケード版公式ページ PS版公式ページ このゲームには非常に致命的なバグがあり一部界隈では有名です。 自機を画面左上に移動させると敵が弾を撃たなくなるのです! なぜこんなことが起こるのでしょうか? 矩形の衝突判定 ところで矩形(

  • JavaScriptの結合演算の処理速度 - tabstop upon d.hatena

    面白そうなのでトラックバックもつけてみます。 8/1の日記の結果から、どうやら、FirefoxのJavaScriptの文字列処理は+(結合演算)に工夫があるように見えます。特に、文字列が大きくなっても結合の速度が変わりません。これは普通の感覚からするととても奇妙なことです。 なので、ちょこっと調べてみました。 普通はどうなるのか?(Java編) 普通の例、かどうかは別としてまずはJavaで文字列結合するとどうなるか見てみます。 import java.util.Date; class JavaStr { static public String exec(String sum) { Date t1 = new Date(); for (int i = 0; i < 10000; i ++) { sum += new Integer(i).toString(); } Date t2 = ne

    JavaScriptの結合演算の処理速度 - tabstop upon d.hatena
  • atso-net.jp

    This domain may be for sale!

  • mixi Engineers’ Blog » 圧縮データベースを使おう

    チャリンコ通勤による滝のような汗で、朝からTシャツがシースルーになってしまうmikioです。さて今回は、Tokyo Cabinet(TC)のデータベースを各種のアルゴリズムで圧縮して利用する方法についてご紹介します。 圧縮B+木 B+木とは、比較関数の値による順序が近いレコード群を単一のページにまとめ、各ページにB木(multiway balanced treeの略であり、二分木(binary tree)とは違います)の索引を張ったものです。理論的にはレコードの探索も更新も O(log n) の時間計算量で行え、内部ノード(B木)の操作をキャッシュすると実質的には O(1) の時間計算量で探索や更新が行えるという、かなり安定した性能を備えるデータ構造です。その上、レコードが一定の順序に基づいて並べられているので、数値の範囲検索や文字列の前方一致検索が高速に行えたり、カーソルによって順序に基

    mixi Engineers’ Blog » 圧縮データベースを使おう
  • 3 NOT problem - あどけない話

    和田先生が紹介されていた3 NOT problemを解こうといろいろ考えましたが、結局できませんでした。orz 答えが分らないと、気になって次の仕事に進めないので、検索して答えを見つけました。 Haskell でアルゴリズムを書いておきます。 import Data.Bits input = map triple [0..7] where triple :: Int -> (Bool,Bool,Bool) triple n = (testBit n 2,testBit n 1,testBit n 0) output = map (\(x,y,z) -> (not x, not y, not z)) input threeNot (x,y,z) = let aa = y && z ab = x && z ac = x && y ad = y || z ba = x && aa bc = x

    3 NOT problem - あどけない話
  • パラメトロン計算機

    久野君たちの努力により, Beautiful Codeの翻訳がでた. 以前 三省堂の洋書の棚にあるのを見たことはあったが, その時はパスした. 翻訳をみると, なにしろ多くの人がそれぞれのプログラム言語で書いた自分のプログラムを(それもかなり大きい部分を)自讚しているから, 読むのが大変そうである. 短くて面白かったのは, 33章「『』のためにプログラムを書く」であった. 要するに平面上の3点A, B, Cの座標が与えられた時, その3点が同一直線上にあるかを判定するプログラムを書くのだ. 私がやっても多分こういうアプローチになるであろうという風に話は展開していく. まずA,Bの2点を通る直線の式を決め, 点Cがそれに乗っているかを問うもの. これは最初の2点がy軸と平行な線上にあるときの始末が面倒. 次はABを通る直線の勾配と, ACを通る直線の勾配を計算し, それらが一致するかを見る

    agw
    agw 2008/07/26
    思考の流れを丁寧に記載されている。大変秀逸なエントリ。
  • 第2回 memcachedのメモリストレージを理解する | gihyo.jp

    株式会社ミクシィ 研究開発グループの前坂です。前回の記事でmemcachedは分散に長けた高速なキャッシュサーバであることが紹介されました。今回はmemcachedの内部構造がどう実装されているのか、そしてメモリがどう管理されているのかをご紹介します。また、memcachedの内部構造の事情による弱点も紹介します。 メモリを整理して再利用するSlab Allocationメカニズム 昨今のmemcachedはデフォルトでSlab Allocatorというメカニズムを使ってメモリの確保・管理を行っています。このメカニズムが登場する以前のメモリ確保の戦略は、単純にすべてのレコードに対してmallocとfreeを行うといったものでした。しがしながら、このアプローチではメモリにフラグメンテーション(断片化)を発生させてしまい、OSのメモリマネージャに負荷をかけ、最悪の場合だとmemcachedのプ

    第2回 memcachedのメモリストレージを理解する | gihyo.jp
  • 第1回 memcachedの基本 | gihyo.jp

    株式会社ミクシィ 開発部 システム運用グループの長野です。普段はミクシィのアプリケーション運用を担当しております。今回から数回にわたり、最近Webアプリケーションのスケーラビリティの分野で話題になっているmemcachedについて、弊社開発部 研究開発グループの前坂とともに、使い方や内部構造、運用について解説させて頂きます。 memcachedとは memcachedは、LiveJournalを運営していたDanga Interactive社で、Brad Fitzpatrick氏が中心となって開発されたソフトウェアです。現在ではmixiやはてな、Facebook、Vox、LiveJournalなど、さまざまなサービスでWebアプリケーションのスケーラビリティを向上させる重要な要素になっています。 多くのWebアプリケーションは、RDBMSにデータを格納し、アプリケーションサーバでそのデータ

    第1回 memcachedの基本 | gihyo.jp
  • Imagine Cup - 学生の開発者ツール、リソース、エクスペリエンス | Imagine Cup

    Imagine Cup 夢を抱き、夢を築き、夢を生きて。 5 月 19 日の Microsoft Build で行われる 2025 Imagine Cup 世界選手権に参加してください!世界中のトップ 3 の学生のスタートアップ企業が、$100,000 米国ドルと Microsoft の会長兼 CEO Satya Nadella とのメンタリング セッションをかけて競い合います。これらの学生起業家についての詳細情報や、彼らが革新的なアイデアの実現に AI をどのように活用しているかをぜひご覧ください。彼らのアイデアが、あなたの創造性を刺激するかもしれません!

  • フランスの地でアルゴリズムの未来を切り開く男 高橋直大

    Microsoftが主催する学生向けの技術コンテスト「Imagine Cup」。そのアルゴリズム部門で世界の頂点に挑むのは、プログラミング歴が2年にも満たない一人の数学好きだった。 Microsoftが主催し、全世界の学生を対象にする技術コンテスト「Imagine Cup」。今年は日時間の7月4日からフランスのパリで開催される。幾つかの部門が用意されているが、その中の1つであるアルゴリズム部門の日本代表としてフランスの地を踏んだことで、この男の今後はどのように変化するのだろうか。 Imagine Cupのアルゴリズム部門で世界大会に進むのはわずか6名。高橋氏についてもアルゴリズム部門日本代表というよりは、ファイナリストと表記した方が正確だろう。このファイナリスト6名が24時間で10問の問題に挑み、世界の頂点を目指す。今回は、7月3日に20歳の誕生日を迎え、大きな変化の波のまっただ中にいる

    フランスの地でアルゴリズムの未来を切り開く男 高橋直大