タグ

algorithmとAlgorithmに関するtaninswのブックマーク (89)

  • 高速な安定ソートアルゴリズム "TimSort" の解説 - Preferred Networks Research & Development

    先日、TimSortというソートアルゴリズムが話題になりました。TimSortは、高速な安定ソートで、Python(>=2.3)やJava SE 7、およびAndroidでの標準ソートアルゴリズムとして採用されているそうです。 C++のstd::sort()よりも高速であるというベンチマーク結果1が話題になり(後にベンチマークの誤りと判明)、私もそれで存在を知りました。実際のところ、ランダムなデータに対してはクイックソート(IntroSort)ほど速くないようですが、ソートというシンプルなタスクのアルゴリズムが今もなお改良され続けていて、なおかつ人々の関心を引くというのは興味深いものです。 しかしながら、オリジナルのTimSortのコードは若干複雑で、実際のところどういうアルゴリズムなのかわかりづらいところがあると思います。そこで今回はTimSortのアルゴリズムをできるだけわかりやすく解

    高速な安定ソートアルゴリズム "TimSort" の解説 - Preferred Networks Research & Development
  • [whatwg] ArrayBuffer and the structured clone algorithm

    taninsw
    taninsw 2011/09/28
    zero-copy data transfer between Web Workers
  • The structured clone algorithm - Web APIs | MDN

    The structured clone algorithm copies complex JavaScript objects. It is used internally when invoking structuredClone(), to transfer data between Workers via postMessage(), storing objects with IndexedDB, or copying objects for other APIs. It clones by recursing through the input object while maintaining a map of previously visited references, to avoid infinitely traversing cycles. Function object

    The structured clone algorithm - Web APIs | MDN
    taninsw
    taninsw 2011/09/28
    ん、なんか両端で自動的にJSONのencodeとdecodeをしてくれてるみたいな話を読んだ覚えがある気がするのだが、もしかして騙されてたのだろうか/明示的に使う方法が欲しい気がするけどないのかなー。
  • マリオのジャンプ実装法と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 =

  • 焼きなまし法 - Wikipedia

    この項目では、確率的メタアルゴリズムについて説明しています。金属の熱処理については「焼きなまし」をご覧ください。 焼きなまし法(やきなましほう、英: Simulated Annealing、SAと略記、疑似アニーリング法、擬似焼きなまし法、シミュレーティド・アニーリングともいう)は、大域的最適化問題への汎用の乱択アルゴリズムである。広大な探索空間内の与えられた関数の大域的最適解に対して、よい近似を与える。 S. Kirkpatrick、C. D. Gelatt、M. P. Vecchiらが1983年に考案し[1]、1985年に V. Cerny が再発見した[2]。 その名称は、金属工学における焼きなましから来ている。焼きなましは、金属材料を熱した後で徐々に冷やし、結晶を成長させてその欠陥を減らす作業である。熱によって原子は初期の位置(内部エネルギーがローカルな極小状態)から離され、よりエ

  • 昔のドット絵がくっきり、なめらかに蘇る「魔法の技術」とは

    将来的にはゲームへの応用も? まずはこちらの2枚の画像をご覧下さい。片方は昔懐かしいドット絵のキャラクター。もう片方は、その元になったイメージイラスト……に見えますが、そうではありません。 実は右側のイラストは、左のドット絵をもとに、特殊なスムージング処理を行い、生成したもの。元のドット絵ではカクカクだった輪郭線がくっきり、なめらかになり、まるでIllustratorで描いたかのような、自然なイラストに仕上がっています。 海外ニュースサイト「Extreme Tech」が伝えるところによれば、この技術は、Microsoft Researchとヘブライ大学が共同で開発したもの。ビクセルデータのスムージングという点だけを見れば、Illustratorなどにも同様の機能はありましたが、こちらはよりドット絵に適したアルゴリズムとなっているのが特徴。従来のスムージング処理が、すべてのドットを「等しく重

    昔のドット絵がくっきり、なめらかに蘇る「魔法の技術」とは
  • xe-kdoo(2008-08-26)

    >> スパゲティ・ソートとビーズ・ソート スラッシュドット・ジャパン - 初めて学ぶソートアルゴリズムは何がいい? コメントで出てたソートが面白かったのでメモ。 まず、スパゲティ・ソート (Spaghetti sort - Wikipedia, the free encyclopedia)。 ソートしたい値に対応した長さの乾燥スパゲティを用意する。 片手で一まとめにして、テーブルの上でトントンと端を揃える。 もう片手を上から降ろしてゆけば、一番長いのにぶつかる。ので、それを取り除く。 それを繰り返せば長い順にソートできたね! ソート時間は O(n)。 次に、ビーズ・ソート (Bead sort - Wikipedia, the free encyclopedia)。 正数値のソートを行う。 m (m: ソート対象の最大値)のヒモを用意し、一列にならべる。 各データ k について、左から

  • 時代は数論!今すぐ始められる、簡単☆ProjectEuler入門ガイド - EchizenBlog-Zwei

    まわりのエンジニアの間でプログラミングコンテストが流行っている。実力を磨くことができるのに加えて客観的に能力を示すことができるのも大きな魅力だと思う。 しかし興味はあるけれどプログラミングコンテストに対して敷居の高さを感じている人も多いのでは。そんなあなたにProjectEuler(プロジェクト・オイラー)!参加の敷居が非常に低く、楽しみながらアルゴリズムや数論の知識も身につくので他のプログラミングコンテストに参加する足がかりとして挑戦してみるのも良いのでは。 そこで記事ではProjectEuler(PE)入門のために、PEとは何か?何故簡単に始められるのか?どういうメリットがあるのか?おすすめのプログラミング言語は?おすすめの参考書は?という5つについて解説する。これを読んであなたもPEに参加しよう!今すぐ! http://projecteuler.net/ PEはプログラミングと数学

    時代は数論!今すぐ始められる、簡単☆ProjectEuler入門ガイド - EchizenBlog-Zwei
  • ソートアルゴリズムを映像化してみた - jsdo.it - Share JavaScript, HTML5 and CSS

    よくあるやつです。ぼんやり眺めてると、とても癒されます。 2014/2/25 追記: 全面的に書き直しました。 // https://github.com/norahiko/sort-visualize var helper = { range: function(min, max) { var res = []; for(var i = min; i < max; i++) { res.push(i); } return res; }, shuffle: function(ary) { for(var i = ary.length - 1; 0 <= i; i--) { var rnd = Math.random() * (i + 1) | 0; helper.swap(ary, i, rnd); } }, swap: function(ary, a, b) { if(a < 0 ||

    ソートアルゴリズムを映像化してみた - jsdo.it - Share JavaScript, HTML5 and CSS
  • liris.org

    This domain may be for sale!

    liris.org
  • ChordアルゴリズムによるDHT入門

    今回はDHTを実現するアルゴリズムである「Chord」の細かい解説スライドを作成しました。 ( 掲載URL: http://did2.blog64.fc2.com/blog-entry-347.html ) Chordの説明はたくさん書かれています。 もちろん、それらと同じように書いたのではほとんど意味がないと思うので、 論文を読んでもすぐには分からない全体像から、どこが重要か、どの点によってメリットが生まれているかなどに注目しつつ、飲み込みやすいストーリーになるように注意しました。 なおかつ、出来るだけ論文に沿うように気を付けてみました。

    ChordアルゴリズムによるDHT入門
  • アルゴリズムへの招待

    適当な圧縮ルールを作り、ASCII文字で描いた絵をなるべく少ない文字数で表現するには、どうする?(詳しくは第2回を参照) アルゴリズムを構成する楽しい仕組みを紹介しながら、あなたに「おおっ」と言わせたい――。これが連載『地球にやさしいアルゴリズム』の最初の目的です。「数独パズルを解く」「ASCIIアートを圧縮する」など12の問題を用意しました。ぜひ挑戦してみてください。 問題を解けても解けなくても、アルゴリズムに興味を持てたなら、関連する文献や記事を抵抗なく読めるようになるはずです。アルゴリズムを使いこなしたり、新しく作ることも無理なくできるようになるでしょう。 まずはいろいろなアルゴリズムの面白いところを見て、楽しんでみましょう。 連載目次 第1回 ナンプレを解いてみよう 第2回 パズルみたいに楽しいデータ圧縮 第3回 「場面」の移り変わりに注目する 第4回 できるだけ短いルートでゴール

    アルゴリズムへの招待
  • 情報オリンピック参加者の皆さんへ - 簡潔なQ

    情報オリンピックに参加した皆さんこんにちは。僕はqnighyです。一応すごい人です。 予選で終わってしまった人も、選で終わってしまった人も、これから合宿に行けるという人もいると思いますが、これ以降も競技プログラミングに精進したい!という人のために、いち競技者としての経験から、ちょっとアドヴァイスを書いていきたいと思います。(僕自身実践できていないものもあります。) いろいろな大会に参加しましょう。 情報オリンピック以外にも、さまざまな競技プログラミングの大会が存在します。その一例を挙げますから、ぜひとも臆せず参加してみてください。 大会に参加したり、練習したりしないと、競技プログラミングの腕は上がらないようです。 SuperCon 東工大と阪大が主催する高校生向けのコンテストです。このコンテストの最大の特徴は、大学のスーパーコンピューターを借りてコンテストを行うということです。 Supe

    情報オリンピック参加者の皆さんへ - 簡潔なQ
  • サルでもわかる顔検出2 - 科学信仰

    これは「サルでもわかる顔検出の原理」の続きです。 群盲象を撫でる。 Kidney International - Figure 1 for article: The elephant in uremia: Oxidant stress as a unifying concept of cardiovascular disease in uremia 前回、顔検出を実用レベルに引き上げたViola&Jonesの論文を簡単に解説したけど、Violaらが論文にあげた三つの貢献のうちadaBoostについては、ややこしいということであいまいにしか書いてなかった。 なので今日はそのadaBoostアルゴリズムについて解説してみたいと思う。 コンピュータに画像から顔を検出させるという課題はとても難しい。 人間がどうやって視野の中から顔を検出してるのか、その機構自体が全然判ってないんだから、真似ることも

  • サルでもわかる顔検出の原理 - 科学信仰

    顔検出機能はここ数年で急激に普及してデジカメとかケータイとかにフツーに入るようになったり、Google画像検索のオプションに入ってたりして、すっかりコモディティ化しちゃってるけど、ちょっと前まではすごい困難で実用化に手を出すなんてとてもとてもな技術だったんだよね。 2001年のViola & Johnsの論文*1で超高速&超正確な検出アルゴリズムが発表されるまでは。 これの画期的だった点は非力なパソコン(とか現在のケータイ内蔵CPUとか)で画像中からリアルタイムに顔を検出できたことなんだ。 キモは3点。 Integral-ImageによるHaar-like検出器の高速演算 AdaBoostによる検出能力の強化 多段フィルタ(cascade)による非顔領域の高速排除 具体的にどれがViolaらのオリジナルの仕事なのかはよく知らないけれど。 少なくとも一個目と三個目はそうな気がする。 Inte

    サルでもわかる顔検出の原理 - 科学信仰
  • 有名どころな機械学習手法の年表 - 木曜不足

    ちょっと機械学習の比較的有名なモデルやアルゴリズムの初出について年表を作ってみた。 って今週末用の資料なんだけどねw 1805 Method of Least Squares 1901 PCA (Principal Component Analysis) 1905 Random Walk -1925 Logistic Regression 1936 Fisher's Linear Discriminant Analysis 1946 Monte Carlo Method 1948 n-gram model 1950 RKHS (Reproducing Kernel Hilbert Space) 1950s Markov Decision Process -1957 Perceptron 1958 Kalman Filter 1960s Hidden Markov Model -1961 N

    有名どころな機械学習手法の年表 - 木曜不足
  • asahi.com(朝日新聞社):NTT、「ケーキ分割問題」を新アルゴリズムで解決 - 日刊工業新聞ニュース - デジタル

    一つのクリスマスケーキを2人で公平に分けるには、どこにナイフを入れたらいいか―。長年未解決だった、数学の難問「ケーキ分割問題」をNTTが解決した。ビジネスの取引などに使える実用的なアルゴリズムになるという。提案したアルゴリズムの正しさを証明し、このほどコンピューターサイエンスに関する国際会議で発表した。  NTTが開発したアルゴリズムによる解答は、(1)AとBがそれぞれ、切りたいケーキの場所を(第三者などを通じて)同時に申告する(2)切りたい場所が両者で異なっていた場合、そのちょうど中間にナイフを入れる(3)申告した場所を含む側のケーキを両者が得る―というもの。もちろん、(1)で申告した場所が両者で一致した場合はそこで切り分ければよい。この方法で行えば、2人が満足のいく形でケーキを分割することができる。  古典的な解法に、(1)Aがケーキを切る(2)Bが好きな方を選ぶ(3)残りをAが取る―

  • FrontPage - 情報論的学習理論と機械学習の「朱鷺の杜Wiki」

    朱鷺の杜Wiki(ときのもり うぃき)† 朱鷺の杜Wikiは,機械学習に関連した,データマイニング,情報理論,計算論的学習理論,統計,統計物理についての情報交換の場です.これら機械学習関係の話題,リンク,関連事項,書籍・論文紹介などの情報を扱います. 更新されたページを確認するにはRSSリーダを使って右下のRSSリンクをチェックするか,最終更新のページを参照してください. ページの中でどこが更新されたかを見るには,上の「差分」をクリックして下さい. 数式の表示に MathJax を利用しています.数式の上でコンテキストメニューを使うと各種の設定が可能です.特に設定をしなくても数式は閲覧できますが,フォントをインストールすれば数式の表示がきれいで高速になります.詳しくは 数式の表示 のページを参照して下さい. ごく簡単なWikiの使い方がこのページの最後にあります.トップページやメニューなど

  • 「言語処理のための機械学習入門」を参考に各種モデルに対するEMアルゴリズムを実装したよ - nokunoの日記

    Amazonにもレビューを書いたのですが、高村さんの「言語処理のための機械学習入門」を読みました。実はこのを読むのは2回目で、1回目はドラフト版のレビューをさせていただく機会があったのですが、そのときは「言語処理研究者のための機械学習入門」というタイトルで、ちょっと敷居が高いのではないかとコメントしたら「研究者」の部分が削られたという経緯があったりしました。 それはともかくとして、以前読んだときは時間もなくて実装までする暇はなかったのですが、今度はもうちょっとじっくり読みたいなということで、このブログに書いてみようと思います。EMアルゴリズムは教師なし学習を確率モデルと最尤推定でやろうとするときに必ず出てくる手法で、隠れ変数や欠損値を含む色々なモデルに適用できる汎用的なフレームワークになっています。一般的には混合ガウス分布の場合をまず説明して、それがk-means法の一般化した形になって

  • プログラミングコンテストの本を書きました - iwiwiの日記

    id:wata_orz や kita_masa と少しずつ書いていたプログラミングコンテストのがようやく完成し,発売間近となりました. http://book.mycom.co.jp/book/978-4-8399-3199-5/978-4-8399-3199-5.shtml Google Code Jam,TopCoder,ICPC, 情報オリンピックなどのような,問題を解くプログラミングコンテストの,特にアルゴリズムに関する話題に焦点を絞ったです.全探索や動的計画法などの基礎的な部分から始まりますが,ネットワークフローや数論などのレベルの高い話題まで扱っており,幅広いレベルの人に楽しんでもらえると思います. また,アルゴリズムの解説だけでなく,章の中で POJ (PKU Judge Online) の問題を扱い,章末で Google Code Jam の問題を扱っています.特に,P

    プログラミングコンテストの本を書きました - iwiwiの日記