一些图论相关算法的学习研究和C#版演示程序
前段时间学习图论相关的算法,就做了一个C#版的演示程序,这个程序涉及到了如下算法:
深度优先搜索遍历(Depth First Search),
广度优先搜索遍历(Breath Frist Search),
最小生成树(Minimum Spanning Tree),
针对所有端点的Dijsktra最短路径搜索(Dijsktra Path),
针对特定端点的Dijsktra最短路径搜索(Dijsktra Path Single),
还有一些未完成的算法,如欧拉图,一笔画之类的,我会找时间将其也实现上去。
大家可以下载源代码并编译执行(基于.net 2.0)。
这里是程序界面截图:
通过设定Vertex Count(顶点个数)和Edge Ratio(值越大端点之间用边连接的机率越大)可以生成各种不同复杂度的无向图。界面右边有所生成的图的邻接矩阵显示。
图的端点是可以拖动的。大家可以通过拖动这些端点来调整出不同的图来试验算法。
照例上传一些算法演示范例动画:
从端点A开始的深度优先遍历
从端点A开始的广度优先遍历
从端点A开始的最小生成树
从端点A开始通向所有端点的最短路径(Dijsktra算法)
从端点A开始端点F的最短路径(Dijsktra算法)