浮動少数と丸め誤差

floatやdouble型をloopカウンタや終了条件にすると意図したループ回数にはならない時もあるので注意。 丸め誤差 限られたビット数で浮動小数点数を表現した時、実際の値と近似した値で誤差が出る。 float f1, f2; f1 = 0.1f; f2 = 0.100000001f; printf( " %…

A Tour of Go - Concurrency : 自分用リファレンスメモ

Goroutines Goroutinesは軽量なスレッド。goと記述するだけで別スレッドで処理が実装される。 go f(x, y, z) Channels channelを使用してgoroutine間でデータの送受信を行える。 channelの生成 ch := make(chan int) channelの送受信 ch <- v // v をチャネ…

Swift ドラッグ可能なView間を線でつなげる

最近、趣味でNeo4jを触ってて、Swift実装でソーシャルグラフのようなView表現を試してみた。 実装のイメージ ※ 何故かXcodeの動画キャプチャがエラー吐きまくりでカクカクになってしまった... まあ、こんなもんかな。strokeした線は消して再描画するみたい p…

A Tour of Go - Method and interfaces 自分用リファレンスメモ

Methods Goには、クラス( class )のしくみはないが、型にメソッド( method )を定義できる。 struct宣言したTyoeにメソッドを追加することでクラス定義と似た振る舞いを記述できる。 type Vertex struct { X, Y float64 } // Vertex型にメソッドを定義 func (…

B木の構造の整理

ノードページの構造 ページバッファに整列済みのデータを配置 { 40 } { 40, 63 } { 24, 40, 63 } { 24, 40, 58, 63 } ページの分割 バッファが溢れた時、ページの分割を行う。 { 24, (+ 31), 40, 58, 63 } ┏ {40} ┓ { 24, 31} {58, 63 } さらにデータを追加 …

2分木のノード削除

binary treeのノード削除 削除対象のノードの子が左右両方にある場合、削除後、親要素にどちらの要素をぶら下げれば良いか? 10 5 15 2 6 17 1 3 というツリーがあった場合、ノード5を削除した場合、どういうツリーになるか?という話し。 答え:子左要素の最…

AVL木の平衡原理

AVL木の平衡原理 AVL木とは どのノードから見ても左右の子ノードの深さの差が1以内のツリー構造を指す。以下はAVL木を保つ為の考え方。 1重回転 例えばこんなbinary treeがあった場合、ノード10から子孫ノードを辿った場合、子孫の高さが2階層以上の差がある…