四边形不等式优化

四边形不等式优化

应用于类似以下dp转移方程。
f i = min ⁡ 1 ≤ j ≤ i ( w i , j , f i ) f_{i}=\min_{1\le j\le i}(w_{i,j},f_{i}) fi=1jimin(wi,j,fi)
假设 w i , j w_{i,j} wi,j 可以在 O ( 1 ) O(1) O(1) 的时间内进行计算。

在正常情况下,此状态转移方程的时间复杂度是 O ( n 2 ) O(n^2) O(n2)

对于问题 i i i,我们需要考虑所有的有关决策 j j j,但是当其满足决策单调性时,就可以缩小决策空间,减少时间复杂度。

四边形不等式:

约定:

对于类似 a ≤ b ≤ c ≤ d a\le b\le c\le d abcd 都成立,若二元函数 w i , j w_{i,j} wi,j 满足以下条件
w a , c + w b , d ≤ w a , d + w b , c w_{a,c}+w_{b,d}\le w_{a,d}+w_{b,c} wa,c+wb,dwa,d+wb,c
则称 w i , j w_{i,j} wi,j 满足四边形不等式

特别的,若等号永远成立,则称 w i , j w_{i,j} wi,j四边形恒等式

重点:因为四边形不等式是用来优化时间复杂度的,所以四边形不等式给出了一个决策单调性的充分不必要条件

利用决策单调性,可以使用二分查找,使其查询时间复杂度降低为 O ( N log ⁡ N ) O(N \log N) O(NlogN)

区间包含单调性

w b , c ≤ w a , d w_{b,c}\le w_{a,d} wb,cwa,d,则称 w w w​ 满足区间包含单调性

  • 既包含,又满足决策单调性。

  • 满足四边形不等式的形象化图片。

方程:
$$
w_{l,r+1}-w_{l,r}=a_{r+1}-a_{\lfloor\frac{l+r+1}{2}\rfloor}
\
w_{l+1,r+1}-w_{l+1,r}=a_{r+1}-a_{\lfloor\frac{l+r+2}{2}\rfloor}
\

$$

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024.06.22【读书笔记】丨生物信息学与功能基因组学(第十七章 人类基因组 第二部分)【AI测试版】

第二部分:人类基因组的主要结论与网络资源 摘要: 第二部分深入总结了人类基因组计划的关键发现,并介绍了用于探索人类基因组的网络资源。这些结论不仅为我们理解人类生物学提供了新的视角,而且揭示了人类基因组的复杂性和动态性。 学习目标: 掌握人类基因组计划的主要科…

Python神经影像数据的处理和分析库之nipy使用详解

概要 神经影像学(Neuroimaging)是神经科学中一个重要的分支,主要研究通过影像技术获取和分析大脑结构和功能的信息。nipy(Neuroimaging in Python)是一个强大的 Python 库,专门用于神经影像数据的处理和分析。nipy 提供了一系列工具和方法,帮助研究人员高效地处理神经影…

【C++实验】多项式加减

题目:一元多项式运算 基本要求: (1) 输入并建立多项式; (2) 输出多项式; (3) 多项式加法 (4) 多项式减法。 测试数据: 代码展示: #i…

[论文阅读笔记31] Object-Centric Multiple Object Tracking (ICCV2023)

最近Object centric learning比较火, 其借助了心理学的概念, 旨在将注意力集中在图像或视频中的独立对象(objects)上,而不是整个图像。这个方法与传统的基于像素或区域的方法有所不同,它试图通过识别和分离图像中的各个对象来进行…

Scikit-learn (sklearn) 基础教程

Scikit-learn (sklearn) 基础教程 Scikit-learn (sklearn) 是 Python 中一个强大的机器学习库,提供各种算法和工具,方便用户进行数据挖掘和机器学习任务。本教程将介绍 sklearn 的基本使用,包括数据预处理、模型训练、评估和可视化。 安装 复制pip install scikit-learn数据…

git常见功能代码介绍

克隆仓库&#xff1a; git clone <repository_url>添加文件到暂存区&#xff1a; git add <file_name>提交到本地仓库&#xff1a; git commit -m "Commit message"推送到远程仓库&#xff1a; git push origin <branch_name>拉取远程仓库更新&…

代码随想录——全排列Ⅱ(Leetcode 47)

题目链接 回溯 class Solution {List<List<Integer>> res new ArrayList<List<Integer>>();List<Integer> list new ArrayList<Integer>();boolean[] used;public List<List<Integer>> permuteUnique(int[] nums) {used …

JAVA学习-练习试用Java实现“最大矩形”

问题&#xff1a; 给定一个仅包含 0 和 1 、大小为 rows x cols 的二维二进制矩阵&#xff0c;找出只包含 1 的最大矩形&#xff0c;并返回其面积。 示例 1&#xff1a; 输入&#xff1a;matrix [["1","0","1","0","0"]…

IPD笔记

IPD笔记 先弄一个一图流&#xff0c;改天再过来继续补充 IPD&#xff08;Integrated Product Development&#xff09;即集成产品开发&#xff0c;是一套产品开发的模式、理念与方法。华为的IPD的核心思想是基于市场需求&#xff0c;将产品开发作为一项投资来管理&#xff0c;以…

注解详解系列 - @Scope:定义Bean的作用范围

注解简介 在今天的注解详解系列中&#xff0c;我们将探讨Scope注解。Scope是Spring框架中的一个重要注解&#xff0c;用于定义bean的作用范围。通过Scope注解&#xff0c;可以控制Spring容器中bean的生命周期和实例化方式。 注解定义 Scope注解用于定义Spring bean的作用范围…

python pynput实现鼠标点击两坐标生成截图

脚本主要实现以下功能&#xff1a; 按ctrl开始截图&#xff0c;点击两个坐标&#xff0c;保存截图tk输出截图文本信息&#xff0c;文本输出内容倒序处理默认命名为A0自增。支持自定义名称&#xff0c;自增编号&#xff0c;修改自定义名称自增重新计算清空文本框内容 from pyn…

Spring Boot与Istio服务网格的整合实践

引言 随着微服务架构的普及&#xff0c;服务间的通信和管理变得越来越复杂。Istio作为服务网格的代表&#xff0c;提供了一种管理这种复杂性的方式。结合Spring Boot&#xff0c;我们可以构建一个既强大又易于管理的服务架构。本文将详细介绍如何将Spring Boot应用与Istio服务…

three.js 第十一节 - uv坐标

// ts-nocheck // 引入three.js import * as THREE from three // 导入轨道控制器 import { OrbitControls } from three/examples/jsm/controls/OrbitControls // 导入lil.gui import { GUI } from three/examples/jsm/libs/lil-gui.module.min.js // 导入tween import * as T…

1931java Web披萨店订餐系统idea开发mysql数据库web结构java编程计算机网页源码servlet项目

一、源码特点 java Web 披萨店订餐系统是一套完善的信息管理系统&#xff0c;结合java 开发技术和bootstrap完成本系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用 B/S模式开发。 视频地址&#xff1a;…

Android CTS环境搭建

CTS即Compatibility Test Suite意为兼容性测试&#xff0c;是Google推出的Android平台兼容性测试机制。其目的是尽早发现不兼容性&#xff0c;并确保软件在整个开发过程中保持兼容性。只有通过CTS认证的设备才能合法的安装并使用Google market等Google应用。 搭建CTS测试环境需…

深入理解Servlet Filter及其限流实践

引言 在Java Servlet技术中&#xff0c;Filter是一个拦截器&#xff0c;它允许开发者在请求到达目标资源之前或响应发送给客户端之后&#xff0c;对请求或响应进行拦截和处理。这种机制为实现诸如身份验证、日志记录、请求修改等功能提供了极大的灵活性。 Filter基础 Filter…

ARM32常见指令

### &#x1f4cc; 1. 保存和设置堆栈框架 .text:00002E88 PUSH {R11,LR} **PUSH {R11,LR}**&#xff1a;将R11&#xff08;帧指针&#xff09;和LR&#xff08;链接寄存器&#xff09;推入堆栈&#xff0c;以保存当前的帧指针和返回地址。 .text…

时间安排表:

首先&#xff0c;我们需要确定从当前时间&#xff08;2024年6月22日14:05:26&#xff09;到晚上11点的总时间。然后&#xff0c;我们将从这个总时间中减去你计划的运动时间&#xff0c;以计算出剩余的学习或计算时间。 1. **计算总时间**&#xff1a; - 当前时间&#xff1a;2…

CST初级教程 七

本教程将实例讲解CST设计优化仿真及其操作步骤。下面是一个微带功率分配器的图片&#xff1a; 一 3D建模 Substrate 建模 Step1 绘制Substrate外形 Substrate 的尺寸参数如下&#xff1a; Step2 添加新材料Substrate Step3 将新建的材料分配给Substrate 选中新建材料Substra…

数学建模系列(3/4):典型建模方法

目录 引言 1. 回归分析 1.1 线性回归 基本概念 Matlab实现 1.2 多元回归 基本概念 Matlab实现 1.3 非线性回归 基本概念 Matlab实现 2. 时间序列分析 2.1 时间序列的基本概念 2.2 移动平均 基本概念 Matlab实现 2.3 指数平滑 基本概念 Matlab实现 2.4 ARIM…