タグ

algorithmに関するakishin999のブックマーク (328)

  • ページ移転のお知らせ

    ご指定のホームページは下記のアドレスに移動しました。 ブックマークなどの登録変更をお願いします。 http://usapyon.game.coocan.jp/ ※10秒後に自動的に移転先のページにジャンプします。

  • 5枚の手札を元にポーカーの役を判定する

    ポーカーの役判定は、難しい様で簡単です。実は複雑でも無く数学的な知識も必要としないですし、何より考え易いです。  人が何の様にしてポーカーの役を判別しているか、そこに目を向け、観察すれば良いかと思います(と言っても大層な話では無いですが)。  尚、ポーカーを知っていることを前提に進めるので、知らない場合は、事前に勉強しておいて下さい。  まず、説明を解り易くする為、何れ必要になる分類を決めておきます。  ワンペアは同じランクのカードが2枚、スリーカードなら3枚、フォーカードなら4枚、ツーペアならワンペアが2組、フルハウスならワンペアとスリーカードの組み合わせ。これらの役は、同じランクのカードの組み合わせなので一纏めに判断すれば良いので、これらをペア系と呼ぶことにします。  次にフラッシュ、これは同じスーツを五枚必要とする。これをフラッシュ系と呼ぶことにします。  ストレートは、ランクのカー

  • 手続き型のダンジョン生成アルゴリズム | プログラミング | POSTD

    この投稿では、以前に TinyKeepDev が こちら で述べたランダムなダンジョンを生成する技法について説明しようと思います。元の投稿に比べて、もう少し具体的に話を進めるつもりです。まずは、以下に示したアルゴリズムの一般的な動作をご覧ください。 部屋の生成 はじめに、幅と高さを持つ部屋を円の中にランダムに配置しましょう。TKdevのアルゴリズムは、各部屋のサイズを生成するのに正規分布を用いています。これは一般的にとてもいいアイデアです。なぜかと言うと、これによってより多くのパラメータを扱うことができるようになるからです。幅/高さの平均と標準偏差間の異なる比率を選ぶと、通常は見た目の違うダンジョンとなります。 ここで実行すべき関数は getRandomPointInCircle です。 function getRandomPointInCircle(radius) local t = 2

    手続き型のダンジョン生成アルゴリズム | プログラミング | POSTD
  • pythonと遺伝的アルゴリズムで作るFX自動売買システム その1 - Qiita

    作ったモノ 次の機能を実装してみました 1. 最新の為替レートを取得し続けるプログラム 2. AIを稼働させ自動売買するプログラム 3. 最新のデータを元に新しいAIを遺伝的アルゴリズムで生成するプログラム 4. AIのパフォーマンスを測定して引退と取引通貨単位を管理するプログラム 背景 OANDAが提供している取引用APIが、かなり良い感じだったので実現できました。 特に1通貨単位(1ドル単位)で売買できるため、AI100個動かし取引を重ねても損失は1日数十円に収まります。試験時に売買システムがバグで暴走しても安心です。このAPIが無ければ個人では実現出来なかったので、良い時代になったなーと思います。 http://developer.oanda.com/rest-live/development-guide/ 遺伝的アルゴリズムの特徴 最適化問題の準最適解を短時間で解ける。 最適化問題

    pythonと遺伝的アルゴリズムで作るFX自動売買システム その1 - Qiita
  • 強化学習で考えるギャンブラーの最適行動 - kivantium活動日記

    強化学習と呼ばれる機械学習の一分野があります。機械学習というと、入力に対して正解の出力を当てる教師あり学習が話題になることが多いですが、強化学習では明示的に正解が与えられません。ある行動を試してみて、それに対して得られる「報酬」から自分でどのような行動が良い結果をもたらすのかを判断して、より良い行動を学習するアルゴリズムになっています。 強化学習にはチェスやリバーシなどといったボードゲームAIやロボットの行動学習などの応用例があります。この前話題になったDeep Q Network、通称DQNも強化学習の一種です。応用例が面白いにも関わらず、PRMLなどの主要な機械学習の教科書では強化学習を扱わないことが多いので、いま強化学習だけの参考書を買って勉強しています。 強化学習 作者: Richard S.Sutton,Andrew G.Barto,三上貞芳,皆川雅章出版社/メーカー: 森北出

    強化学習で考えるギャンブラーの最適行動 - kivantium活動日記
  • グーグルのバグ予測アルゴリズムを実装したツール「bugspots」について - Qiita

    bugspotsはgoogleが開発した、バグ予測アルゴリズムをオープンソースとして開発されたツールです。 細かい説明は後にまとめますが、実際に使ったのを見るほうが分かりやすいので早速使ってみます。 実際に使ってみる 1.bugspotsをgemでインストール 3.結果を見てみる このHotspotsの下に出力されている左の数値がバグが起こりやすい度合いを表すスコア、右が対象のファイルになる。 メチャクチャ簡単に導入できるので、 リファクタやコードレビューなどで目星をつけるという意味では有用なツールな気がしました。 背景の説明 googleでは、チェックイン前にユニットテストやコードレビューが行われているが、コードが大量になってくると、ユニットテストやコードレビューをすり抜けたバグも少なからず発生してします。 googleではこの問題に対処するために、独自の「バグ予測アルゴリズム」を採用し

    グーグルのバグ予測アルゴリズムを実装したツール「bugspots」について - Qiita
  • Googleのバグ予測アルゴリズムをGitBucket Pluginに実装してみた - Qiita

    バグ予測の新たな指標として、Googleがちょっと前に発表していたアルゴリズムを使って見えるようにしてみた。 以下のサイトを参考にさせていただきました。 https://github.com/igrigorik/bugspots http://google-engtools.blogspot.jp/2011/12/bug-prediction-at-google.html http://qiita.com/okappy/items/e5fc62f9026e0d73c3e9 Pluginは、こちら。 https://github.com/yoshiyoshifujii/gitbucket-bugspots-plugin 使い方 Pluginを適用していただいたらすぐに使えます。 リポジトリの画面を開いていただくと、下図のサブメニュー位置にリンクが表示されます。 リンクを押下して飛んでいただき

    Googleのバグ予測アルゴリズムをGitBucket Pluginに実装してみた - Qiita
  • 三目並べで学ぶミニマックス法 | POSTD

    最近、「絶対に勝てない三目並べ」のゲームを作ったのですが、非常にささやかながらも楽しいプロジェクトで、いろいろ学ぶこともできました。ゲームの全体像に興味がある方は、 こちらでゲームを試してみてください 。 無敵のゲームにするには、コンピュータ側が全ての手を計算し、何らかの基準を用いて最善の手を決められるようなアルゴリズムを作る必要があります。多岐にわたって調べた結果、このプロジェクトにはどうやら ミニマックス アルゴリズムが適当そうだということが分かりました。 このアルゴリズムを根的な意味で真に理解し、自分のゲームに実装できるようになるまでにはある程度の時間が必要でした。多くのコードサンプルと説明に目を通しましたが、私が能なしだからか、どれを見てもプロセスの内実を十分に理解することはできなかったのです。この投稿が、ミニマックスアルゴリズムに関する皆さんの理解に少しでもお役に立てたらと思い

    三目並べで学ぶミニマックス法 | POSTD
  • 画風を変換するアルゴリズム - Preferred Networks Research & Development

    Deep Neural Networkを使って画像を好きな画風に変換できるプログラムをChainerで実装し、公開しました。 https://github.com/mattya/chainer-gogh こんにちは、PFNリサーチャーの松元です。ブログの1行目はbotに持って行かれやすいので、3行目で挨拶してみました。 今回実装したのは”A Neural Algorithm of Artistic Style”(元論文)というアルゴリズムです。生成される画像の美しさと、画像認識のタスクで予め訓練したニューラルネットをそのまま流用できるというお手軽さから、世界中で話題になっています。このアルゴリズムの仕組みなどを説明したいと思います。 概要 2枚の画像を入力します。片方を「コンテンツ画像」、もう片方を「スタイル画像」としましょう。 このプログラムは、コンテンツ画像に書かれた物体の配置をそのま

    画風を変換するアルゴリズム - Preferred Networks Research & Development
  • プログラムで簡単理解! 7つの超重要な整列アルゴリズム(ソートアルゴリズム)まとめ - TechNote

    情報技術者試験や応用情報技術者試験の時期も近まった今、あらためて整列アルゴリズムをまとめてみたので、備忘録を兼ねてメモを残します。 即席コードも併せて記載しました。最低限のプログラムを読める方はこちらを読んだほうが理解しやすいかも知れません。PHPで書いてますが、どの言語にも読み換えがきく簡単なものです。 世界でもっとも強力な9のアルゴリズム 作者:ジョン・マコーミック日経BPAmazon 整列アルゴリズムとは? (1)バブルソート (2)選択ソート (3)挿入ソート (4)クイックソート(バブルソートの発展Ver) (5)ヒープソート(選択ソートの発展Ver) (6)シェルソート(挿入ソートの発展Ver) (7) マージソート あわせて読みたい 整列アルゴリズムとは? 1列に並べられたデータをある規則に従って並べ替える処理を整列(ソート)といいます。 整列アルゴリズムは、大きくはバブ

    プログラムで簡単理解! 7つの超重要な整列アルゴリズム(ソートアルゴリズム)まとめ - TechNote
  • 本当に実用的なたったひとつのソートアルゴリズム - CARTA TECH BLOG

    コンテンツメディア事業部の新卒エンジニアがお送りいたします。 突然ですが、皆さんの好きなソートアルゴリズムはなんですか? 私は基数ソートのスマートでストイックな雰囲気に惹かれます。 とはいえ、普段の開発では「どのソートアルゴリズムを使うか」を意識することは少ないのではないでしょうか。 むしろ現実世界で「トランプが全部揃ってるか」を手作業で確認するときとかのほうが、実はソートアルゴリズムが必要なのかもしれません。 ということで(?)、そのような現実的な場面で、当に実用的なソートアルゴリズムを決める戦いが始まりました。 選手紹介 今回試したソートアルゴリズムは、独断と偏見で選んだ以下の5種類。 1 挿入ソート シンプル・イズ・ベスト!正直言ってベンチマークの噛ませ犬! 2 クイックソート 「クイック」の名前はダテじゃない!王者の貫禄を見せてやれ! 3 マージソート 安定感のある隠れた実

    本当に実用的なたったひとつのソートアルゴリズム - CARTA TECH BLOG
  • #JJUG - Java で最速のハッシュアルゴリズムを求めて

    【東京】【聴講者募集】JJUG ナイト・セミナー 「ビール片手にLT&納涼会」の発表資料です。 https://jjug.doorkeeper.jp/events/28182

    #JJUG - Java で最速のハッシュアルゴリズムを求めて
  • ハクビシンにもわかる全文検索 - Qiita

    高速な全文検索アルゴリズムであるFM-indexについて解説する。理解しがたい点や間違っている点があれば是非コメントで指摘してほしい。 概要 FM-indexはリニアな文字列に対して検索をするアルゴリズムで、主に簡潔データ構造とBWT(およびLF mapping)という二つのアイデアから成り立っている。BWTはBurrows-Wheeler変換のことで、文字列を特殊な並び順に変換するという可逆関数である。BWTされた文字列を簡潔データ構造固有の操作をすることで、クエリ文字列の長さに比例した短い時間で文字列を探し出すのがFM-indexだ。 簡潔データ構造 簡潔データ構造に関してはFM-indexで必要となる二つの関数だけ説明して、詳細は次の機会に譲るとする。さて、二つの関数はともに文字列のある位置より前の部分に含まれている文字の数を数え上げるというものでrank()とrankLessTha

    ハクビシンにもわかる全文検索 - Qiita
  • アルゴリズムまとめ by PHP - Qiita

    PHPでアルゴリズムを勉強しました やはり、アルゴリズムは写経、コードを読むだけでは駄目で、 実際手で流れを書きながらではないと理解できないです。 以下、アルゴリズムのコードです リンクはGitHubに飛びます。 探索 チェインハッシュ法による探索 バイナリサーチ リニアサーチ 深さ探索 文字列探索 Boyer Moore法 2分木 ソート マージソート クイックソート シェルソート 単純挿入ソート 単純選択ソート バブルソート その他 fizzBuzz リングバッファ 階乗の計算 ハノイの塔 ユークリッドの互除法 7パズル 8個王妃問題 ダイクストラ法 ナップザック問題 フィボナッチ数列 (メモ化再帰含む) 1時間以内に解けなければプログラマ失格となってしまう5つの問題 問題1 問題2 問題3 問題4 問題5 参考書籍 明解 Javaによるアルゴリズムとデータ構造 プログラミングの宝箱

    アルゴリズムまとめ by PHP - Qiita
  • JavaScript の Array#sort で return 0 すると要素の順番は不定になります - latest log

    qiita.com を拝見してました。心当たりがあるのでメモ程度に。 JavaScript の Array#sort は仕様的に非安定ソートで、実際もそうです。実装により異なる結果が得られます。 より具体的には、 [...].sort(function(a, b) { return 0; }); と評価関数の中で return 0 してしまうと要素の順番は保証されません。 return 0 を使わずに記述してください。 この問題については、 http://ofb.net/~sethml/is-sort-stable.html を参照していただくと学びがあります。 以下は僕のツイートを Array#sort で検索した時にでてくる駄文です。見事にいい感じに苦しんでますね。みなさんは気をつけてください。😃 モジュールの依存関係を解決する部分のロジックは8回ほど書き直しました。確かにあれ全く簡

    JavaScript の Array#sort で return 0 すると要素の順番は不定になります - latest log
  • サルでも分かるwaifu2xのアルゴリズム

    ログイン

    サルでも分かるwaifu2xのアルゴリズム
  • 配列シャッフルFisher-Yatesを覚え間違えていた件 - クジラ机ブログ

    ここしばらく、月刊で「日経ソフトウェア」へHTML5に関する連載をさせていただいています。毎回、HTML5のAPIや、ゲームのアルゴリズムを紹介していたのですが、先日、Twitterで読者の方から、どや顔で紹介した、Fisher-Yatesアルゴリズムが間違っているとのご指摘を受けました。ちなみに、Fisher-Yates法とは、配列をシャッフルする際に用いるアルゴリズムで、非常に少ない手順でよりランダムに並び変えることができます。 それで、改めて調べてみると・・・私が書いた方法では、シャッフルの精度が下がってしまうことが分かりました。お恥ずかしい話です。 私が間違えて書いたコード: // カードを定義 var cards = []; for (var i = 0; i < 52; i++) { cards[i] = i; } // Fisher-Yatesアルゴリズムでシャッフル

    配列シャッフルFisher-Yatesを覚え間違えていた件 - クジラ机ブログ
  • 最短経路を見つけるアルゴリズムをビジュアルで見る「PathFinding.js」

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

    最短経路を見つけるアルゴリズムをビジュアルで見る「PathFinding.js」
  • レベルデザインに遺伝的アルゴリズムを活用する

    2015年Apr6日レベルデザインに遺伝的アルゴリズムを活用する こんにちは。オインクゲームズの新藤です。 先日、弊社のデジタルゲーム第二弾となる「OLYM」がリリースされました。OLYM はターン制限のあるパズルゲームで、各ステージごとに決められたターン数が設けられてています。このターン数以内に目標を達成できないと、クリア失敗になってしまいます。そのため、このターン数をどう決めるかが、難易度に大きく影響する一因となっています。OLYM では、ステージごとのターン数を決定するのに遺伝的アルゴリズムを活用したので、今日はそれをご紹介します。 最終的にやったことは非常にシンプルです。端的に言えば、AI に実際にパズル解かせて、何手で解けたかをレベルデザインの参考にするということです。この AI を作る際に、遺伝的アルゴリズムを活用しました。そもそもは「自動でパズル解いてくれる AI がいたら面

    レベルデザインに遺伝的アルゴリズムを活用する
  • 色々なダイクストラ高速化

    HCPC 勉強会 (2019/4/4) - Convex Hull Trick ※文字が見えない場合は、ダウンロードするかフルスクリーンにしてご覧ください

    色々なダイクストラ高速化