对于图形,假设顶点有一个循环,为什么该顶点的程度取为2而不是1?

时间:2016-12-09 11:04:50

标签: algorithm graph

我正在读一本名为“#34;离散数学及其应用”的书。作者:Kenneth H. Rosen。在书中,无向图的顶点的程度定义如下:

"无向图中顶点的度数是与其相关的边的数量,除了顶点处的环对该顶点的度数贡献两倍。顶点v的度数由deg(v)表示。"

我有点困惑为什么如果有一个循环的顶点的程度被视为2而不是1.这是什么原因?如果我们想要跟踪图表中的边数,我们不应该将其视为1而不是2?

1 个答案:

答案 0 :(得分:1)

这与编程没什么关系,与数学有很大关系(有人会说两者之间的区别有点武断)。

我的观点是,以这种方式定义它更简单,并且在有向图的一般情况下更加一致。想象一下,你有一个有向图数据结构,包括传入和传出边缘:

struct Node {
   int id;
   vector<Edge> outgoing;
   vector<Edge> incoming;
}

根据书中的定义,

int degree(const Node &node) {
  return outgoing.size() + incoming.size();
}

使用替代定义(不计算循环两次),您需要为传入和传出的边创建一个特殊情况。