图论入门和前缀树

580 阅读2分钟

图论入门

  1. 图: 图由节点和边组成,一个节点可能与众多节点直接相连,直接相连的节点被称为邻居

  2. 根据图中的边是有向边还是无向边,图分有向图、无向图和混合图。

  3. 在有向图中,以结点 v 为出发点的边的数量,我们叫作 v 的出度。而以 v 为 终点的边之数量,称为 v 的入度。

  4. 节点和边的交替序列,叫做通路,通路上的任意两个结点其实就是互为连通的。如果一条通路的起始点 v1和终止点 vn相同,这种特殊的通路我们就叫作回路。

  5. 树是一种特殊的图,它是没有简单回路的连通无向图,这些都是树: evernotecid://4FD5F4CB-133C-491F-BEF8-5109BADC162B/appyinxiangcom/24533776/ENResource/p5

  6. 有向树,是一种特殊的树,也许是图论中使用最广泛的一类图形。其中的边都是有向的,还需要满足三个条件:

    • 有且仅有一个节点入度为0(叫做根)
    • 除根之外,其他节点入度都为1
    • 从根到任意节点,只有一条通路

    据此可以看出上面的树中,1和3如果边换成有向,那就是有向树了。有向树还有几个重要的概念,父结点、子结点、兄弟结点、先辈结点、后辈结点、叶子结点、结点的高度(或深度)、树的高度(或深度)。

  7. 树和图的关系:

    • 图中结点之间的关系是 “邻居”, 树中结点之间的关系 “父子”,如果是无向图,“邻居” 之间是互通的,但是 “父子” 默认是单向关系,一般遍历从 “父” 到 “子”,子结点中一般不保留父结点的信息
    • 图和树不一样的是,图会存在 “环” 的概念,就是回路,树中永远不可能有回路,否则就不是一棵树
    • 可以说链表是特殊的树,树是特殊的图。
    • 综上所述,对比树,在一般的图中做深度优先搜索的区别就是:我们需要记录我们之前访问过的结点,防止重复访问

前缀树(prefix tree)

又叫字典树 trie(Trie一词来自retrieve),就是一种有向树

  • 基本性质:
    • 根节点不包含字符,除根节点意外每个节点只包含一个字符
    • 从根节点到某一个节点,路径上经过的字符连接起来,为该节点对应的字符串
    • 每个节点的所有子节点包含的字符串不相同 evernotecid://4FD5F4CB-133C-491F-BEF8-5109BADC162B/appyinxiangcom/24533776/ENResource/p9