标题:求解图操作中几个常见枚举值的意义。
取消只看楼主
yangfrancis
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:141
帖 子:1510
专家分:7661
注 册:2014-5-19
结帖率:100%
已结贴  问题点数:20 回复次数:1 
求解图操作中几个常见枚举值的意义。
最近看图结构的时候看到书上对顶点和边的状态用了以下枚举类型来表示。
顶点状态:
typedef enum{UNDISCOVERED, DISCOVERED, VISITED} VStatus;
边状态:
typedef enum{UNDETERMINED, TREE, CROSS, FORWARD, BACKWARD} EStatus;

最要命的是书上没有说明这两组枚举类型的常数意义就直接上代码了,感觉好难看懂。网上查了一下这几个常数的确是经常定义点状态和边状态的,但自己人笨还没查到详细说明。想请高人解释一下它们的具体意义,应该什么时候把点或边定性为哪种状态。请不要单纯为我解释这些个英语单词的意思,这个我还是懂的。
谢谢了。
搜索更多相关主题的帖子: 英语单词 自己人 CROSS 网上 
2017-04-08 10:57
yangfrancis
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:141
帖 子:1510
专家分:7661
注 册:2014-5-19
得分:0 
多谢回复。之前手机结贴的,不便回复。现在补上。
我自己后来结合代码试着理解了一下,顶点和书生牛犊的解释应该是一致的。边好像是这样(仅为个人理解):在深度优先遍历中,所有边的初始状态是UNDETERMINED,当当前顶点遇到没有处理过的邻居,当前顶点和邻居间的边置为TREE (还真是TREE,可能是指它可以作为一个新起点发起搜索树吧), 如果遇到一个被发现时间比当前顶点还早的VISITED邻居,置为FORWARD (没看出这种关系和forward这个单词有什么联系),如果遇到一个被发现时间不比当前顶点处理得早的VISITED邻居,置为CROSS, 如果遇到的邻居已被发现但其邻居检索尚未完成(即DISCOVERED邻居),将边置为BACKWARD.

感觉比广度遍历复杂得多,也没看出规定这几个常数区别存在什么样的意义。本想放一放,先学习下一块;下一块是拓扑排序,更像天书……
2017-04-11 14:43



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-475887-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.162031 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved