• 第8章:动态规划——《算法笔记


    多阶段决策过程最优

    问题由交叠的子问题构成

    子问题:一次求解,永久保存

    函数幂等

    动态规划不但可以作为特殊的空间换时间权衡技术,

    也可以经改进避免使用额外的空间

    经典自底向上:需要求解所有子问题

    试图避免不必要的子问题求解:递归

    共同点:递推式

    最优化法则:问题最优——子问题最优

    反例:最长简单路径

    例子:

    一排硬币,选不相邻,总金额最大

    前 i 枚最大+是否选i+1

    问题描述

    无限硬币,最少数目找零

    总金额为n的最少的硬币数=某个面值d+总金额为(n-d)的最少的硬币数

    左上角到右下角爬格子收集硬币

    当前位置=max(左一格,上一格)

    背包

    n个物品,重量wi,价值vi,总承重W,最大化价值

    是否包含物品i

    记忆化功能:

    自顶向下求解,记录已求解子问题

    问题分解(递归思想)

    问题构造(迭代思想)

    问题分解为子问题的第一步:分解出最小可执行子问题

    或分解为两个子问题

    最优二叉查找树

    满足左<父<右

    元素查找概率已知  

     最优=左子树最优+右子树最优+父节点

    C(i,j)=min(C(i,k-1)+C(i,k+1))+all(p(i-j))

    Warshall:有向图传递闭包

    Flody:全部最短路径

    有向图传递闭包:两点是否存在路径

    深搜广搜得到:路径重复

    n阶布尔矩阵

    R0——Rn

    自身可达——最大长度路径n-1!

    不是矩阵乘法

    完全最短路径

    最短路径:距离矩阵

    不包含负回路,包含?

    矩阵中任意元素可由直接前驱计算得到

    斐波那契

    问题转换为斐波那契形式:内存优化

    矩阵k:中间节点编号不大于k

    适当初始化完成减枝?

    习题:

    1.

    单元格路径:存在不可达点

    木条切割:不同长度价格不同

    堆分配可以借鉴么

    象棋车

    对角到对角

    最短路径数目

    排列组合/动态规划

    计算二项式系数

    有向无环图最长路径

    决定了有前驱依赖任务的最少?时间

    币值问题转化

    矩阵内寻找最大0子方阵

    AB比赛,直到一方n场胜利

    A单场胜概率

    AB已胜场次

    获胜概率

    背包:

    自顶向下,自底向上

    表每行每列

    行间列间关系

    数量不限

    表格:不被求解的问题

    直接可用的表格

    最长公共子列

    最优串?

    多边形三角划分

    3.

    线性时间构造最优二叉树

    常量时间

    求和公式

    构造最优二叉树的动态规划

    查找概率的分布

    等查找概率

    构造不同的二叉查找树

    数目

    推广到搜索不成功

    记忆功能求解最优二叉树

    4.

    传递闭包

    不使用额外存储空间

    改写循环,优化部分输入情况

    矩阵:行列表

    位串列表(位或操作)

    有向图无向图

    权重为负

    .4.8

    加强Floyd:同时求出最短路径

  • 相关阅读:
    高并发场景之RabbitMQ
    后台任务利器之Hangfire
    【Spring】Redis的两个典型应用场景--good
    【Spring】如何在单个Boot应用中配置多数据库?
    Spring Boot中集成Spring Security 专题
    RestTemplateIntegrationTests
    Spring REST实践之客户端和测试
    Android 高仿豌豆荚 一键安装app 功能
    使用Android studio下载github上的工程及问题解决
    Windows下AndroidStudio 中使用Git(AndroidStudio项目于GitHub关联)
  • 原文地址:https://www.cnblogs.com/qmcj/p/9131764.html
Copyright © 2020-2023  润新知