我正在读一本名为“#34;离散数学及其应用”的书。作者:Kenneth H. Rosen。在书中,无向图的顶点的程度定义如下:
"无向图中顶点的度数是与其相关的边的数量,除了顶点处的环对该顶点的度数贡献两倍。顶点v的度数由deg(v)表示。"
我有点困惑为什么如果有一个循环的顶点的程度被视为2而不是1.这是什么原因?如果我们想要跟踪图表中的边数,我们不应该将其视为1而不是2?
答案 0 :(得分:1)
这与编程没什么关系,与数学有很大关系(有人会说两者之间的区别有点武断)。
我的观点是,以这种方式定义它更简单,并且在有向图的一般情况下更加一致。想象一下,你有一个有向图数据结构,包括传入和传出边缘:
struct Node {
int id;
vector<Edge> outgoing;
vector<Edge> incoming;
}
根据书中的定义,
int degree(const Node &node) {
return outgoing.size() + incoming.size();
}
使用替代定义(不计算循环两次),您需要为传入和传出的边创建一个特殊情况。