Graphviz

test01.gif

僕はトライ*1を実装する際に,確認のためトライを図示するのですが,そのルーチンを書くのはかなり面倒です.書いたところであまり面白い部分じゃありませんから,なおのこと面倒です.で,どうにか手を抜こうと,グラフ*2の図示ツールであるGraphvizを使ってみました.

digraph G {
	rankdir = "LR";
	node [shape = "ellipse"];
	"1" -> "2" [label = "a"];
	"1" -> "8" [label = "b"];
	"1" -> "9" [label = "c"];
	"3" -> "4" [label = "c"];
	"4" -> "5" [label = "d"];
	"2" -> "3" [label = "b"];
	"4" -> "7" [label = "f"];
}

上記DOT言語のコードを"test01.dot"という名前で保存し,下記コマンドを実行しました.

dot.exe -Tps -otest01.ps test01.dot

得られた"test01.ps"をIllustrator CSで開き,少しばかり大きさを調節して*3PNG形式で保存したものが画像"test01.png"です.なかなか良い感じに出力されます.

dot.exe -Tpng -otest01.png test01.dot

なお,pngファイル形式も出力できますが,300ピクセル*4に収まりません.縮小すると画像が荒く見づらいので,上の方法をとりました.

なお,このツールはきちんと日本語は扱えません.日本語化のために色々いじっている人もいますが,なかなか大変なようです.

*1:trie.木(tree)の一種.

*2:木構造はグラフに含まれます.「データ構造とアルゴリズム」に詳しい人には言うまでも無いことですが,あまり知らない人のために注釈を付けておきます.

*3:僕の環境に無かったフォントを別の物に変えはしましたが,グラフの形状自体は変えていません.

*4:有料オプションでの長辺の限界.