フィボナッチ関数の計算について記事を見掛けた。 計算速度が大幅に違う理由を遅延評価と誤解しているようだけれど、そうではない。 まず最初の定義について見てみよう。 fibonacci :: Integer -> Integer fibonacci n | n == 1 = 1 | n == 2 = 1 | otherwise = fibonacci (n-2) + fibonacci (n-1) この定義だと計算は非常に遅い。 どうして遅くなるのかを考えるにはコールツリーを書いてみるとわかりやすい。 この関数を1回呼ぶと2つに枝分れしていくので、関数呼出しの回数は指数関数のオーダーになる。 ここでは関数呼出しの回数がそのまま計算量であると考えてよいだろう。 そして同じ引数での呼出しが何度もあることがわかる。 そして速度を改善したもうひとつの定義を見てみよう。 fibonacci :: Int
こんにちは、ジェイ・リスティングの小川です。今回はBingのSEOについて業務で調査していたので、調査内容をまとめてみます。 SEO業務の参考になれば幸いです。 Bingってなんだろう? ご存じでない方もいらっしゃると思いますので、簡単にBingの説明をさせていただきます。Bingはマイクロソフト社が提供する検索エンジンで、Live Searchの次世代版です。コンセプトは「かんたん、みつかるBing」となっており、情報の探しやすさ、マッチ度などを重要視した検索エンジンです。 Bingの機能などはBingナビにかなり詳しく書いているので、気になる方はぜひ参照してみてください。 そんなBingですが、米Yahooで検索エンジンベースとして採用されることが決定しているため、Yahoo! JAPANでも採用されるのではないかと一部で噂されていました。しかし、ご存知の通り、結局はGoogleを利用
折角iPod Touchをいじり始めたのだから、iPhoneアプリケーションの開発環境を整備しようと思った。 しかし、手元にあるマシンはと言うと、Windows XPのオンボロ据え置きと、Windows XP/Ubuntu(ネットブック仕様)のネットブック君と、あと一つ、OpenBSDのサーバ機君だけだ。iPhoneアプリケーションの開発環境はMac OS Xの物しか提供されていないわけで、これではどう開発した物か。 調べてみると、Cygwin on Windows XPや、*NIX上で環境を構築する方法が幾つか載っている。方法はあるにはあるようだ。iPhoneの中身を吸ったりだとか、割りとダークネスだが…… 早速、ツールチェインの一つ、iphone-devを、OpenBSD君に突っ込むことに決めた。Cygwin?MinGW?しらない。 まずは、LLVMの準備から始める。標準ではパッケージ
► 2022 (2) ► 10月 (1) ► 2月 (1) ► 2021 (51) ► 11月 (2) ► 10月 (2) ► 9月 (4) ► 8月 (4) ► 7月 (4) ► 6月 (4) ► 5月 (3) ► 4月 (10) ► 3月 (7) ► 2月 (4) ► 1月 (7) ► 2020 (155) ► 12月 (7) ► 11月 (10) ► 10月 (8) ► 9月 (8) ► 8月 (11) ► 7月 (21) ► 6月 (19) ► 5月 (14) ► 4月 (20) ► 3月 (13) ► 2月 (10) ► 1月 (14) ► 2019 (293) ► 12月 (11) ► 11月 (12) ► 10月 (24) ► 9月 (29) ► 8月 (27) ► 7月 (36) ► 6月 (40) ► 5月 (24) ► 4月 (35) ► 3月 (42) ► 2月 (6
昨日 最長共通部分列問題 (LCS) について触れました。ついでなので編集距離のアルゴリズムについても整理してみます。 編集距離 (レーベンシュタイン距離, Levenshtein Distance) は二つの文字列の類似度 (異なり具合) を定量化するための数値です。文字の挿入/削除/置換で一方を他方に変形するための最小手順回数を数えたものが編集距離です。 例えば 伊藤直哉と伊藤直也 … 編集距離 1 伊藤直と伊藤直也 … 編集距離 1 佐藤直哉と伊藤直也 … 編集距離 2 佐藤B作と伊藤直也 … 編集距離 3 という具合です。 編集距離はスペルミスを修正するプログラムや、近似文字列照合 (検索対象の文書から入力文字にある程度近い部分文字列を探し出す全文検索) などで利用されます。 編集距離算出は動的計画法 (Dynamic Programming, DP) で計算することができることが
レーベンシュタイン距離(レーベンシュタインきょり、英: Levenshtein distance)は、二つの文字列がどの程度異なっているかを示す距離の一種である。編集距離(へんしゅうきょり、英: edit distance)とも呼ばれる。具体的には、1文字の挿入・削除・置換によって、一方の文字列をもう一方の文字列に変形するのに必要な手順の最小回数として定義される[1]。名称は、1965年にこれを考案したロシアの学者ウラジーミル・レーベンシュタイン (露: Влади́мир Левенште́йн) にちなむ。 レーベンシュタイン距離は、同じ文字数の単語に対する置換編集に使われているハミング距離の一般化であると見なすことが可能である。レーベンシュタイン距離の更なる一般化として、例えば一回の操作で二文字を変換する等の方法が考えられる。 例[編集] 実際的な距離の求め方を例示すれば、「kitt
■ 2 つの文(日本語のもの)の間の類似度を算出するアルゴリズムを紹介してください。
ラビン-カープ文字列検索アルゴリズム(英: Rabin-Karp string search algorithm)は、マイケル・ラビンとリチャード・カープが開発した、ハッシュ関数を利用してテキストからパターン(サブ文字列)を探す文字列検索アルゴリズムの一種[1][2]。1つのパターンの検索にはあまり用いられないが、理論的には重要であり、複数パターンの検索には効果的である。テキストの文字数が n、パターンの文字数が m とした場合、平均および最良の実行時間はO(n)だが、ごくまれに最悪性能として O(nm)となる(広く用いられないのはそのため)。しかし、k個の文字列のいずれかにマッチする部分を検索するのに要する時間は k によらず平均で O(n) となるという独特の利点を持つ。以下、単にラビン-カープまたはラビン-カープ法と略記することがある。 ラビン-カープの単純な応用例として、盗作の検出
どれが何なのかたまに混乱するのでメモ. == オブジェクトの同値性のチェック クラスやオブジェクトの性質に合わせて再定義できる === オブジェクトの同値性のチェック(所属性を加味) case式で使われる クラスやオブジェクトの性質に合わせて再定義できる eql? オブジェクトの同値性のチェック(==より厳密) Hashで二つのキーが等しいかどうかを判定するのに使われる クラスやオブジェクトの性質に合わせて再定義できる 再定義した場合はhashメソッドも再定義しなければならない equal? オブジェクトの同一性のチェック object_idが一致するかどうかを調べる 再定義してはならない 比較表 効果使用場面再定義 ==同値性のチェック同値性のチェック○ ===同値性のチェック(所属性)case式○ eql?同値性のチェック(厳密)Hashキーの比較○(※) equal?同一性のチェック
こんなことは誰かがすでに考えていて、正式な名称があるのだと思いますが。思いついたので、サラッと書いておきます。表記ゆれに対応した、文字列の比較です。 追記2010-09-11 くはぁ。dankogai先生からつっこまれました。fuzzyのスペルを間違えています。はずかしいけど、あえてそのまま。 A, B, Cという3つの文字列があります。厳密に比較すると、もちろん異なる文字列です。大文字や小文字の違い。スペースの有無。記号の違い。 A = "First Love / Utada Hikaru" B = "FirstLove - UtadaHikaru" C = "first love : utada hikaru" p A == B #=> false p B == C #=> false p C == A #=> false ですが、これを同じ文字列として扱いたいのです。そんなシチュエー
以前よりZIGOROuさんからgitネタのブログ書きなよと言われていたので、重い腰を上げて書き始めようと思う。 何はともあれSubversionからリポジトリを取得する。 cd ~/work git svn clone http://centos5/git-test -T trunk -b branches -t tags「-T」、「-b」、「-t」オプションは指定しなくてもいいが、指定しておくとgitリポジトリ作成時にリモート追跡ブランチを自動的に設定してくれるので指定しておく。 git branch -r でリモート追跡ブランチの一覧が表示される。 cd ~/work/git-test git branch -r stable-1.0 tags/release-1.0 trunk「-r」オプションなしで現在のブランチ一覧が表示される。「master」はgitがデフォルトで作成するブラン
"プラットフォーム” をウィキペディアで調べてみると プラットフォーム(Platform)とは、コンピュータにおいて、主に、オペレーティングシステム(OS)やハードウェアといった基礎部分を指す。 一般的なコンピュータープログラム(アプリケーションソフトウェア)は、それぞれのOSに依存し、Windows、Mac OS X、Linuxなどの専用のプログラムとして動いている。特定のハードウェアでしか動かないプログラムもある。例えば、PowerPC プロセッサ上の Linux では、PowerPC プロセッサ上のMac OS X 用や Pentium プロセッサ上の Linux 用の Adobe Reader7.0 は動作しない。 非依存とは、それらのOS、ハードウェアに依存せずに動くプログラムのこと。例えば、Javaはプラットフォーム非依存を売りにしており、他のプラットフォームの上にアダプタとし
フリーティケットシアター全サービス終了 誠に勝手ながら、「フリーティケットシアター」のサービス提供を 2016年3月31日をもちまして終了させていただきました。 これまで長らくご愛顧を賜り、誠にありがとうございました。 http://www.freett.com/
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く