数据结构学习(C++)——图(总结)
以上就是现在的教科书里面,图的全部内容了。写完之后,茫茫然,不知道学完之后有什么用……就像我在开篇写的,图的应用太广泛了,以至于现在觉得图“没什么用”——很奇怪的逻辑,只有仔细体味才能觉察到写教科书的人的无奈。
不同于前面的链表和树,在图这里,储存方法不是重点,我们更多的注意力放在了算法上。我在写程序的时候,也尽量做到了算法和储存方法无关。然而算法实际上就是现实问题的抽象,如果我们的常识所不及,我们也就没有办法来介绍算法,反过来说,几乎遇不到的问题,我们也不会对它的算法感兴趣。
因此,在图的算法里面,由铺设管道引出了最小生成树,由提高通信、交通网络可靠性引出了关节点和重连通分量,由地图寻径引出了最短路径,由工程预算引出了关键路径。这些恐怕是我们能够理解的全部了,如果再来一个电气网络计算,没点物理知识恐怕是要完。
但即使这样,上面的各个算法仍然离我们很远,我们大多数人恐怕永远都不会知道管道是怎么铺的。我想,这里面除了最短路径能引起大多数人的兴趣之外,其他的就只能走马观花的看看罢了。这也使得图的学习很像“聋子的耳朵”,真正接触到图的用途的人不多,并且即使用到图,也仅仅是个别的算法。
正像数据结构教学的通病一样,学无所用常常导致学无所成,前面的链表、树好歹还能做点什么东西出来,到了图这里,除了做个导游系统,我们也做不出别的什么了。写到这里很无奈,但我也只能是无奈……
那么,学完了图,我们应该掌握什么呢,是上面零散的算法吗?我的看法是,不是。我觉得我们更应该知道那些算法是怎么“创造”出来的,如果遇到了类似的问题,能不能“派生”出新的算法。因此,我觉得《数据结构算法与应用-C++语言描述》这本书,将图的最小生成树、最短路径、拓扑排序算法放到了贪婪算法里讲解,是一种更为合理的安排。
最后对在学习图时像我一样茫然的人深表同情。
- · 数据结构学习(C++)续——排序【1】测试程序
- · 浮点指令的优化
- · 在应用程序中集成自动完成功能
- · windows系统换服程序探讨
- · 数据结构学习(C++)续——排序【2】插入排序
- · 数据访问接口体系及数据对象模型探讨--[3]
- · 文档自动生成系统的研究与开发
- · DLL中类的显式链接
- · VC雕虫小技集(一)
- · VC雕虫小技集(二)
- · VC雕虫小技集(三)
- · VC雕虫小技集(四)
- · VC雕虫小技集(五)
- · VC雕虫小技集(六)
- · VC雕虫小技集(七)
- · 编程语言的异同及选择
- · 流媒体学习笔记----配置一个编码进程
- · 流媒体学习笔记---------编码视频的预览
- · 在VC中动态改变菜单
- · VC++ ADO开发实践之一
- · VC++ ADO开发实践之二
- · VC++ ADO开发实践之三
- · VC++ ADO开发实践之四
- · VC++ ADO开发实践之五
- · VC++ ADO开发实践之六
- · VC++ ADO开发实践之七
- · 图像平滑滚动效果的VC实现
- · VC中给树形控件的图标加上工具提示
- · VC++实现拨号上网程序
- · C++关键字(static/register/atuo/extern/volatile/const)释疑
- · .Net中的反射使用入门
- · 站在面相对象角度小议C++
- · Learn c++ step by step
- · Learn C++ step by step(2)
- · C++中的文件输入/输出(6):一些有用的函数
- · 如何在自己的程序中加入宏的功能
- · 在应用程序中将OJB作为一个存储层使用(一)
- · 在应用程序中将OJB作为一个存储层使用(五)
