主に寝ている日曜日。艦これのイベントを進めている。ドロップもしないし、丙でも手抜きだと勝てず、どうしたものかなという気持ち(資源も減ってきた)。
怪我の調子はだいぶ良くなってきているけど、筋肉系の負傷っぽいので、イマイチ完治には時間がかかるタイプな気もする。早めに治ってくれると、歩いたり階段昇り降りしたりするときに気を使わなくていいので、治ってほしいな。
昨日読んでいた本に書いてあった「浸透」の例を確認するためにJuliaでプログラムを書いた。実際に試してみると、だいたい確率pが0.5と0.6の間に相転移があることが分かる。
浸透(格子世界)
- N×Nの格子を考える(理想的にはN→∞)
- 各格子の点(i, j)について、確率pで独立に1/0を決定する
- ある点v0を含む連結成分の大きさを計算し、確率pとの関係をプロットする
- 実装ではv0を(N/2, N/2)の位置に設定した
function generate(p, N) ber = Bernoulli(p) grid = zeros(Int64, N, N) for i in 1:N, j in 1:N grid[i, j] = Int(rand(ber)) end if p > 0 grid[Int(N/2), Int(N/2)] = 1 end return grid end
- 連結成分の計算は、とりあえず普通にキューを使って実装した
function gen_connected(grid) N = size(grid)[1] q = Deque{Tuple{Int, Int}}() con = Set{Tuple{Int, Int}}() v0 = (Int(N/2), Int(N/2)) push!(q, v0) while length(q) > 0 v = pop!(q) push!(con, v) lv = extend(v) for vv in lv ii, jj = vv if 1 <= ii <= N && 1 <= jj <= N if grid[ii, jj] == 1 && !in((ii, jj), con) push!(q, vv) end end end end return con end
- 格子サイズ10×10の場合
- 格子サイズ50×50の場合
- 格子サイズ100×100の場合