2008年8月18日月曜日

【C算法】第8章 文字列処理 (その3)

こつこつ。今回は「8-3 文字列探索」

  • brute forthとあるが、brute forceの誤字と思われる。
  • 少なからぬ時間、Cとアルゴリズムに取り組んで、自分についてわかってきたことがある。

    • 数に弱い。基数と序数にかかわる計算に弱いのだ。例えば、30 - 20 = 10ということと、[20,30]に含まれる整数の個数が11個、(20,30]なら10個、(20,30)なら9個ということがどう関係しているかわかっていないのだ。だから配列を取り扱うときに、インデックスの境界での振舞いをすぐに見失う。これは訓練するしかない。
    • 頭のメモリというかスタックというか何かが小さい。他人のことはわからないが、おそらく自分が漠然と予想していた自分の能力よりも遥に小さいのが現実であり、そのギャップに対処できていない。だから、アルゴリズムとその実装について考えるときに、追いきれなくて思考停止することが多い。小さいものは仕方ないから、大きくする努力とともに、小さいものでなんとかやっていく工夫が必要。

  • KMP法の演習をやるなかでの知見。

    • 適切な情報を表示させようとprint文を設置しようとすることは、アルゴリズムの理解に有効である。
    • それらprint文を#if DEBUGとかでON/OFFするようにしているのだが、Cのマクロ、見ためが汚ない。。。
    • ログ出力のよい方法はあるのだろうか? 調べてみるとlog4cというものがあるようだ。使用例がみあたらない。先々調査する。


次回はBoyer-Moore法。

0 件のコメント: