差分约束系统

差分约束系统

  • 差分约束系统(spfa)
    • 1、概述
    • 2、过程模拟
    • 3、推理

差分约束系统(spfa)

1、概述

x j − x i ≤ w k x_j-x_i\le w_k xjxiwk转换为: x j ≤ w k + x i x_j\le w_k+x_i xjwk+xi

在松弛操作中:
∙ \bullet 如果 d ( v j ) > d ( v i ) + w ( e i , j ) d(v_j)>d(v_i)+w(e_{i,j}) d(vj)>d(vi)+w(ei,j),则更新 d ( v j ) = d ( v i ) + w ( e i , j ) d(v_j)=d(v_i)+w(e_{i,j}) d(vj)=d(vi)+w(ei,j)

∙ \bullet 如果 d ( v j ) ≤ d ( v i ) + w ( e i , j ) d(v_j)\le d(v_i)+w(e_{i,j}) d(vj)d(vi)+w(ei,j),则无需更新,这是最终目的。

差分约束系统转化成图的形式,再通过求解最短路径的方法(即通过松弛操作)就能够实现差分系统的求解。

2、过程模拟

由上述所知, x j − x i ≤ w k x_j-x_i\le w_k xjxiwk就相当于节点 v i v_i vi到节点 v j v_j vj的边权距离为 w k w_k wk

x 2 − x 1 ≤ − 2 x_2-x_1\le -2 x2x12
x 1 − x 3 ≤ − 1 x_1-x_3\le -1 x1x31
x 2 − x 3 ≤ 4 x_2-x_3\le 4 x2x34
x 4 − x 2 ≤ 5 x_4-x_2\le 5 x4x25
x 3 − x 4 ≤ 2 x_3-x_4\le 2 x3x42
x 4 − x 3 ≤ − 2 x_4-x_3\le -2 x4x32
x 5 − x 4 ≤ 3 x_5-x_4\le 3 x5x43
x 5 − x 3 ≤ − 3 x_5-x_3\le -3 x5x33
⇓ \Darr
在这里插入图片描述
⇓ \Darr
v 1 v_1 v1作为源节点
在这里插入图片描述
顶点的 d d d值为: ( 0 , − 2 , 5 , 3 , 2 ) (0,-2,5,3,2) (0,2,5,3,2)
由于 d ( v 2 ) − d ( v 1 ) ≤ w 1 , 2 d(v_2)-d(v_1)\le w_{1,2} d(v2)d(v1)w1,2,所以 − 2 − 0 ≤ − 2 -2-0\le -2 202成立,也可得 x 2 = − 2 x_2=-2 x2=2 x 1 = 0 x_1=0 x1=0
⇓ \Darr
v 3 v_3 v3作为源节点
在这里插入图片描述
顶点的 d d d值为: ( − 1 , − 3 , 0 , − 2 , − 3 ) (-1,-3,0,-2,-3) (1,3,0,2,3)
⇓ \Darr
v 0 v_0 v0作为源节点
在这里插入图片描述
顶点的 d d d值为: ( − 1 , − 3 , 0 , − 2 , − 3 ) (-1,-3,0,-2,-3) (1,3,0,2,3)

v 2 v_2 v2作为源节点,顶点的 d d d值为: ( 4 , 0 , 7 , 5 , 8 ) (4,0,7,5,8) (4,0,7,5,8)

v 4 v_4 v4作为源节点,顶点的 d d d值为: ( 1 , − 1 , 2 , 0 , − 1 ) (1,-1,2,0,-1) (1,1,2,0,1)

总计如下:
v 1 v_1 v1作为源节点, x v 1 = ( 0 , − 2 , 5 , 3 , 2 ) x_{v_1}=(0,-2,5,3,2) xv1=(0,2,5,3,2)
v 2 v_2 v2作为源节点, x v 2 = ( 4 , 0 , 7 , 5 , 8 ) x_{v_2}=(4,0,7,5,8) xv2=(4,0,7,5,8)
v 3 v_3 v3作为源节点, x v 3 = ( − 1 , − 3 , 0 , − 2 , − 3 ) x_{v_3}=(-1,-3,0,-2,-3) xv3=(1,3,0,2,3)
v 4 v_4 v4作为源节点, x v 4 = ( 1 , − 1 , 2 , 0 , − 1 ) x_{v_4}=(1,-1,2,0,-1) xv4=(1,1,2,0,1)

其中, x v 2 x_{v_2} xv2 x v 1 x_{v_1} xv1 x v 3 x_{v_3} xv3都没有关联性,但 x v 4 = x v 3 + 2 x_{v_4}=x_{v_3}+2 xv4=xv3+2

3、推理

推理1:
对于差分约束系统的任意一个解 x = ( x 1 , x 2 , x 3 , x 4 , x 5 ) x=(x_1,x_2,x_3,x_4,x_5) x=(x1,x2,x3,x4,x5),以及任意一个常数 k k k,则 x ′ = x + k = ( x 1 + k , x 2 + k , x 3 + k , x 4 + k , x 5 + k ) x'=x+k=(x_1+k,x_2+k,x_3+k,x_4+k,x_5+k) x=x+k=(x1+k,x2+k,x3+k,x4+k,x5+k)依然是差分约束系统的解。

推理2:
以差分约束系统对应图的所以节点为源节点,得出所有的独立解(这些解之间没有关联性),差分约束系统的所有解包含:1、所有的独立解,2、这些独立解和任意一个常数的和。

推理3:
如果差分约束系统对应图存在负环(也就是不存在最短路径),则差分约束系统不存在可行解。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/482702.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

dubbo 源码系列之-集群三板斧---负载均衡(-)

dubbo 源码系列之-负载均衡 概述核心接口 LoadBalanceDubbo 提供了 5 种负载均衡实现,分别是:LoadBalance 接口AbstractLoadBalance ConsistentHashLoadBalance 一致性hash1. 一致性 Hash 简析1.0 hash 算法2.0 一致性Hash算法3.0 一致性hash算法 引入槽…

K8S--SpringCloud应用整合Nacos实战

原文网址:K8S--SpringCloud应用整合Nacos实战-CSDN博客 简介 本文介绍K8S部署SpringCloud应用整合Nacos实战。 本文是将原来的SpringCloud项目(闪速优选)迁移到K8S上,一行代码都不需要改动。用K8S运行Nacos、Gateway、SpringCl…

PHP 读取嵌入式数据 SQLite3

SQLite3 属于轻量级开源的嵌入式关系型数据库,但它支持 ACID(Atomicity,Consistency,Isolation,Durability) 事务。 SQLite Download Page: https://www.sqlite.org/download.html 第一步:在 php.ini 中开启 extensionsqlite3 第二步:连接数…

Redis的String类型为什么重新设计使用了SDS数据结构呢

Redis 选择重新设计其 String 类型的底层数据结构,采用 SDS(Simple Dynamic String)而不是直接使用 C 语言标准库提供的原生字符串(char*)的原因主要包括以下几点: O(1) 时间复杂度获取长度: 在…

机器学习金融应用技术指南

1 范围 本文件提供了金融业开展机器学习应用涉及的体系框架、计算资源、数据资源、机器学习引擎、机 器学习服务、安全管理、内控管理等方面的建议。 本文件适用于开展机器学习金融应用的金融机构、技术服务商、第三方安全评估机构等。 2 规范性引用文件 下列文件中的内容通过…

C#,图论与图算法,用于检查给定图是否为欧拉图(Eulerian Graph)的算法与源程序

1 欧拉图 欧拉图是指通过图(无向图或有向图)中所有边且每边仅通过一次通路, 相应的回路称为欧拉回路。具有欧拉回路的图称为欧拉图(Euler Graph), 具有欧拉通路而无欧拉回路的图称为半欧拉图。 对欧拉图的一个现代扩展是蜘蛛图,它向欧拉图增加了可以连接的存在点。 这给…

目标检测预测框可视化python代码实现--OpenCV

import numpy as np import cv2 import colorsys from PIL import Image, ImageDraw, ImageFontdef puttext_cn(img, text, pt, color(255,0,0), size16):if (isinstance(img, np.ndarray)): # 判断是否OpenCV图片类型img Image.fromarray(cv2.cvtColor(img, cv2.COLOR_BGR2…

【HarmonyOS】ArkUI - 状态管理

在声明式 UI 中,是以状态驱动视图更新,如图1所示: 图1 其中核心的概念就是状态(State)和视图(View): 状态(State):指驱动视图更新的数据&#xf…

BI技巧丨个性化视觉对象

BOSS:那个,那个谁,最近用户反映了,说是你们做的报表不太行啊?! 白茶:(???)老板,怎么说? BOSS:就是…

pytest之统一接口请求封装

pytest之统一接口请求封装 pytest的requests_util.pyrequests_util.py 接口自动化测试框架的封装yaml文件如何实现接口关联封装yaml文件如何实现动态参数的处理yaml文件如何实现文件上传有参数化时候,怎么实现断言yaml的数据量大怎么处理接口自动化框架的扩展&#…

CSK6 接入聆思平台(LSPlatform)

一、开发环境 硬件:视觉语音大模型AI开发套件 二、使用大语言模型 官方指导文档: 开始使用 | 聆思文档中心 获取API密钥 | 聆思文档中心 1、注册 提交申请之后需要将注册电话号码通过微信发送给聆思科技工作人员,工作人员授权后&#xff…

阿里云4核16G服务器价格26.52元1个月、149.00元半年,ECS经济型e实例

阿里云4核16G服务器优惠价格26.52元1个月、79.56元3个月、149.00元半年,配置为阿里云服务器ECS经济型e实例ecs.e-c1m4.xlarge,4核16G、按固定带宽 10Mbs、100GB ESSD Entry系统盘,活动链接 aliyunfuwuqi.com/go/aliyun 活动链接打开如下图&a…

Docker搭建LNMP环境实战(02):Win10下安装VMware

实战开始,先安装 VMware 虚拟机。话不多说,上手就干! 1、基本环境检查 1.1、本机Bios是否支持虚拟化 进入:任务管理器- 性能,查看“虚拟化”是否启用,如果已启用,则满足要求,如果未…

Linux 中的vim和gdb

目录 vim命令模式(常用)nyy-----复制n次np------黏贴n次u------撤销dd-----剪切/删除$-----将光标定位到当前行结尾^-----将光标定位到最开始。gg------将光标定位文本开始shiftg-----将光标定位文件尾。nshiftg----将光标定位到第n行上下左右键:h j k l (左下上右)…

故障诊断 | 一文解决,CNN-BiLSTM卷积神经网络-双向长短期记忆神经网络组合模型的故障诊断(Matlab)

效果一览 文章概述 故障诊断 | 一文解决,CNN-BiLSTM卷积神经网络-双向长短期记忆神经网络组合模型的故障诊断(Matlab) 模型描述 CNN-BiLSTM卷积神经网络-双向长短期记忆神经网络组合模型是一种深度学习模型,结合了卷积神经网络(CNN)和双向长短期记忆网络(BiLSTM)的优点…

【Linux】详谈命令行参数环境变量

目录 一、浅谈命令行参数 二、环境变量 2.1环境变量的内涵以及理解 2.2PATH环境变量: 2.3输入程序名就能运行我们的程序 2.4系统中的环境变量 2.5导出环境变量 三、main函数的第三个参数 3.1获得环境变量的三种方法 四、本地变量 一、浅谈命令行参数 我们的m…

ubuntu arm qt 读取execl xls表格数据

一,ubuntu linux pc编译读取xls的库 1,安装libxls(读取xls文件 电脑版) 确保你已经安装了基本的编译工具,如gcc和make。如果没有安装,可以使用以下命令安装: sudo apt-update sudo apt-get install build-essentia…

C++ vector容器类型

vector类为内置数组提供了一种替代表示&#xff0c;与string类一样 vector 类是随标准 C引入的标准库的一部分 &#xff0c;为了使用vector 我们必须包含相关的头文件 &#xff1a; #include <vector> 使用vector有两种不同的形式&#xff0c;即所谓的数组习惯和 STL习…

基于python+vue超市货品信息管理系统flask-django-php-nodejs

在此基础上&#xff0c;结合现有超市货品信息管理体系的特点&#xff0c;运用新技术&#xff0c;构建了以 python为基础的超市货品信息管理信息化管理体系。首先&#xff0c;以需求为依据&#xff0c;根据需求分析结果进行了系统的设计&#xff0c;并将其划分为管理员和用户二种…

android.os.TransactionTooLargeException解决方案,Kotlin

android.os.TransactionTooLargeException解决方案&#xff0c;Kotlin 首先&#xff0c;特意制造一个让Android发生TransactionTooLargeException的场景&#xff0c;一个Activity启动另外一个Activity&#xff0c;在Intent的Bundle里面塞入一个大的ArrayList: import android.…