タグ

2015年11月6日のブックマーク (3件)

  • 遺伝的アルゴリズムで遅い正規表現を検出する - にょきにょきブログ

    ある正規表現に様々な文字列をわせてマッチするかどうか判定することは大変頻出するコードです。 稀に、わせる文字列のパターンによっては正規表現のマッチに猛烈に時間を消費する場合があります。 僕も少し前に遭遇し、下記に公開しています。 developer.cybozu.co.jp この時は、(\\w|_){1,64}@ という正規表現があって、____________________ のようにアンダースコアを複数含む文字列のマッチに大変時間がかかるという問題でした。 この、「対象文字列によってはマッチに時間がかかることがある問題」を、遺伝的アルゴリズムを用いて解決できないかチャレンジしてみましょう。 考え方としては、 ランダムな文字列を 10000 個ほど生成し、 それぞれ正規表現にマッチするか判定させ、 時間がかかった順にソートし、 上位を交配させて世代を繰り返せば、 遅い文字列が抽出でき

    遺伝的アルゴリズムで遅い正規表現を検出する - にょきにょきブログ
  • Private Presentation

    Looks like this one's off the shelfThe presentation you're looking for was made private. But your next lightbulb moment might be one click away. Search top insights from every field. Explore by category instead

    Private Presentation
  • ソートアルゴリズム高速化への道 - kivantium活動日記

    先日、アルゴリズムの授業でソートのアルゴリズムをいくつか習いました。ソートアルゴリズムの名前と原理くらいは聞いたことがありましたが、実装したことはなかったのでいい機会だと思い実装してみることにしてみました。ただ実装するだけでは面白くないので高速化の限界に挑戦してみたいと思います。 計測用プログラム 今回の計測では、ランダム値が入った配列のソートを100回行い、平均時間を各アルゴリズムに競わせるというシンプルなルールにしました。プログラムは以下の通りです。 C++11で入ったメルセンヌ・ツイスタなどの機能を使っているので、ビルド時には-std=c++11を指定する必要があります。 実験に使用したパソコンのCPUはCore i3-3227U@1.90GHz、コンパイラはgcc version 4.8.4で最適化オプションには-O3を指定しました。 #include <iostream> #in

    ソートアルゴリズム高速化への道 - kivantium活動日記