可平面性的判断算法——DMP算法

以下内容为课堂学习笔记以及自己理解的一些过程

Demoucron-Malgrange-Pertuiset(DMP)算法:简单的平方算法。

算法基本过程

H-fragment

图G的H-fragment:

  • 给定G的一个子图H
  • G的H-fragment是G中去掉H后剩余的“连通分支”,即
    (1)一条不在H中但两个端点都在H中的边,或者
    (2)G-V[H]的一个连通分支+它连到H的边及其端点。
    在这里插入图片描述

基本思路

(1)迭代地嵌入当前子图的fragment,直至:

  • G全部被嵌入(可平面)
  • 某个fragment无法嵌入(不可平面)

(2)嵌入一个fragment可能难以操作,但总能嵌入其中的一条路

引理

图G是可平面的当且仅当G的每个块都是可平面的。
证明:
必要性⇒:因为可平面图的子图都是可平面的,所以必要性显然。
充分性⇐:
  只需要考虑连通图,否则分别考虑每个连通分支
  对G的块数n作数学归纳证明。
  当n=1时,由条件,结论显然成立;
  假设当n<k时,若G的每个块都是可平面的,有G是可平面的。下面考虑n=k时的情形。
  设点v是G的割点,则按照v,G可以分成两个边不重子图G1与G2,即G=G1∪G2,且G1∩G2={v}。
  按归纳假设,G1与G2都是可平面图。取G1与G2的平面嵌入满足点v都在外部面边界上,则它们在点v处对接后,将得到G的平面嵌入。
  综上所述,G是可平面图。

基本步骤

  • 只需要检测每个块(2-连通图)是否可平面即可。
  • 从2-连通图G中任取一个圈G0,平面嵌入。
  • 迭代:
    (1)找到所有Gi-fragment。
    (2)对于每个Gi-fragment(下述称作B),在Gi中找到所有包含所有B的附着点的面,称作F(B)。
       - 如果某个F(B)为空,则G不可平面。
       - 否则,如果某个|F(B)|=1,则选中这个B。
       - 否则,每个|F(B)|>1,则任选一个B。
    (3)从选中的B中任选一条连接两个附着点的路P,则P平面嵌入到F(B)中的一个面中。
    (4)将结果记作Gi+1
    (5)如果Gi+1=G,则G可平面。否则,继续迭代。

举例

在这里插入图片描述最终结果

不可平面的情况就不举例的,也就是在执行嵌入的时候,如果出现某一个块的F(Bi)=∅,
那么这个图就是不可平面的。

算法的正确性

如果G是可平面图,假设其平面嵌入的预期结果是Q。

  1. G中的每个圈在平面嵌入后仍是一个圈⇒算法先将一个圈平面嵌入:或者与Q中一致,或者方向相反(因为Q是可以翻转,因此结果与Q“对称”)
  2. 只需证明:如果算法截至Gi的嵌入与Q一致或者(局部)对称,那么截至Gi+1的嵌入也与Q一致或者(局部)对称。
    (1)如果选中的是某个|F(B)|=1,即只有一个面可以将P嵌入,那么这种嵌入方式必然与Q中的方式一致。
    (2)如果选中的是某个|F(B)|>1,并且没有将P按照Q中的方式嵌入到面f中,而是“错误地”嵌入到面f’中,怎么办?

     - 这意味着f和f’有公共边界,那么对于之后的fragment,只要将原本嵌入f的改为嵌入f’,将原本嵌入f’的改为嵌入f,即沿f和f’的公共边界对称翻转,便可得到一个与Q(局部)对称的结果。

时间复杂度

O(v2)

  • 块分解:O(v),基于DFS
  • 找初始的圈:O(v)
  • 迭代轮数?
       - 简单平面图满足ε≤3v-6
       - φ-1=ε-v+1≤2v-5∈O(v),因为每轮迭代新增一个面
  • 每轮迭代的时间:O(v)
  • 9
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: MPU6050是一款常用的三轴陀螺仪和三轴加速度计的传感器模块,DMP算法则是它内部集成的一个数字运动处理器。下面是关于MPU6050 DMP算法的一些解释: DMP全称为Digital Motion Processor,是一种由英特尔公司开发的数字运动处理器。由于传感器的数据处理任务复杂,要将陀螺仪和加速度计的原始数据进行滤波、姿态解算等处理,传统的处理方法需要花费大量的资源和时间。DMP算法的出现解决了这个问题,它可以在一定程度上减少主控芯片的负担。 MPU6050内部集成了DMP算法,可以直接输出姿态数据。在使用MPU6050模块时,我们只需简单的配置一些参数,然后就可以通过I2C接口读取到姿态数据,而无需自己进行复杂的算法开发。这极大地方便了使用者。 DMP算法的运行需要一定的时间,在启用DMP算法后,MPU6050会自动处理传感器的数据并输出姿态数据。这种集成的特性使得MPU6050在无人机、平衡车、智能机器人等领域得到了广泛的应用。 需要注意的是,MPU6050的DMP算法虽然方便了使用者,但也有一些限制。例如,由于DMP算法是在传感器芯片内部运行的,用户不可见和不可修改,因此有时我们可能无法精确控制算法的输出。 总之,MPU6050内部集成的DMP算法为使用者提供了一种方便快捷的姿态解算方法,使得姿态数据的处理不再需要繁琐的编程和计算。这对于需要获取姿态信息的各类应用具有很高的实用价值。 ### 回答2: MPU6050是一种六轴惯性测量单元,其中包括三轴加速度计和三轴陀螺仪。DMP(Digital Motion Processor)是一种内置在MPU6050芯片中的算法,用于将原始传感器数据处理和融合,提供方便和高效的姿态实时数据。 DMP算法结合了传感器的硬件加速和软件处理,能够提供精确的姿态实时数据。它可以通过内部的传感器数据融合算法,将加速度计和陀螺仪的数据进行滤波和补偿,从而输出更加稳定和准确的数据。 使用MPU6050的DMP算法,可以减少对外部处理器的依赖。通常情况下,使用者只需要读取算法输出的姿态数据,而无需自行编写复杂的滤波和姿态计算算法。这使得设计师可以更加专注于应用程序的开发,而不需要过多关注传感器数据的处理。 除此之外,MPU6050的DMP算法还提供了一些其他功能,比如姿态阈值检测和手势识别。这些功能可以应用于无人机、智能手机等各种设备上,帮助用户更便捷地获得所需的姿态和手势信息。 总的说来,MPU6050的DMP算法是一种在芯片内部实现的传感器数据处理和融合算法,通过将加速度计和陀螺仪的数据进行滤波和补偿,提供精确的姿态实时数据。这一算法的使用简化了开发流程,提供了方便和高效的应用解决方案。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值