タグ

関連タグで絞り込む (0)

  • 関連タグはありません

タグの絞り込みを解除

algorithmとProgrammingとAlgorithmに関するyukimori_726のブックマーク (82)

  • 棒倒し法による自動生成の迷路 - 素人がプログラミングを勉強していたブログ

    JavaScriptによる自動生成迷路に置いた。 function rand(n) { return Math.floor(Math.random() * n); } const width = 33, height = 33; var wall = (1 << (width - 2)) - 1 << 1; var table = [1 << (width - 2)]; var stripe = 0; var i, j; for (i = 1; i < width; i += 2) { stripe |= 1 << i; } for (i = 1; i < height - 1; i++) { table[i] = i & 1 ? wall : stripe; } table[height - 1] = 2; const top = 0, right = 1, bottom = 2, le

    棒倒し法による自動生成の迷路 - 素人がプログラミングを勉強していたブログ
  • 知れば天国、知らねば地獄――「探索」虎の巻

    いよいよ今回から、具体的なアルゴリズムの紹介に入っていきます。今回は、プログラミングにおける重要な概念である「探索」について考えます。グラフに変換し、探索する、という流れを知るとともに、そのグラフを効率よく探索する方法について紹介します。 今後紹介していくアルゴリズムについて お待たせしました! 「最強最速アルゴリズマー養成講座」という連載タイトルのとおり、今回の連載からいよいよ具体的なアルゴリズムの紹介に入っていきたいと思います。 しかし、それを読んでいただく前に、1つ注意してもらいたいことがあります。連載第3回でもお伝えしたように、「問題を、既存の適当なアルゴリズムに当てはめる」という考え方は、非常に危険である、ということです。 筆者の経験上、TopCoderでRedCoder以上を目指すのであれば、回答時間短縮のために、いままでのパターンを利用するのも方法の1つなのですが、連載では

    知れば天国、知らねば地獄――「探索」虎の巻
  • 幅優先探索で迷路の最短経路を探す

    幅優先探索で迷路の最短経路を探す 2010-01-14-4 [Algorithm][Programming] 迷路の最短経路を探すプログラムを作成するという問題について。 - 人材獲得作戦・4 試験問題ほか (人生を書き換える者すらいた。) http://okajima.air-nifty.com/b/2010/01/post-abc6.html これは単なる幅優先でOKですね。 足跡を記録していき、すでに別の子が通った道にぶつかるか(足跡の有無で判定)、行き止まりに到達したら枝狩り。 幅優先なんだからこれで見つかるのが最短経路。 後からの「最短性のチェック」は不要です。 「アルゴリズム知らないとできない」とか以前の問題で、正式にプログラミングの基礎を学んだ人ならできて当たり前の問題です。ピンと来ない人は、ポインタわからない、再帰わからない人と同列かなあ。 バリバリプログラミングからは一線

    幅優先探索で迷路の最短経路を探す
  • JavaScript + Canvas で動くカオスアトラクタ生成器作ってみた - mooz deceives you

    カオスアトラクタ by edvakf in hatena を見ていて Canvas でピクセル操作が出来るらしいことを知り、早速カオスアトラクタ生成器を作ってみた。 アクセスは C.H.A.O.T.I.C C.A.N.V.A.S から。 動作は Firefox 3.5 と Google Chrome で確認。処理速度は Chrome の方が 5 倍ほど速いので、一応 Chrome 推奨。 Safari や Opera では未確認。 で、操作説明。 Draw ボタンを押せばカオスアトラクタが描画される。 Settings 右のプルダウンメニューにいくつかプリセットの設定を用意しておいたので、はじめはそちらを試されるのが良いと思う。 Coefficients の値をちょびっとづつ変えていくと、生成される画像が綺麗に変化していってくれる。一期一会な感じが小憎い。画像は Firefox なら右クリ

    JavaScript + Canvas で動くカオスアトラクタ生成器作ってみた - mooz deceives you
  • SACHICA(類似文字列列挙アルゴリズム) - Yasuo Tabeiの日記

    SACHICA(類似文字列列挙アルゴリズム)のC++による実装を公開しました。 http://sites.google.com/site/yasuotabei/sachica sachicaは、同じ長さの文字列集合を入力として、ハミング距離がある閾値以下のすべてのペアーを超高速に出力します。 アルゴリズムは、マルチソーティングという手法に基づきます。 詳しくは、ハミング距離がd以内で長さがmの文字列集合があったとします。初めに、各文字列をk (> d)の部分文字列のブロックに分割します。 今、ハミング距離がd以内の文字列のペアーを求めたいので、もし、ハミング距離がd以内の文字列のペアーが存在すれば、鳩の巣原理により、それらにはk - d個の完全一致するブロックが存在します。この原理に基づき、sachicaはcombination(k, k-d)のすべての組み合わせのブロックをラディックスソ

    SACHICA(類似文字列列挙アルゴリズム) - Yasuo Tabeiの日記
  • クラスタリングツールbayonを便利に使うText::Bayonを書きましたよ - download_takeshi’s diary

    JPerl Advent Calender 2009 のhacker trackに「Perlではじめるテキストマイニング」というタイトルで記事を書きました。テキストマイニング系のモジュールを色々紹介しているので、興味ある人はぜひご覧ください。 さてさて、記事の最後の方で軽くふれましたが、つい先日 Text::Bayon というモジュールをリリースしました。 Text::Bayon - Handling module for the clustering tool 'bayon' CPAN : http://search.cpan.org/~miki/Text-Bayon/ Github : http://github.com/miki/Text-Bayon それの具体的な使い方を紹介します。 何をするものか? Text::Bayonはクラスタリングツールbayonをperlスクリプトからス

    クラスタリングツールbayonを便利に使うText::Bayonを書きましたよ - download_takeshi’s diary
  • アルゴリズムの紹介

     ここでは、プログラムなどでよく使用されるアルゴリズムについて紹介したいと思います。 元々は、自分の頭の中を整理することを目的にこのコーナーを開設してみたのですが、最近は継続させることを目的に新しいネタを探すようになってきました。まだまだ面白いテーマがいろいろと残っているので、気力の続く限りは更新していきたいと思います。 今までに紹介したテーマに関しても、新しい内容や変更したい箇所などがたくさんあるため、新規テーマと同時進行で修正作業も行なっています。 アルゴリズムのコーナーで紹介してきたサンプル・プログラムをいくつか公開しています。「ライン・ルーチン」「円弧描画」「ペイント・ルーチン」「グラフィック・パターンの処理」「多角形の塗りつぶし」を一つにまとめた GraphicLibrary と、「確率・統計」より「一般化線形モデル」までを一つにまとめた Statistics を現在は用意して

  • ぜひ押さえておきたいコンピューターサイエンスの教科書

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

  • P2P basic

    P2P basic P2Pとは何か?〜基礎から研究紹介まで〜 最近,P2Pという言葉を良く聞きます。ニュースの中でも「P2Pを意識している」とか「P2Pの研究に着手」というニュースを聞いたことがあるのではないでしょうか? しかしながら,P2Pとは何かいまいちわからなかったり、どんなことに役に立つのか調べにくいことも確かです。 またP2Pの動向は激しく,その流れについていくのも大変です。 私は情報系の研究所でP2Pの研究開発をしていました。 そのため、このような現状を踏まえてP2Pの基礎から私の研究まで重要な部分を なるべくわかりやすく紹介致します。 また用語についてはわかりやすさを優先するために一部不正確なところがあるのでご了承下さい。 質問,コメント等はメール(tnishita@yahoo.co.jp) にて連絡して頂くと,ページ改良の参考になりますのでよろしくお願い致します。 P2Pに

  • 全文検索を実装したソースコードを読もう (1/4)- @IT

    第6回 全文検索を実装したソースコードを読もう 倉貫 義人 松村 章弘 TIS株式会社 SonicGarden 2009/9/3 優れたプログラマはコードを書くのと同じくらい、コードを読みこなせなくてはならない。優れたコードを読むことで、自身のスキルも上達するのだ(編集部) いよいよオープンソースの社内SNS「SKIP」を使ったコードリーディングも最終回となりました。Railsの基的な構成から、テストコードやRSpecの書き方といった内容に加え、前回はOpenIDをRailsで活用する応用編まで、コードとともに学んできました。 最終回となる今回は、SKIPの目玉機能の1つである全文検索を扱います。最終回にふさわしく、内容も高度なものになっていますが、ここまでおつきあいいただいた読者の皆さまであれば、十分に理解できる内容だと思います。 SKIPにおける全文検索機能では、任意の検索キーワード

  • 転置インデックスの圧縮 - tsubosakaの日記

    Managing Gigabytes勉強会で転置インデックスの圧縮の話が出たので実際に圧縮を行った場合にどれくらいのサイズになるかを計測してみた。 利用したデータは英語版Wikidiaの全記事で 文書数 2,872,589 単語数 2,735,620 転置インデックスのポインタの数 397,603,176 ぐらいのサイズのデータです。 無圧縮の転置インデックスのフォーマットは 単語ID,文書数,文書1,....文書N, 単語ID,...で各項目4byteとなっており、1.5Gぐらいのサイズになっています。 これに対して各圧縮アルゴリズムを適用した結果は アルゴリズム 無圧縮 Variable Byte Code unary符号 γ符号 δ符号 Rice Coding pforDelta(仮) サイズ 1537MB 497MB 239475MB 474MB 407MB 367MB 455MB

    転置インデックスの圧縮 - tsubosakaの日記
  • My Bookmark: Machine Learning

    私のブックマーク 学習 1. はじめに 機械学習の研究は飛躍的な進歩を遂げ、専門化が進んでいる。元々は人間の学習能力を目標に始められた研究分野だが、それどころではなくなってきたようで、全体を一望するのが困難になってきた。しかも、機械学習の一分野である帰納論理プログラミングについて、理科大の溝口文雄教授によるブックマークが昨年9月号で取り上げられていて、機械学習全体をカバーする有力サイトも紹介済だったりする。そこで、大規模で便利なサイトに筆者がたまたま訪れたサイトを織り交ぜながら、紹介したい。また、このコラムで紹介済のブックマークは省くか、違った説明を試みるので、バックナンバーも合わせて参照されたい。 2. ポータルサイト 機械学習について調べ物をするとき、とりあえずなんでもそろっているポータルサイトとしては、MLnet(Machine Learning network, http://ww

  • ビジュアル・プログラミング

    Powered by SmartDoc ビジュアル・プログラミング >> ビジュアル・プログラミング 服部 隆志 (印刷用 PS 版は /home/hattori/visual-prog/latex2e/main.ps です) 目次 ビジュアル・プログラミングとは プログラミング言語の役割 プログラミング言語に影響を与えたもの 計算モデルと抽象化 命令型パラダイム 関数型パラダイム 論理型パラダイム オブジェクト指向 テキスト言語の利点と欠点 欠点 利点 ビジュアルプログラミング言語の種類 アルゴリズムの図形的表現 制御の流れの図形化 フローチャート PAD NSチャート データフロー図 StateChart ペトリネット オートマトン 有限オートマトン セルラーオートマトン 定義 Artificial Life との関係 グラフ文法 形式言語理論 グラフ文法の例 Parsingの過程 埋

  • 遺伝的プログラミング - 機械学習の「朱鷺の杜Wiki」

    遺伝的プログラミング (genetic programming)† 遺伝的アルゴリズムと全体の枠組みは変わらない. 相違点は,個体が木で表現されたプログラムであることと,木に適用できるように,交叉オペレータなどが変更されている点である. 問題を説くためのLISPのプログラムや,数式などを木構造で表現.その実行結果がどれくらい目標に近いかによって次世代に生存するかが決まる. 交叉は,部分木を入れ替えることによって行い,突然変異はノードや部分木の置換などで実現する -- しましま ↑

  • Algorithm Database

    無向グラフ スケジューリング 量子計算(グローバーのアルゴリズム) 最小カット 投票力指数 (CGI) チャネル割当問題 共有区間列挙問題(CGI) 2次元ボロノイ図構成 グラフエディタの作成(群馬大学 中野研究室) 辺連結度増大アルゴリズム 3次元凸包 グラフ分割問題 最大クリーク問題 巡回セールスマン問題 最短路問題 ハイパーグラフの極小横断 new!!誤差拡散法 (ブラウザの設定で "Javaを有効" にして下さい。)

  • Javaを使うなら理解しておきたいアルゴリズム - 抽出・ソート・結合・集計 (リスト&マップ編) - 何かしらの言語による記述を解析する日記

  • オーダーを極める思考法

    プログラムの実行に掛かる時間を把握しておくのは、プログラミングを行う上で基的な注意点です。今回は、計算量のオーダーについて学びながら、TopCoderのMedium問題を考えてみましょう。 プログラムの実行時間 業務としてプログラミングをされている方には釈迦に説法かもしれませんが、プログラムの実行に掛かる時間を把握しておくのは、プログラミングを行う上で基的な注意点です。そしてこれは、TopCoderなどのコンテストでプログラムを組む際にもよく当てはまります。通常、こうしたことは感覚的に理解している方がほとんどだと思いますが、具体的にどれくらいのループを回すと何秒掛かる、といった基準を持っている人は少ないのではないでしょうか? 非常に基的なことですが、プログラムの実行時間に関して再確認しておきたいと思います。 TopCoderの制限に関して TopCoderでは、実行時間およびメモリ使

    オーダーを極める思考法
  • γ符号、δ符号、ゴロム符号による圧縮効果 - naoyaのはてなダイアリー

    通常の整数は 32 ビットは 4 バイトの固定長によるバイナリ符号ですが、小さな数字がたくさん出現し、大きな数字はほとんど出現しないという確率分布のもとでは無駄なビットが目立ちます。 Variable Byte Code (Byte Aligned 符号とも呼ばれます) は整数の符号化手法の一つで、この無駄を幾分解消します。詳しくは Introduction to Information Retrieval (以下 IIR) の第5章に掲載されています。(http://nlp.stanford.edu/IR-book/html/htmledition/variable-byte-codes-1.html で公開されています) Variable Byte Code はその名の通りバイトレベルの可変長符号で、1バイトの先頭1ビットを continuation ビットとして扱い、続く 7 ビット

    γ符号、δ符号、ゴロム符号による圧縮効果 - naoyaのはてなダイアリー
  • はてなブログ | 無料ブログを作成しよう

    地元と文化活動の思い出(地元でのライブの思い出) 美術手帖の編集長が帰省中に『巨大なイオンモールだけが煌々と明るい地方都市に帰省すると、美術の「美」の字も見つけられないと』ツイートしたことが炎上していた。 調べるとどうやら編集長は私の地元・伊賀市のすぐ近くの鈴鹿市出身らしい。 鈴鹿の事情はあまり知ら…

    はてなブログ | 無料ブログを作成しよう
  • 微分方程式を解こう! | _level0 - KAYAC Front Engineer Blog

    どうも。こんにちは。梅雨明けも宣言されたそうで、いよいよ暑くなりますね。今回は単振動方程式方程式を用いた最適化のお話です。 高校物理でも登場するバネの方程式、単振動方程式 を簡単な四則計算に分解する方法を紹介します。 まず色々な数学的背景を押しやって、イメージだけ説明すると、物体の位置x、速度v、加速度aの関係は となるので、asの式で考えると、 v += a; x += v; という風になります。ここで単振動の微分方程式から、 a = -K * x; であるから、あわせると、 v -= K * x; x += v; という風になります。下がサンプルで、初期値(_v, _y)やKなんかを変えて挙動が変わることが分かります。 ここでのポイントはvに対して最初の式で破壊的な操作を行っていることです。 v_temp = v; v -= K * x; x += v_temp; 等とすると、ずれてし

    微分方程式を解こう! | _level0 - KAYAC Front Engineer Blog