2010-03-01[n年前へ]
■Rubyで"tail"
ファイル末尾を表示するコマンドtailをRubyで色々なやり方で(そして最適なやり方で)実装しようというRuby: フィルタコマンド/tail
tail コマンドって知っています? Unix 系のシステムでは、ファイルの終りだけを表示するコマンドとして使用されています。
実現方法の考え方(アルゴリズム)の勉強にとてもいい課題になっています。 最初は基本的なアプローチで、できたら大きなファイルでもうまく動くような方法を考えてみてください。
2010-05-10[n年前へ]
■遺伝的アルゴリズムを使って数独を解く
Solving Sudoku with genetic algorithms(遺伝的アルゴリズムを使って数独を解く) というブログエントリを読んで,遺伝的アルゴリズムの入門記事として面白かったので紹介。
遺伝的アルゴリズムとは,生命の遺伝の仕組みを模した方法を使って解を探索する手法のこと。データを遺伝子で表現した個体を複数用意し,適応度によって個体を選択し,遺伝子に突然変異を起こしたりして解を探索してゆく。(中略)上記エントリでは,この遺伝的アルゴリズムを使って数独の問題を解く手法を紹介している。
2010-10-21[n年前へ]
■「関連Amazonタグ」と「関連プロダクト」
このページには、「関連Amazonタグ」と「関連プロダクト」を表示する広告を貼付けています。ブタさん貯金箱にその広告収入を入れ、ブタさんがお腹いっぱいになったらサーバマシンを入れ替える、という具合に使っています。
右に貼付けたのは、今の瞬間に表示されていた「関連Amazonタグ」です。多少の違いはありますが、「関連プロダクト」の方も同じような内容が表示されています。画像処理や信号処理キーワードが並ぶ中、少し趣が異なるキーワードがたまに顔を出す、という具合です。
他のBlogなどの場合には、一体、どんなキーワードが表示されているものでしょうか。そういったBlogに書いてあることをじっくり読むことはあっても、広告用キーワード自体をじっくりと眺めたことは、なかったような気がします。内容自体を楽しんだ後、同時に表示されている広告キーワードを眺めてみるのも面白いかもしれません。
2011-05-22[n年前へ]
■「童貞喪失機会問題」と「ページランク (PageRank) 」
「異性間(時には同性間の)評価」ということを主題にした「恋と童貞 2号」の「童貞喪失機会問題に関する試論」を読みながら感じたのは、「結局、これはページランク (PageRank) が対象とする問題とよく似ている」ということでした。
女性の評価対象は、大きく分けて二つある。当該男性からの情報発信と当該男性の評判である。…当該男性の評判は、個々人の当該男性に対する評価の集合であると感柄れる。つまり評価は、入れ子構造となっていることが想定される。
岩城僚介「童貞喪失機会問題に関する試論」
任意のページに対して「興味ある、と思えるか・欲しいと考えられるか」を決めるページランク(PageRank)アルゴリズムは、任意の人に対して「興味を感じられるか」という量を算出しようとする「童貞喪失機会問題」と同様の問題を抱えるように思えます。
「興味あるページ」が人次第・状況次第でそれぞれ違うように、「興味ある相手」も人・状況次第で違ます。だから、人・状況次第で情報(ページ)や人の重要さは異なるのに、それを「同じものさし」で計ろうとすると無理が生じます。だから、たとえばソーシャルブックマークサイトを(必ずしも平均的な好みでない人が)眺めたとき「欲しいと思える情報がなかなか見つからない」と感じたりします。
Facebook や Twitterが人を繋げようとするアルゴリズムを試行錯誤していたりする中で、重要さや価値というものが「人次第・状況次第で違う」ということに対応したアルゴリズムはいつ当たり前のものとして登場するのでしょうか。
2011-09-22[n年前へ]
■迷路自動生成アルゴリズム
「巨大なAKB48 篠田麻里子 迷路」を作ってみたで使用した迷路自動生成アルゴリズムは、以下の手順です。このアルゴリズムは、「迷路の壁生成はするけれども、”経路をふさぐ=壁と壁の間を新しい壁でつなぐ”とことはしない」というものです。そのため、このアルゴリズムにもとづく限りは、入り口から出口まで辿り着く(ひとつ以上の)経路の存在が必ず保証されます(といっても、動作確認のためのテストはしてないんですけど…)*。
…というわけで!?、「行き止まりしかないという不安」を気にせずに、「巨大なまりこ様 迷路」選手権、もしくは、「たかみな巨大迷路 脱出レース」に挑戦して参加して頂ければ、と思います。
- 周囲の壁を作る。
- まだ壁が作られていない壁格子点をランダムに選び、そこから壁生成を(所定のランダム量にもとづいた回数・長さだけ)スタートさせる
- 壁生成の先が壁の存在する格子点であれば、その壁生成はせず、次の壁生成を行う
- すべての壁格子点について処理済みであれば、迷路生成を終了する
* …しかし、実際にテストをしてみたところ、存在しないはずの「閉じた部分」がチラホラあるじゃあーりませんか!つまり、壁と壁の間を閉ざしてしまうことがある=入り口から出口にいたる”経路がふさがれてしまうことがある”ということで、運次第でゴールに絶対たどり着けないということになってしまいます。…うーん、テストって重要だなあ。