最近正值毕业设计焦头烂额之际,接触到了一个关于构造支配树的算法:Lenguer Tarjan算法,在github上找了一个此算法的开源代码(感谢大佬)拿来理解,最后发现此程序的输入是一个2至5的数字,表示最高迭代次数,用以随机生成一个有向图,之后调用build_dominator_tree函数构造支配树,输出要生成一个dominator.exe文件,以及cfg.dot ,idom.dot,sdom.dot三个文件,第一个是随机生成的控制流图,idom.dot为直接必经结点(最近支配点),sdom.dot为半必经结点(有望成为直接必经结点的点),它们的形式如下:
digraph cfg {
0 -> 1
0 -> 2
1 -> 3
3 -> 4
3 -> 5
2 -> 6
6 -> 7
6 -> 8
7 -> 9
9 -> 10
9 -> 11
}
此时非常希望能够找到一个工具将他们直观显示出来,最后发现了一个可以基于dot脚本文件的开源绘图工具,之前绘图也只用过visio,各种拖拽,这个不是托拽而是使用代码绘图,现在来介绍下如何在windows下载安装此工具,并配一简单实例(就拿我那个程序的输出作为例子吧)
- 首先需要进入Graphviz官网进行下载,可以看到有适用于不同操作系统的版本,我这里就说windows系统la
2. 点击windows下方的Stable 2.38 Windows..... balabala,来到如下界面:
3. 点击graphviz-2.38.msi,下载完成后,双击,一路next,安装成功
这个时候如果想在命令行对其进行控制,需要配置相应的环境变量,如果不配置,我不配图了,因为我配过了嘻嘻,附上配置步骤:
右键点击我的电脑,选择属性,点击高级系统设置,右下角有个环境变量,点击,进去后有一个用户变量(只对当前用户起作用)和一个系统变量(对所有用户起作用),我这里设置用户变量,点击path,选择编辑,将你下载的Graphviz的路径添加进去,去我的电脑复制路径即可,选择确定。
接下来,我们就可以在命令行输入如下命令
dot -version //注意中间有个空格
可看到出现如下
可看到系统已识别此版本软件
接下来,就来演示一下它的效果吧:
首先在Graphviz目录下的bin目录下点击gvedit.exe,就会到如下页面:
你可以选择左上角file,自己new一个程序,也可以选一个程序生成的dot文件 ,我这里选择算法生成的dot文件喽,效果呈现:
很方便快捷还直观
接下来,我们在windows命令行进行图片保存,首先cd到dot文件所在的位置,输入如下命令:
dot -Tgif -o output.gif test2.dot
其中test2.dot是你的文件的名字,output.gif是输出图像的名字,