2004-05-01から1ヶ月間の記事一覧

Numerical Optimization

頼んでいた『Numerical Optimization』(asin:0387987932)がやって来た.早速,図書係のK口君からひったくって私有物にしてしまう.いっしっし.

(ノ∀`)アチャー

(リンク切れますた.ちなみに貼っていたのは秋葉原の真ん中で『涙の誓い』を口ずさむ人のmpgへのリンク) これだからヲタクってイヤなんですよね〜.本当にどうにかして欲しいです,この人たち.もうツッコミどころがいっぱいありすぎてどれからツッコミ入…

Boost Graph Libraryについてごちゃごちゃ雑感

boost::adjacency_listをごちゃごちゃいじるよりも,問題にピッタリ適合するデータ構造を作っておいて,次にこれみたいにconceptの要求通りにtaritsのspecializationと関数のoverloadをしていった方が楽な気がしてきました.boost::adjacency_listって柔軟な…

is_sorted --sortの事後条件--

というわけで,ここまで長々訳の分からないことを書いておきながら,結論は至ってシンプルです.自前のfor文回すのが一番楽ですが,ここはあえて既存のアルゴリズムでやってみました. template inline bool is_sorted(ForwardIterator first, ForwardIterat…

何故,厳密で弱い順序が重要なのか?

さて,ようやく自分の疑問の核心部にたどり着きました. 厳密で弱い順序が何故STLにおいてここまで重要視されているのか,多くの書籍は「数学的な詳細には立ち入らない」としてこの部分の議論を避けているので,ここではあえてそれに踏み入ってみます. 厳密…

厳密で弱い順序(Strict Weak Order)

STLにおいて,順序を定める述語を指定するときにはすべからく「厳密で弱い順序(Strict Weak Order)」という概念が出てきます.この概念がいかにSTLで重要な位置を占めているかは次の事実を見てもらえば一目瞭然です. std::setで要素の比較に使われる述語…

値が等しいということ(Equality)

まず最初に「値が等しいということ(Equality)」という概念について今一度確認してもらいます.C++(に限らず多くのprogramming言語)で普通"=="(及び"!=")で表される関係です. int a = 1; int b = 1; int c = 2; assert( a == b ); // `a' is equal to …

is_sorted --sortの事後条件-- ・・・その前に

ここ2日ほど考えていたis_sortedですが,ようやく結論が出ました.ですがその結論の前に,多分多くの人にとっては全然面白くないであろうことを延々議論します. 結論は今日のblogの一番最後にありますので,結論だけ見たい人はid:Cryolite:20040529#p5へ飛…

"Evolving Strategies for Focused Web Crawling", ICML2003

文法理論概説

ボスによる文法理論の概説.1時間強でやるにはあまりに内容が濃すぎると思うのでした.

いろいろ考えていたら

is_sortedについてあれこれ考えているうちに,ある一つの疑問が浮かんできました. 「ソートって何?」

続:adjacent_findによるiterator範囲のsort済みの確認

id:Cryolite:20040526#p3に関して. http://www.talkaboutprogramming.com/group/comp.lang.c++.moderated/messages/162386.html keyが重複している場合はどうするんだ,という指摘. 言われてみればそうでした.id:Cryolite:20040526#p3で書いたコードはkey…

adjacent_findになぜforward iteratorが要るのか問題

id:Cryolite:20040526#p3書いていて,ふとなぜadjacent_findがforward iterator要求するのか不思議に思ったのですが,よく考えてみればadjacent_findってiteratorを2回dereferenceする必要があるのでsingle passじゃないのですね.でも,forward iteratorが…

iterator範囲がソート済みかどうかを調べる

あるiterator範囲がソート済みかどうかを調べる,という要求に対して,私は以前からstd::adjacent_findを使うのが癖になっていて「読みにくいコード書いてしまっているのかな?」と思っていたんですが,これってidiomとして一定の認知度を得ているみたいです…

make_adaptable

id:Cryolite:20040518#p2で指摘した,adaptableでないfunctorをadaptableにするコードを(・∀・)ハケーン.っていうか,やっぱり車輪の再発明だったか・・・orz http://www.boost.org/boost/bind/make_adaptable.hpp

sixteen ways to stack a cat

上の言葉,AT&Tの,名前の読み方が良く分からないある禿げたおっちゃんの言葉ですが,この言葉,意訳すると「文字列クラスの実装には多くのものが考えられる」という意味になります.どこをどう訳したらそういう意味になるのかは置いておいて,文字列クラス…

読みにくいことこの上ないw

ここ1ヶ月の自分のblogを表示させてみましたが,正直な感想は「こんな読みにくいblog初めて見ましたw」です・・・

STLの汎用アルゴリズムを定義しているヘッダーに一通り目を通してみたのですが,さすがというかなんと言うか「綺麗」の一言しか出ませんねぇ.C++でプログラムを組む,特にiteratorをきちんと使おうとするなら,一度は見ておきたいソースです.というか,あ…

dummy

久しぶりにdummy(自分が空の日記のplace holderとして使っている単語.place holderなので後で引数から評価されるかもw)使うことになりそう・・・.

今日の収穫物

ぷちモン3巻(ASIN:4088766164) ある人間から「これあんまし面白くないからあげる」と言われてぷちモン1・2巻を譲り受けていて,しばらく放置していたのだが,ちょっと前にふと思い立って読んでみたらなぜかそこそこ面白く読めてしまった.で,今日3巻を買…

アルゴリズムの機能をiterator adaptorに押しやる

boostのiterator adaptorをSTLのアルゴリズムと組み合わせて遊んでいたら,またしてもしょーもないことを思いついてしまった. boostのiterator adaptorの中には,STLのアルゴリズムとほぼ同等な機能を提供しているように捉えることができるものもあります.…

←こんなカテゴリ初めて書いたぞw

国と国との関係が,人と人との関係に大きな影を落とすって非常に悲しいことですね.

今日2番目に驚いたこと. このサイト(http://d.hatena.ne.jp/Cryolite/)から4クリックで自分の先輩のサイトに逝けることを発見したこと. それも2人も. ここは本当に狭いインターネッツですね・・・orz

今日1番驚いたこと. はてなの社長が,実は自分が良く知っている人だと分かったこと. そういえば昔「はてなっていう人力検索サイトやってる」という話を聞いて,当時の私が「( ´_ゝ`)<ふーん,っていうか人力検索ってネタっぽいなぁ」と思ったことが確か…

"gSpan: Graph-Based Substructure Pattern Mining"

http://citeseer.ist.psu.edu/yan02gspan.html 頻出サブグラフマイニングのためのアルゴリズム.あるグラフのサブグラフに対するエンコードを定義した上で,そのコードによって同型判定を行ってサブグラフの探索空間をpluneする,という流れで良いのかな.っ…

形態素解析 + 未知語処理

タイトルの内容の話.Viterbiアルゴリズムについて若干もめる.自分も良く分かってなかった・・・.大きく反省.でも,これって形態素latticeをグラフと見たときのDijkstraと何が違うのか良く分からなかった.やっぱり勉強不足.(´・ω・`)ショボーン

超どうでも良いアイデア

C++

filter_output_iterator(output iteratorへの出力をfilter.filter_iteratorの逆) function_iterator(生成関数をiteratorに変形・・・ってかgenerate_nでええかw)

lambdaと併用可能な他のiterator adaptor

boost::filter_iterator(アルゴリズムと併用すれば***_if形式のアルゴリズムが即興で完成) boost::function_output_iterator(lambda化してもあんまり意味が無い?)

ここでようやく一息つけると思ったら・・・

ふぃ〜.これでようやくboostのiteratorまわりのことは満足したぞ・・・と思って,後は適当に他のiterator adaptorをいじっていたら VC++7.1でcounting_iteratorをiterator範囲での初期化やiterator範囲でのassignに使おうとするとwarningが出る(原因と解決…

結論:boost::iterator_adaptor + proxy object

base_itをベースとなるiterator,itをbase_itにadaptorを適用したiterator,fを関数とします.transform_iteratorは*itがf(*base_it)になるようにしてくれます.この形式はitがinput iteratorであるときに相性が良い形式ですが,output iteratorを似たような…