【问题标题】:For a graph, given that a vertex has a loop, why is the degree of that vertex taken as 2 instead of 1?对于一个图,假设一个顶点有一个循环,为什么该顶点的度数取为 2 而不是 1?
【发布时间】:2016-12-09 11:04:49
【问题描述】:

我正在阅读 Kenneth H. Rosen 的《离散数学及其应用》一书。在书中,无向图的一个顶点的度定义如下:

"在无向图中,顶点的度数是与它相关的边的数量,除了顶点处的循环对该顶点度数的贡献是两倍。顶点 v 的度数用 deg(v )。”

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

【问题讨论】:

    标签: algorithm graph


    【解决方案1】:

    这与编程无关,而与数学有很大关系(有人会说两者之间的区别有些随意)。

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

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

    根据书中的定义,

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

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

    【讨论】:

    • 这是有道理的。谢谢你的回复。
    猜你喜欢
    • 2014-06-01
    • 1970-01-01
    • 2012-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-11
    • 2019-09-03
    相关资源
    最近更新 更多