Steiner树

斯坦纳树问题是组合优化问题,与最小生成树相似,是最短网络的一种。

  • 最小生成树是在给定的点集和边中寻求最短网络使所有点连通。
  • 最小斯坦纳树允许在给定点外增加额外的点,使生成的最短网络开销最小。
阅读全文 »

无标注网络

  • ER随机网络:埃尔德什(Paul Erdos)-雷尼(Alfred Renyi)随机网络。生成网络描述如下:

    1. 从N个孤立节点开始;
    2. 选择一对节点,产生一个0-1之间的随机数。如果该随机数小于p,则这对节点之间放一条连接;否则,该节点对保持不连接;
    3. 对所有N(N-1)/2个节点对重复步骤2。
  • 规则网络:指平移对称性晶格,任何一个格点的近邻数目都相同。

[方法论] - How to solve it

  • 弄清问题
    • 未知数是什么?已知数是什么?条件是什么?【输入 + 输出 + 约束】
    • 满足条件是否可能?要确定未知数,条件是否充分?或者多余?还是矛盾?
    • 画一张图,使用恰当的符号;
    • 理清不同的条件,并尝试记录它们;
  • 拟定计划
    • 找出已知数和未知数之间的联系。如果没有直接的联系,就必须先考虑辅助性的问题。最终得到一个求解计划。
      • 你以前见过它吗?是否见过相同的或者形式稍有不同的问题?
      • 是否知道与此相关的问题?或者一个可以用得上的定理?
      • 看着未知数,想出一个有相同或者相似未知数的熟悉问题。
      • 如果有一个与现在的问题有关并且早已解决的问题,你能否利用它?能否利用它的结果或方法?为了利用它是否应该先引入某些辅助元素?
      • 能否重新叙述这个问题,尽可能地从不同的角度?很多时候必须回到定义中去。
      • 如果你不能解决所提出的问题,可以尝试先解决一个与此有关的。你能否提出一个更容易着手的相关问题——像是一个更普遍的或者更特殊的,或者一个类比的问题?
      • 能否解决这个问题的一部分?仅仅保留条件的一部分而舍弃其余,这样对于未知数能确定到什么程度?它还能怎样变化?你能否从已知数据推导出来某些有用的信息?你是否考虑过用其他数据来确定未知数?如果需要的话,你能否转化未知数或数据(或者二者同时),以使得新未知数和新数据联系更紧密?
      • 你是否利用了所有的已知数据?你是否利用了全部的条件?你是否考虑了问题种包含的所有基本概念?
  • 实行计划
    • 实现你的解题计划,检查每个步骤。你能否清楚地看出这一步骤的正确性?你能否证明?
  • 回顾
    • 验算所得到的解
      • 你能否验算这个解?能否解决争议?
      • 你能否用别的方法得到这个解答?或者你其实能否一眼就看出它来?
      • 你能否把本题的结果或方法应用于其他的问题?

线段树

1. 基本概念

  • 定义:线段树是一棵满二叉树(除了最后一层),因此可以用堆(一维数组)进行存储;

    image-20210812114439710.png

    对于上图中的段,从上到下,从左到右依次编号1,2,3,……

    对于某一段u

    • 父节点为$\left\lfloor x/2 \right\rfloor $,即u>>1
    • 左儿子为($2x$),即u<<1
    • 右儿子为($2x+1$),即u<<1 | 1

    同时在考虑存储空间时,倒数第二层最多有n个节点,倒数第一层最多有2n个节点,倒数第二层之前最多有(n-1)个节点,因此最多总共有(4n-1)个节点。因此我们需要开$4n$大小的空间。

  • 5种基本操作
    • push_up:由子节点计算父节点,sum = L.sum + R.sum
    • push_down:将父节点修改信息下传至子节点,也被称作懒标记(或延迟标记)
    • build:将一段区间初始化为线段树;
    • modify:修改端点或修改区间
    • query:查询某一段区间的信息。
  • 扫描线法

树链剖分

1. 基本概念

  • 树链剖分(简称树剖);

  • 重儿子:这里我理解为重(zhòng)儿子,因为它是某个节点众多子树中权值最大的子树的根节点。从该节点连向重儿子的边即为重边

    img

  • 重链:由重边连接的点和边组成,即为树链

阅读全文 »

最近公共祖先

1. 基本概念

  • 定义:树上任意两点向根节点靠近的路上重合的深度最大的点;
阅读全文 »

路径重建

本篇文章主要收集了和路径重建相关的算法题,希望会对目前所研究的问题带来些启发。

阅读全文 »

二分图多重匹配

1. 二分图匹配、二分图多重匹配

  • 简洁定义:
    • 二分图匹配:边数最多的匹配;
    • 二分图多重匹配:规定一个点要与L条边匹配。同时根据是否有边权,可划分为:
      • 二分图最大多重匹配;
      • 二分图最大权多重匹配(二分图多重最佳完美匹配);
  • 联系:L == 1时,二分图多重匹配退化为二分图匹配。
阅读全文 »

朱刘算法

0. 背景

  • 无向图:最小生成树;
  • 有向图:最小树形图;
阅读全文 »

Prufer编码

0. 背景

  • 无根树和Prufer编码是一一对应的;
阅读全文 »