タグ

algorithmとjavascriptに関するthree_beeのブックマーク (3)

  • DocBaseの同時編集機能を実現しているアルゴリズム – KRAY Inc.

    はじめに 皆さんはGoogleドキュメントやHackMDを使ったことはあるでしょうか。これらのツールは「ネット越しに同時に複数の人で1つのドキュメントを編集できる」という特徴を持っています。お互いの編集がリアルタイムに反映されるので、相手が何を書くのかを意識することなく、簡単にドキュメントを複数人で編集することができます。これを実現するためには、同時編集に参加しているユーザ全員の編集内容がネットワークの延滞に影響されることなく、それぞれの編集内容をうまい具合にマージして反映してくれるような賢いアルゴリズムが必要になります。今回はこのアルゴリズムに関して書きます。 編集内容のマージとは 編集内容をうまい具合にマージしなければいけないケースを考えてみます。 AさんとBさんが次のドキュメントを同時編集するとします。最初は、お互いブラウザ上では次のように見えています。当然、この状態ではお互いに見え

    DocBaseの同時編集機能を実現しているアルゴリズム – KRAY Inc.
  • JavaScript でオセロを実装する(原始モンテカルロAI編) | Webシステム開発/教育ソリューションのタイムインターメディア

    以前、オセロの対戦AIの作成しましたが、そこでは実装を簡略化する為に盤面の価値を 盤面の価値 = 自分の石の数 – 相手の石の数 という単純な方法で決めていました。 でも、これには問題があります。 同じ石でも配置場所によって価値は異なるはずです(例: 角は最強)。それが考慮されていません。ゲーム終盤になってくると石の数が重要になってきます。でも序盤から石の数を重視するのは方向性としておかしいです。 という訳で、 序盤から中盤では石の配置場所を重視する終盤では石の数を重視する 形で盤面の価値を算出すれば、結構良さそうなAIになりそうです。 しかし、今度は 「序盤」「中盤」「終盤」をどのように区別するのか?石の配置場所の強弱はどう決めるのか?同じ配置場所でも周囲の状況次第で強弱が異なるのでは? という問題が出てきます。これは作るのが面倒臭そうです。 どうにかしてお手軽かつそこそこ強そうなAI

    JavaScript でオセロを実装する(原始モンテカルロAI編) | Webシステム開発/教育ソリューションのタイムインターメディア
  • 最短経路を見つけるアルゴリズムをビジュアルで見る「PathFinding.js」

    カーナビやスマートフォンのマップアプリなど、目的地への最短ルートを一瞬で割り出してくれるサービスのお世話になっている人も多いと思いますが、その仕組みがどうなっているのかを知っている人はほとんどいないはず。その処理には、ルート探索専用のアルゴリズムが用いられているのですが、そんなアルゴリズムの動作する様子や、種類の違いによる結果の変化をわかりやすく見せてくれるサイトが「PathFinding.js」です。 PathFinding.js http://qiao.github.io/PathFinding.js/visual/ このサイトでは、スタート地点からゴール地点までの最短ルートを発見するさまざまなアルゴリズムを、自分で設定を変えながらインタラクティブに体験できるようになっています。2点の間に障害物を配置することも可能で、以下のムービーでは画面左下の緑色の地点から右上にある赤い地点までのル

    最短経路を見つけるアルゴリズムをビジュアルで見る「PathFinding.js」
  • 1