タグ

algorithmに関するserianのブックマーク (3)

  • 遺伝的アルゴリズムの紹介 - 人工知能に関する断創録

    2001年の勉強会で発表した遺伝的アルゴリズムの紹介資料です。HDDをあさってたら見つけたので一応記録。ほんのさわりです。最近の研究ではどこまで進展したんでしょうね?遺伝的アルゴリズムって複雑系と人工生命の文脈で捕らえるのが面白いのに、研究だとただの探索アルゴリズムになっちゃうのが悲しかった。 はじめに 遺伝的アルゴリズム(Genetic Algorithm:GA)とは、生物進化(自然選択、突然変異)から着想を得た汎用的な探索手法です。探索というのは、たくさんの解の候補がある中から、最も良い解を探すことです。つまり、GAとは解の候補から最もよいものを探すのが目的と考えられます。 歴史的背景 GAは、1975年、Hollandによって初めて導入されました。当時は、「なぜ進化のような何十億年もかかるプロセスの真似をするのか?」という反応が多かったらしいです。しかし、その後のGoldbergの研

  • Gauche で arcfour - 主題のない日記

    arcfour という暗号がある。 実質的には擬似乱数生成器で、生成した数列を対象データと xor する仕組みだ。 乱数の種が鍵となるわけである。 この暗号は非常に単純で、短いコードで実装可能という特徴がある。 今回はこの arcfour を Gauche で実装してみようと試みた。 まずは素直に暗号アルゴリズムを書き下したものがこれだ。 (use gauche.uvector) (define-syntax swap! (syntax-rules () ((_ x y) (let1 t x (set! x y) (set! y t))))) (define-class <arcfour> () ((s :init-form (make-u8vector 256)) (x :init-value 0) (y :init-value 0))) (define-method arcfour-k

    Gauche で arcfour - 主題のない日記
    serian
    serian 2010/05/13
    ユニフォームベクタとか、オブジェクトシステムとか、文字列ポートとか、カスタマイズ可能なポートとかの仕組み
  • オーダーを極める思考法

    プログラムの実行に掛かる時間を把握しておくのは、プログラミングを行う上で基的な注意点です。今回は、計算量のオーダーについて学びながら、TopCoderのMedium問題を考えてみましょう。 プログラムの実行時間 業務としてプログラミングをされている方には釈迦に説法かもしれませんが、プログラムの実行に掛かる時間を把握しておくのは、プログラミングを行う上で基的な注意点です。そしてこれは、TopCoderなどのコンテストでプログラムを組む際にもよく当てはまります。通常、こうしたことは感覚的に理解している方がほとんどだと思いますが、具体的にどれくらいのループを回すと何秒掛かる、といった基準を持っている人は少ないのではないでしょうか? 非常に基的なことですが、プログラムの実行時間に関して再確認しておきたいと思います。 TopCoderの制限に関して TopCoderでは、実行時間およびメモリ使

    オーダーを極める思考法
  • 1