zoukankan      html  css  js  c++  java
  • 曼哈顿最小生成树

    以某个点为原点,建平面直角坐标系。用从原点发出的射线将平面等分成八个无限的扇形区域 $R_1, R_2, dots, R_8$ 。

    角度区间采用左闭右开的形式。
    $R_2colon [0, pi/4)$,$R_1 colon [pi/4, pi/2)$,$R_3 colon [-pi/4, 0)$,$R_4 colon [-pi/2, -pi/4)$……

    考虑平面点集 $Psubseteq mathbb{R}^2$,对于 $P$ 中任意两点 $a, b$($a e b$)有 $b in R_1(a) iff a in R_5(b)$ 。

    若 $a$ 是 $R_5(b)$ 中离 $b$ 最近的点,则 $b$ 是 $R_1(a)$ 中离 $a$ 最近的点。

    参考文献 1 中提到

    上面的图中,一条边的两个端点都被计数了一次,所以最终的边数是不超过 $4n$ 的。

    参考文献 3 中提到

    以任意一个点为端点,将平面分为八块,每块占45度角,那么在生成树的最优解中,每个块与这个点至多有一条边,即一个点最多分别向八个方向最近的点连接一条边,一条边两个点共用,同时,有四个方向是两两对称的,所以只需要求出四块(一般求第一象限和第四象限)所以最后边数为 $4n$ 。

    我搞不懂为什么边数不超过 $4n$ 。

    设 $R_5(a)$ 非空,令 $P_5(a)$ 为 $R_5(a)$ 中距离 $a$ 最近的点的集合。能否证明:
    存在 $b in P_5(a)$ 满足 $R_1(b) = { a }$ 。

    证明:

    我构思了一个构造性证明:

    考虑所有有向边 $(a, b)$ 满足 $ b in R_1(a) $

    Minimum spanning tree algorithms usually use two properties to infer the inclusion and exclusion of edges in a minimum spanning tree. The first property is known as the cut property. It states that an edge of smallest weight crossing any partition of the vertex set into two parts belongs to a minimum spanning tree. The second property is known as the cycle property. It says that an edge with the largest weight in any cycle in the graph can be safely deleted.


    边数为何不超过 $4n$ 这个问题我想通了。设 $a,b$ 两点满足 $b in R_1(a)$,按照原先的选边策略,边 $(a, b)$ 能入选若且唯若「$b$ 是 $R_1(a)$ 中离 $a$ 最近的点」且「$a$ 是 $R_5(b)$ 中离 $b$ 最近的点」。如今我们可以证明若只以「$b$ 是 $R_1(a)$ 中离 $a$ 最近的点」这个条件来判断边 $(a, b)$ 是否入选(其他三组对称的区域也一样),则最多可以选出 $4n$ 条边;原来的条件比之更为严苛,自然也最多可以选出 $4n$ 条边。


    上述讨论是基于最小生成树的环切性质(cycle property):

    在图 $G=(V,E)$ 中,如果存在一个环,把环中权最大的边 $e$ 删除得到图 $G’=(V,E setminus {e})$(如果有多条最大边,则删除任意一条),则 $G$ 和 $G’$ 的最小生成树权和相同。

    上述选边的过程实际上是从完全图中删边的过程。如何证明每次删的边都是当时某个环中的最大边呢?

    这个地方还是没弄懂。

    又有新进展

    The algorithm can be considered as deleting edges from the complete graph. As described, all edges that we delete are redundant based on the cycle property.

    删边策略:

    对于任意两点 $p, q in R_i(s), quad 1le i le 4$, 将边 $ (s,p) $ 和 $(s,q)$ 中较长者删除。

    引理 1

    设 $G = (V, E)$ 为 $L1$ 度量下的 $n$ 个点的完全图,在图 $G$ 上进行上述删边过程,则始终有,对于任意 $p, q in R_i(s)$($1le ile 4, |sp| ge |sq|$),若 $(s, p) in E$ 且 $(s, q) in E$,则 $s, p, q $ 三点存在于某个环中,且 $(s, p)$ 是此环中的最大边。

    证明:用归纳法证明。由归纳假设可以推出对于任意 $p, q in V$,存在一条从 $p$ 到 $q$ 的路径 $P$ 满足:$P$ 上的边长度都不超过 $|pq|$ 。又 $|sp| > |pq|$,所以边 $(s,p)$ 不在路径 $P$ 上,于是 $(s,p), P, (p,s)$ 构成一个满足条件的环。

    后记

    对称性真神奇。

    在上述讨论,我们都假设平面上的 $n$ 个点没有重合的,这个假设是合理的;但是如果所考虑的 $n$ 个点中有重合的点,会不会出现什么问题?(corner case 真烦人)

    Reference

    1. https://riteme.github.io/blog/2017-1-17/manhattan-mst.html

    2. https://wenku.baidu.com/view/977fab114431b90d6c85c760.html

    3. https://www.jianshu.com/p/f669701933a0

    4. http://www.ece.northwestern.edu/~haizhou/publications/zhou02ipl.pdf

  • 相关阅读:
    面向对象
    PIL库学习及运用
    Jieba库使用和好玩的词云
    Python汉诺塔问题
    用python计算圆周率PI
    使用python画一只佩奇
    面向对象与正则表达式的学习
    美白,磨皮,搞笑图片处理
    tuetle制作汉诺塔
    python圆周率的计算及进度条提示
  • 原文地址:https://www.cnblogs.com/Patt/p/9356193.html
Copyright © 2011-2022 走看看