7. 線形合同法
• s = (a × s + b) mod m
• よいところ
– 計算が簡単
– メモリを食わない
• 数値の選び方(周期がmになる)
– m = 2^n
– a = 4 x + 1
– b = 奇数
https://gist.github.com/kishida/96c4abaa266aad76b867
15. ルールの弱点をなくす
• クイックソート
– 平均計算量 O(n log n)
– ソート済のリストに対してはO(n^2)
quickSort :: Ord a => [a] -> [a]
quickSort [] = []
quickSort (p:xs) = (quickSort less) ++ [p] ++ (quickSort more)
where
less = [ x | x <- xs, x < p ]
more = [ x | x <- xs, p <= x ] (「ふつうのHaskell」より)
26. 遺伝アルゴリズム
• 遺伝子型と表現型を決める
– 表現型
• 実際に求めたい組み合わせ
• TSPの場合は都市番号
– ex: a -> c -> d -> e -> b -> a
– 遺伝子型
• 遺伝アルゴリズムで表現
しやすい型
• TSPの場合、残りのうち
何番目か
– ex:12221
a
b
e
c
d