タグ

algorithmに関するtomoemonのブックマーク (58)

  • 10兆までの素数のリストを作ってみませんか?

    もしあなたがプログラマだったら、プログラムを書いて10兆までの素数のリストを作ってみてほしい。情報システムの開発に携わる人であれば、10兆までの素数のリストを出力するシステムの見積もりを考えてみてほしい。費用はどれくらいかかるか、納期はどれくらいか、あなたはどんな答を出すだろうか。仕様書はうまく書けるだろうか。 記者がこんなことをいうのは、自分で10兆までの素数のリストを作ってみて、とても面白かったからだ。図1のプログラムを書いて出力が成功するまで約2週間、夢いっぱいの楽しいひとときを過ごせた。予期せぬ問題も発生したけれど、最後にはコンピュータがまだまだ発展する可能性を持つと感じられた。素数のリストを作る演習は、プログラミングと情報システムにおける有益な演習の一つである。 アルゴリズムの有効性が納得できる この演習の面白い点は、まずアルゴリズムの有効性を納得できる点だ。素数(prime)は

    10兆までの素数のリストを作ってみませんか?
    tomoemon
    tomoemon 2010/05/29
    あとでやる。きっと。たぶん。
  • 最強最速アルゴリズマー養成講座:アルゴリズマーの登竜門、「動的計画法・メモ化再帰」はこんなに簡単だった (1/5) - ITmedia エンタープライズ

    動的計画法とメモ化再帰 今回は、非常によく用いられるアルゴリズムである、「動的計画法」「メモ化再帰」について説明します。この2つはセットで覚えて、両方使えるようにしておくと便利です。 なお、メモ化再帰に関しては、第5・6回の連載の知識を踏まえた上で読んでいただけると、理解が深まります。まだお読みになっていない方は、この機会にぜひご覧ください。 中学受験などを経験された方であれば、こういった問題を一度は解いたことがあるのではないでしょうか。小学校の知識までで解こうとすれば、少し時間は掛かるかもしれませんが、それでもこれが解けないという方は少ないだろうと思います。 この問題をプログラムで解こうとすると、さまざまな解法が存在します。解き方によって計算時間や有効範囲が大きく変化しますので、それぞれのパターンについて考えます。 以下の説明では、縦h、横wとして表記し、プログラムの実行時間に関しては、

    最強最速アルゴリズマー養成講座:アルゴリズマーの登竜門、「動的計画法・メモ化再帰」はこんなに簡単だった (1/5) - ITmedia エンタープライズ
  • トップクラスだけが知る「このアルゴリズムがすごい」――「探索」基礎最速マスター

    トップクラスだけが知る「このアルゴリズムがすごい」――「探索」基礎最速マスター:最強最速アルゴリズマー養成講座(1/4 ページ) プログラミングにおける重要な概念である「探索」を最速でマスターするために、今回は少し応用となる探索手法などを紹介しながら、その実践力を育成します。問題をグラフとして表現し、効率よく探索する方法をぜひ日常に生かしてみましょう。 まだまだ活用可能な探索 前回の「知れば天国、知らねば地獄――『探索』虎の巻」で、「探索」という概念の基礎について紹介しました。すでに探索についてよく理解している方には物足りなかったかと思いますが、「問題をグラフとしてうまく表現し、そのグラフを効率よく探索する」というアルゴリズマー的な思考法がまだ身についていなかった方には、得るものもあったのではないでしょうか。 前回は、「幅優先探索」と「深さ優先探索」という、比較的単純なものを紹介しましたが

    トップクラスだけが知る「このアルゴリズムがすごい」――「探索」基礎最速マスター
    tomoemon
    tomoemon 2010/02/07
    さくさく解けるようになるには練習が必要だわね
  • Algorithms with Python

    サービス終了のお知らせ いつもYahoo! JAPANのサービスをご利用いただき誠にありがとうございます。 お客様がアクセスされたサービスは日までにサービスを終了いたしました。 今後ともYahoo! JAPANのサービスをご愛顧くださいますよう、よろしくお願いいたします。

  • d.y.d. Bowling

    21:11 07/02/26 俺定義で書けたら via この辺。 それをネタ元にして一人用パズルゲームが作れたらNP完全ぽい。 二人用対戦ゲームが作れたらPSPACE完全ぽい、というのを時々聞きます。 NP完全の一番基的な問題が SAT: bool型変数 x1 ~ xn を and と or と not で組み合わせた式があります。 さあ、あなたは、変数 x1 ~ xn の値をうまく決めて式全体の値を true にすることができますか?? という答えを見つけましょう系なのに対して、PSPACE完全の一番基的な問題が QBF: bool型変数 x1 ~ xn を and と or と not で組み合わせた式があります。 x1 をうまく決めて、「例えx2 がtrueでもfalseでも、そこですかさず x3 をうまく決めたら、 x4 がtrueになってもfalseになっても (以下繰り返し

  • Game complexity - Wikipedia

  • .NET でクレジットカードの番号チェックを行う方法 - 2009-09-25 - 登 大遊@筑波大学情報学類の SoftEther VPN 日記

    .NET で画像イメージ (Bitmap のインスタンス) を JPEG データのバイトデータにメモリ内で変換するには、以下のようにするとよい。 public static byte[] SaveAsJpeg(Bitmap bmp, int quality) { EncoderParameters eps = new EncoderParameters(1); EncoderParameter ep = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, quality); eps.Param[0] = ep; ImageCodecInfo info = getEncoderInfo("image/jpeg"); MemoryStream ms = new MemoryStream(); bmp.Save(ms, inf

    .NET でクレジットカードの番号チェックを行う方法 - 2009-09-25 - 登 大遊@筑波大学情報学類の SoftEther VPN 日記
  • ぜひ押さえておきたいコンピューターサイエンスの教科書

    僕はバイオインフォマティクスという生物と情報の融合分野で研究を行っています。東大の理学部情報科学科にいた頃は同僚のマニアックな知識に驚かされたものですが、そのような計算機専門の世界から一歩外に出ると、それが非常に希有な環境だったことに気が付きました。外の世界では、メモリとディスクの違いから、オートマトン、計算量の概念など、コンピューターサイエンスの基礎知識はあまり知られていませんでした。コンピューターサイエンスを学び始めたばかりの生物系の人と話をしているうちに、僕が学部時代に受けた教育のうち、彼らに欠けている知識についても具体的にわかるようになってきました。 バイオインフォマティクスに限らず、今後コンピュータを専門としていない人がコンピューターサイエンスについて学ぶ機会はますます多くなると思われます。そこで、これからコンピューターサイエンスを学ぼうとする人の手助けとなるように、基礎となる参

  • 人工知能の話題: TDギャモン (TD-Gammon)

    TDギャモン (TD-Gammon) TDギャモン (TD-Gammon)(注1)は,G.Tesauroが開発したシステムで,バックギャモンというゲームの対戦を行います.強化学習(注2)という方法で自分でいろいろな手を試して強くなることができます. はじめに,バックギャモンのルールについてごく簡単に説明します.このゲームは右の図の盤上で,赤と黒の丸いコマを受け持つ二人が対戦します.コマをおくマスは図の水色と黄色の部分です.ルールは「すごろく」と似ています.図のようにお互い15個ずつコマを並べた状態から始めます.2個のサイコロの目に応じて交互にコマを進めて,全部のコマをアガリまで先に動かした方が勝ちです.赤は反時計回り(24→1の方向)に,黒は時計回り(1→24の方向)にコマを動かします. その他,相手をとばしてしまうヒットや,相手の進行を妨害できるブロックといったルールがあり,駆け引きが必

  • KamoLand

    KamoLand Mastodon

    tomoemon
    tomoemon 2009/05/21
    ぷよぷよのAI
  • アニメ顔の色情報に基づいた画像検索 - Imager::AnimeFace demo

  • 計算量理論 - PukiWiki

    と定義する.このとき,と なる のうちより良い方の解を選ぶ.(どちらも実行可能解であることに注意.) 計算時間 ソートにかかる時間,条件を満たすを求めるためにかかるので,合わせてである. 多項式時間. 近似値比 との二つの解の和は明らかに最適解以上のものとなっているので,近似値比はである. KNAPSACK問題はFPTASである. 近似値比アルゴリズムが存在することを示せばよい. 具体的なアルゴリズム 2近似値比アルゴリズムによる解をとする. 与えられたに対して, と置く. 各要素についてと修正したinstanceについて動的計画法を用いて得られる解をとする. とを比べ,大きいほうを出力する.また,その解をとする. 実行時間 動的計画法による計算時間が支配的. . 近似値比 最適解をと書くことにすると, 内容 † 計算量理論とは、計算の難しさの学問。 例)n都市TSP n頂点の

  • vpython と sf によるルービック・キューブ

    vpythonsf によるルービック・キューブ Rubik's Cube を例題に sf と vpython の機能の素晴らしさを示します。 vPython のグラフィック機能を使って Rubik's Cube の内部構造を表現します。 vPython を使って Rubik's Cube ゲームのシミュレーション・プログラムを作ります。vPython のおかげで、グラフィックス処理のプログラムは 150 行程度で済んでしまっています。 Rubik's Cube の面の回転操作はは群演算と見なせます。その群は S48 対称群の部分群です。ルービック・キューブの六面それぞれを回転する操作は 48 x 48 の置換行列で表現できます。この置換行列を sf のファイル変数として表現します。抽象的な記号ではなく、sf を使って実際に計算させられる行列ファイル変数を作ります。 ルービック・キュー

  • http://www.ccad.sist.chukyo-u.ac.jp/~mito/syllabi/compaction/frame.htm

    tomoemon
    tomoemon 2009/05/16
    情報圧縮概論
  • 「しりとり」の戦いかた、すこし反省した - Active Galactic : 11次元と自然科学と拷問的日常

    「しりとり」は経験者人口が極めて多いゲームだけど、鬼神のごとき強さで他を圧倒するしりとりプレイヤーを私は知らない。ちょっと真剣に戦ってみたところで、 そんな程度のレベルで満足していやしないか。 さいしょは「る」の同字返しでガッチリ組み合う。先に「る→る」のストックが切れて、「る」で返せなくなったほうがひたすら「る攻め」で投げられ続ける。 小学生の時から進歩していないような、こんな大雑把でマンネリな「る攻め」戦略から脱却できないものか。 攻撃防御比最大の最強文字「る」 復習。周知の事実だが「る」は強い。 下の表は、[A](文字Xで終わる単語)と、[B](文字Xではじまる単語)をその比[A/B]の高いものから順にリストしたものである。標の単語数は20万語であり豚辞書から、伸ばし棒をトリムした上で抽出した。*1 文字X[A]Xで終わる単語[B]Xで始まる単語[A/B] 1位る43235208.

    「しりとり」の戦いかた、すこし反省した - Active Galactic : 11次元と自然科学と拷問的日常
  • C言語 Super Technique 講座

    このページは、C言語の中級テクニックを中心に解説する。長らくプログラマをしていると、C言語の面白い使い方例が蓄積している。これらを一挙公開するために、このページを作ったのである。しかし、単にCに留まらず、他の言語の面白い特徴なども紹介していく。 内容的にはかなりヘヴィである。当然のことながら、「ポインタ虎の巻」程度の内容はちゃんと使いこなせることを前提とする。意外な技、落し穴、派手なテクニックなど、内容満載だが、ちゃんとデータ構造とアルゴリズムなども説明できれば良いと思う。(まあ、ぼちぼちやってきいます...) 以下の目次には手引きのために、評価がつけてある。凡例として示す。 レベル その解説で記載されている内容のレベル 有用度 その内容が実際に役に立つものかどうか 邪悪度 その内容が薦める方法が、一般的なコーディング規約の中で「邪悪」とされがちなものであるか否か。関数ポインタの活用(濫用

    tomoemon
    tomoemon 2009/04/29
    longjmpの記事が面白かった
  • Aho Corasick 法 - naoyaのはてなダイアリー

    適当な単語群を含む辞書があったとします。「京都の高倉二条に美味しいつけ麺のお店がある」*1という文章が入力として与えられたとき、この文章中に含まれる辞書中のキーワードを抽出したい、ということがあります。例えば辞書に「京都」「高倉二条」「つけ麺」「店」という単語が含まれていた場合には、これらの単語(と出現位置)が入力に対しての出力になります。 この類の処理は、任意の開始位置から部分一致する辞書中のキーワードをすべて取り出す処理、ということで「共通接頭辞検索 (Common Prefix Search)」などと呼ばれるそうです。形態素解析Wikipediaはてなキーワードのキーワードリンク処理などが代表的な応用例です。 Aho Corasick 法 任意のテキストから辞書に含まれるキーワードをすべて抽出するという処理の実現方法は色々とあります。Aho Corasick 法はその方法のひと

    Aho Corasick 法 - naoyaのはてなダイアリー
    tomoemon
    tomoemon 2009/04/21
    ACオートマトン
  • ラムダ計算とチューリングマシンの違い 2009-04-13 - きしだのはてな

    ぼくもYコンビネータがわかるようになるまではそうだったのだけど、Yコンビネータを使うとどのような処理ができるのかがよくわからなくて悩んでいる人が多いように思う。他の人のブログを見ても、名前をつけずに再帰ができるのがすばらしいとか書いてあったりするのだけど、それによってどういう処理ができるのかわからずにいた。 結論をいえばYコンビネータには、なにかの処理を便利にする能力はない。関数であらゆる計算ができるということが示せれば、あとは用なしだ。理論の礎としてうまってしまえばいい。 結局、Yコンビネータによってどのような処理ができるかというのは、ラムダ計算の要素のメリットをチューリングマシンの中に見出そうとしてるといえる。 ラムダ計算とチューリングマシンは、どちらも計算モデルという点では一致しているけど、全く違う。 無限であるか有限かの違いといってもいい。 チューリングマシンでは、データの量と処理

    ラムダ計算とチューリングマシンの違い 2009-04-13 - きしだのはてな
    tomoemon
    tomoemon 2009/04/13
    計算機科学/計算モデルっていろいろあるんだよなー。
  • Perlでアニメ顔を検出&解析するImager::AnimeFace - デー

    というのを作ったので自己紹介します。 2月頃から、コンピュータでアニメ顔を検出&解析する方法をいろいろ試しつつ作っていて、その成果のひとつとして、無理やり出力したライブラリです。 はじめに はじめにざっとライブラリの紹介を書いて、あとのほうでは詳細な処理の話を僕の考えを超交えつつグダグだと書きたいと思います。 Imager::AnimeFaceでできること Imager::AnimeFaceは、画像に含まれるアニメキャラクター的な人物の顔の位置を検出し、さらに目や口など顔を構成する部品位置や大きさの推定、肌や髪の色の抽出を簡単に行うことができるライブラリです。 これらが可能になると、 画像から自動でいい感じのサムネイルを作成できる 動画から自動でいい感じのサムネイルを作成できる 自動的にぐぬぬ画像が作れる 自動的に全員の顔を○○にできる 顔ベースのローカル画像検索 など、最新鋭のソリューシ

    Perlでアニメ顔を検出&解析するImager::AnimeFace - デー
  • Google の秘密 - PageRank 徹底解説

    INDEX はじめに PageRank の基概念 どうやって PageRank を求めるか 現実に適用する際の問題 Namazu での実装実験 PageRank に対する個人的見解 参考文献 おまけ:「グーグル?/ゴーグル?」 Since: Thu Feb 1 18:22:44 JST 2001 Last Refreshed: Sat Jan 24 18:30:35 JST 2004 ★(2004/1/24) Yuan Huanglin氏によって ページの中国語訳 が作成されました。 ★(2003/7/1) 拙著『Namazuシステムの構築と活用』を改訂しました。 詳しくは サポートページをご覧ください。 ★(2003/5/20) Google に関するオンラインニュース記事一覧(日語記事のみ)を 別ページ(googlenews.html) として分離しました。 ★(2001/2/