タグ

algorithmと*programmingに関するkadoppeのブックマーク (40)

  • 挿入ソート - Wikipedia

    挿入ソート(そうにゅうソート、英: insertion sort)あるいは基挿入法は、ソートのアルゴリズムの一つ。整列してある配列に追加要素を適切な場所に挿入すること。 時間計算量は平均・最悪ケースでともに Ο(n2) であり、クイックソートやマージソートなどと比べれば遅い。しかし、 アルゴリズムが単純で実装が容易 小さな配列に対しては高速 安定 in-placeアルゴリズム オンラインアルゴリズム などの特徴から利用されることがある。 挿入ソートを高速化したソート法として、シェルソートが知られている。 まず0番目と1番目の要素を比較し、順番が逆であれば入れ換える。次に、2番目の要素が1番目までの要素より小さい場合、正しい順に並ぶように「挿入」する(配列の場合、前の要素を後ろに一つずつずらす)。この操作で、2番目までのデータが整列済みとなる(ただし、さらにデータが挿入される可能性があるの

  • 選択ソート - Wikipedia

    選択ソート(英: selection sort)は、ソートのアルゴリズムの一つ。 配列から最小値を探し、配列の先頭要素と入れ替えていくことで並べ替える。 最良時間計算量は O(n2) と遅いため、一般にはクイックソートなどのより高速な方法が利用される。しかし、空間計算量が限られるため他の高速な手法が使えない場合や、ソートする配列が充分小さく、選択ソートが高速に動作することが保証されている場合に利用されることがある。 選択ソートは内部ソートである。また、安定ソートではない。 選択ソートの改良として、ヒープソートが挙げられる。 Selection-Sort-Animation 選択ソートは以下の手順で行う: 1 番目の要素から最後尾の要素までで最も値の小さいものを探し、それを 1 番目の要素と交換する(1番目の要素までソート済みとなる) 以降同様に、未ソート部分の最小要素を探索し、未ソート部分

    選択ソート - Wikipedia
  • バブルソート - Wikipedia

    バブルソート(英: bubble sort)は、隣り合う要素の大小を比較しながら整列させるソートアルゴリズム。 アルゴリズムが単純で実装も容易である一方、最悪時間計算量は O(n2) と遅いため、一般にはマージソートやヒープソートなど、より最悪時間計算量の小さな(従って高速な)方法が利用される。 また、安定な内部ソートであり、並列計算との親和性が高いという利点もある。 基交換法、隣接交換法[1]あるいは単に交換法とも呼ばれる。「バブルソート」という呼称自体はケネス・アイバーソンの1962年の著書 “A Programming Language” に由来すると考えられる[2]。 バブルソートにおける要素の移動例を示した図 全ての要素に関して、隣接する要素と比較し順序が逆であれば入れ替える。これを要素数-1回繰り返すことでソートを行う。なおこの繰り返しは、入れ替えが起こらなくなった時点で(そ

    バブルソート - Wikipedia
  • マージソート - Wikipedia

    マージソートの様子 マージソートは、ソートのアルゴリズムで、既に整列してある複数個の列を1個の列にマージする際に、小さいものから先に新しい列に並べれば、新しい列も整列されている、というボトムアップの分割統治法による。大きい列を多数の列に分割し、そのそれぞれをマージする作業は並列化できる。 n個のデータを含む配列をソートする場合、最悪計算量O(n log n)である。分割と統合の実装にもよるが、一般に安定なソートを実装できる。インプレースな(すなわち入力の記憶領域を出力にも使うので、追加の作業記憶領域を必要としない)バリエーションも提案されているが、一般には、O(n)の追加の作業記憶領域を必要とする[1]。 (ナイーブな)クイックソートと比べると、最悪計算量は少ない[1]。ランダムなデータでは通常、クイックソートのほうが速い。 1945年、フォン・ノイマンによって考案された[2]。 基的な

    マージソート - Wikipedia
  • 二分探索 - Wikipedia

    二分探索アルゴリズムの視覚化。探索目標値は7である。 二分探索(英: binary search)もしくはバイナリサーチとは、計算機科学において整列配列(英語版)の中から目標の値の位置を見つけ出す探索アルゴリズム[1][2]。このアルゴリズムでは、探索目標と、配列の中央に位置する要素とをまず比較する。値が等しくない場合、目標が存在する可能性がない側の半分の部分配列を除外し、残りの半分について中央要素との比較を再び行う。この手続きを目標値が見つかるまで繰り返す。配列が空になって終了したなら、元の配列に目標値が存在しなかったということである。 二分探索は対数時間(英語版)で動作するアルゴリズムであり、最悪のケースにおいて比較演算を 回行う( n は配列の要素数)[注釈 1][3]。二分探索は配列が特に小さくなければ線形探索より高速であるが、実行するには配列があらかじめソートされていなければなら

    二分探索 - Wikipedia
  • 幅優先探索 - Wikipedia

    ドイツの都市間の接続を示した例 フランクフルトから幅優先検索を行った場合にできる木構造 幅優先探索(はばゆうせんたんさく、英: breadth first search)はグラフ理論(Graph theory)において木構造(tree structure)やグラフ(graph)の探索に用いられるアルゴリズム。アルゴリズムは根ノードで始まり隣接した全てのノードを探索する。それからこれらの最も近いノードのそれぞれに対して同様のことを繰り返して探索対象ノードをみつける。「横型探索」とも言われる。 幅優先探索は解を探すために、グラフの全てのノードを網羅的に展開・検査する。最良優先探索とは異なり、ノード探索にヒューリスティクスを使わずに、グラフ全体を目的のノードがみつかるまで、目的のノードに接近しているかどうかなどは考慮せず探索する。

    幅優先探索 - Wikipedia
  • Bloom filter の気持ち - アスペ日記

    Bloom filter について書いてみる。 実装例についてはBloom filterのシンプルな実装 - 西尾泰和のはてなダイアリー等があるので、ここでは「気持ち」中心に。 前提:ハッシュ関数と key-value store の知識 注意:途中、説明のために実際の Bloom filter とは違う実装を導入している。 次の 4点はお互いに関連しているため、適当に混ぜながら書く。 1. Bloom filter でできることはどういうことか 2. Bloom filter はどのように実装されているのか 3. Bloom filter はどのような計算量的特性を持っているか 4. Bloom filter を使うと、どういう時にうれしいか まず、「Bloom filter でできることはどういうことか」について、key-value store (KVS) , set との違いという観

    Bloom filter の気持ち - アスペ日記
  • Bloom filterの説明 — ありえるえりあ

    Bloom filterの説明 以前、bloom filterに言及したことがあるのですが、実は、言及しただけで何も調べていませんでした。 来週、ある人の話を聞く時、知らないとついていけない可能性があるので、調べてみました。 - 参考サイト 感想ですが、予想以上にシンプルでした。 動作イメージ(だけ)は誰でもイメージできます(実装も簡単)。 上の参考サイトも、英語に気後れせず、図だけでも見てください。動作は想像できるはずです。そして、たぶん、その想像は当たっています。 参考サイトを読めば分かることを日語で改めて説明するのも気がひけますが、どうしても英語を読みたくない人のために、簡単に説明してみます。 動作イメージ あ る入力文書が与えられたとして、後で、その文書に、ある単語fooが存在するかを高速にチェックしたい、という問題を想定するのが理解しやすいと思いま す。入力文書に対する前処理を

  • A*(A-star:エースター)探索アルゴリズムの原理

    当サイトは、興味のあること、疑問に思って調べたこと、作業したことなどを、忘れないように書き留めたノートです。 いただいたコメントはすべて、有難く拝見しております。すごく喜んでおります。 その他のお問い合わせは、自己紹介ページからお願いします。 最近よくご覧いただいているページはこちらです。 経路探索アルゴリズムのひとつに、A*(A-star:エースター)探索アルゴリズムと呼ばれるものがあります。 今、迷路の中でスタート地点からゴール地点まで歩くことを考えます。早くゴールへたどり着くために、A*探索アルゴリズムを用いて、最短経路を計算してみます。 A*探索アルゴリズムにはコストという概念があります。今、単純に「コスト」=「距離」と置き換えて考えると、迷路が一様の場合はコストの一番小さな経路が最短経路といえます。つまり、コストが小さくなるような経路を探していくと、最短経路が見つかるわけです。

    A*(A-star:エースター)探索アルゴリズムの原理
  • A* - Wikipedia

    A*探索アルゴリズム A*(A-star、エースター)探索アルゴリズム(エースターたんさくアルゴリズム)は、グラフ探索アルゴリズムの一つ。 最良優先探索を拡張したZ*に、さらにf値として「現時点までの距離」g と「ゴールまでの推定値」h の和を採用したもの[1]。h はヒューリスティック関数と呼ばれる。 A* アルゴリズムは、「グラフ上でスタートからゴールまでの道を見つける」というグラフ探索問題において、ヒューリスティック関数 h(n) という探索の道標となる関数を用いて探索を行うアルゴリズムである。h は各頂点 n からゴールまでの距離のある妥当な推定値を返す関数で、解くグラフ探索問題の種類に応じてさまざまな h を設計することが出来る。例えば、カーナビなどで用いられる単純な二次元の地図での探索では、h としてユークリッド距離 を使うことができ、この値は道に沿った実際の距離のおおまかな予

    A* - Wikipedia
  • 各種レコメンドアルゴリズムの特徴・計算方法まとめ

    各種レコメンドアルゴリズムの特徴をメモ。 間違いの指摘やご意見はお気軽に @ts_3156 までご連絡ください(^^) レコメンドとは 何かしらの「アイテム」をユーザーにおすすめする仕組みのこと。 アイテムは場合によって様々で、ECサイトなら商品、ニュースサイトならブログ記事、ツイッターならユーザーそのもの、がアイテムに当たる。 代表的なレコメンドアルゴリズムの種類 ルールベース 決め打ちレコメンド。 例:(今はA社とタイアップ中だから、)うちの商品を買った人にA社の商品をおすすめしよう コンテンツベース アイテム間の類似度に基づいたレコメンド。 例:野球のバットを買った人には野球のボールをおすすめしよう 協調フィルタリング レコメンドの話で一番話題に登るのはこのアルゴリズム。ユーザーの行動履歴からおすすめするアイテムを決める。アイテム情報を知らずにおすすめする点がポイント。アイテム情報を

  • [数学]最後尾はここではありません!

    塵も積もれば山 目次 ホーム 連絡をする RSS Login Blog 利用状況 投稿数 - 216 記事 - 0 コメント - 7765 トラックバック - 60 ニュース C++とかC#とか数学ネタを投下していく予定です。 [その他のページ] 日々の四方山話を綴った日記出水の日記帳 書庫 2011年12月 (2) 2011年8月 (1) 2011年7月 (1) 2011年1月 (2) 2010年12月 (2) 2010年11月 (2) 2010年10月 (5) 2010年8月 (1) 2010年7月 (1) 2010年5月 (1) 2010年4月 (2) 2010年2月 (8) 2010年1月 (2) 2009年12月 (2) 2009年10月 (5) 2009年9月 (3) 2009年8月 (3) 2009年7月 (5) 2009年6月 (12) 2009年5月 (6) 2009年4

  • Camp Vermont

    Add to Cart Produk ini tidak dapat dibeli karena bermasalah. Silahkan hubungi kami. Dalam dunia perjudian online, slot gacor menjadi salah satu permainan paling populer yang digemari oleh berbagai kalangan. Dengan mekanisme sederhana dan peluang menang besar, slot kerap menjadi pilihan utama bagi pemain baru maupun berpengalaman. Salah satu platform yang sedang naik daun dan menarik perhatian para

  • Spaghetti Source - 各種アルゴリズムの C++ による実装

    ACM/ICPC(プログラミングコンテスト)系列の問題を解くことを目標にして,各種アルゴリズムを C++ で実装してみた.極めて意地が悪い類の問題には対応していないし,特定の入力に対して高速に動くということもない.計算量も最良とは限らない. これらを参考にする方への注意とお願い: これらの記述は正確とは限りません.参考文献を参照することを強く推奨します.間違っている場合は是非教えてください. これらのプログラムは間違っているかもしれません.各人で検証することを強く推奨します.バグがあれば是非教えてください. 分類が怪しいので,これはこっちだろう,ということがあればコメントを下さると助かります. 注意! 現在書き換え中 TODO 分類を正しく行う. 全体的に説明と使い方を詳しく. Verify していないものを Verify. ボロノイ図(いつになることやら……) 基 テンプレート グラフ

  • プログラム・プロムナード

    会誌「情報処理」連載の「プログラム・プロムナード」(2002年4月〜2005年3月掲載)と「Haskellプログラミング」(2005年4月〜2006年3月掲載)はどなたでもご覧になれます。ファイルはすべてPDF形式です。 「Haskellプログラミング」に掲載されたプログラムは http://www.sampou.org/haskell/ipsj/ から取ることができます.

  • 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
  • Introduction To TopCoder, 今日からはじめるTopCoder - フリーフォーム フリークアウト

    移転しました http://please-sleep.cou929.nu/20091005.html

    Introduction To TopCoder, 今日からはじめるTopCoder - フリーフォーム フリークアウト
  • オセロゲーム開発 ~ミニマックス探索法~

    このサイトでは、C言語でのオセロ(リバーシ)のプログラム開発方法を解りやすく説明しています。初級者、初心者でも作れるオセロ実装のコツが満載です。 リバーシは自分と相手との成績争いです。一般にゲームをコンピュータで解く場合には、「ゲーム木(グラフ)」を作り、その木(グラフ)の上で最適な解を探索する方法をとります。 評価値探索では、相手が最善手を打ってきたら困るけれど、もしミスをしたら一気に形勢が変わるような勝負手、といったものは考慮しません。 Minimax(ミニマックス)探索法 ゲームは、自分にとっては最も有利な手を自分が打ち(max)、次に相手が自分にとって 最も不利な手を打ち(min)、それらが交互に繰り返されることによって成り立ちます。 例えば下図の3手先読みを考えてみましょう。一見、自分にとっては最も有利な手は「 7 」ですが、「 7 」を評価値として選択しても良いのでしょうか?

    オセロゲーム開発 ~ミニマックス探索法~
  • 各種ゲームのプログラム解析

    目次 はじめに 解析結果についての解説 ファイナルファンタジーIV ファイナルファンタジーV ファイナルファンタジーVI ドラゴンクエストV ドラゴンクエストVI ドラゴンクエストI・II ドラゴンクエストIII ロマンシング サ・ガ2 ロマンシング サ・ガ3 技術資料 ファイナルファンタジーIV ファイナルファンタジーV ファイナルファンタジーVI ドラゴンクエストV ドラゴンクエストVI ドラゴンクエストI・II ドラゴンクエストIII ロマンシング サ・ガ2 ロマンシング サ・ガ3 今後の予定 おわりに はじめに ゲームの内部で起こっている処理を推測するのはなかなか難しいものです。ユーザーサイドから見れば、ゲームの内部処理はほとんど「ブラックボックス」のようなものです。ユーザーサイドでは「(内部で複雑な処理が行われた末の)最終結果」しかわかりませんし、ゲーム中の様々な要素(各種パラメ

  • ゲーマーでなくても仕組みぐらいは知っておきたいアルゴリズムx40

    高校生の時、数学の先生がこう言いました。 ゲームなんて、開発者が作ったルールの上で遊ばれるだけだ。 と。 その時、ゲーマーな自分はこう思いました。 ゲーマーは、開発者が作ったルールの上で遊ばれたい。 と。 というわけで、普段何気なくプレイしているゲームには、どのようなルール(アルゴリズム)があるのか。それを知るために、いろいろなゲームのアルゴリズムなどを解析しているページへのリンク集を作りました。 ほとんどのゲームのアルゴリズムは正式に発表されていないので、ユーザーの手による逆解析だったり、大学の研究による真面目な考察だったりします。(リンク先には、一部アルゴリズムと呼べないものも含まれています) 各種ゲームのプログラム解析 ドラクエ、FF、ロマサガのプログラム解析 DQ調査報告書(リンク切れ) ドラクエの物理ダメージ計算式は質的にどれも同じだが、細かい部分で微妙に違う RPG INST

    ゲーマーでなくても仕組みぐらいは知っておきたいアルゴリズムx40