量子强化学习

背景

目前的研究主要集中在变分量子算法,之前的研究提出了利用变分量子算法来增强有监督、无监督和强化学习(RL)算法的建议。在这项工作中,我们采用一种基于深度q -学习算法的**参数化量子电路(PQC)**训练方法,该方法可用于解决离散和连续状态空间的RL任务。实验结果表明体系结构选择和超参数比模型中使用的参数数量对智能体的成功贡献更大。

经典强化学习

Q-learning关注的不是状态值函数,而是对密切相关的动作值函数Q(s, a)。

然后通过充分探索状态和动作空间。这为智能体提供了足够的信息来区分给定特定状态下的好行为和坏行为。来学习Q函数学习方法

image-20240310235007951

Read more

强化学习

强化学习(reinforcement learning,RL)讨论的问题是智能体(agent)怎么在复杂、不确定的环境(environment)里面去最大化它能获得的奖励。

强化学习概念

智能体

做出动作,并影响于环境

环境

返回作用后的状态,和上一步的奖励

奖励

是由环境给可显示智能体在某一步采取某个策略的表现如何?

Read more

单调栈

什么时候用单调栈呢?

通常是一维数组,要寻找任一个元素的右边或者左边第一个比自己大或者小的元素的位置,此时我们就要想到可以用单调栈了。时间复杂度为O(n)。

那么单调栈的原理是什么呢?为什么时间复杂度是O(n)就可以找到每一个元素的右边第一个比它大的元素位置呢?

单调栈的本质是空间换时间,因为在遍历的过程中需要用一个栈来记录右边第一个比当前元素高的元素,优点是整个数组只需要遍历一次。

更直白来说,就是用一个栈来记录我们遍历过的元素,因为我们遍历数组的时候,我们不知道之前都遍历了哪些元素,以至于遍历一个元素找不到是不是之前遍历过一个更小的,所以我们需要用一个容器(这里用单调栈)来记录我们遍历过的元素。

Read more

动态规划6

583. 两个字符串的删除操作

力扣题目链接

相比之前现在两个字符串都可以删除,

  1. 确定dp数组(dp table)以及下标的含义

dp[i][j]:以i-1为结尾的字符串word1,和以j-1位结尾的字符串word2,想要达到相等,所需要删除元素的最少次数

这里和原来的匹配长度的dp定义不同,

Read more

动态规划5

300.最长递增子序列

力扣题目链接

本题要先有一个逻辑,就是我们怎么确定一个状态转移,如果我dp要取这个数那么之前的状态怎么找,所以很明显需要两轮遍历,

Read more

动态规划3

完全背包

有N件物品和一个最多能背重量为W的背包。第i件物品的重量是weight[i],得到的价值是value[i] 。每件物品都有无限个(也就是可以放入背包多次),求解将哪些物品装入背包里物品价值总和最大。

完全背包和01背包问题唯一不同的地方就是,每种物品有无限件

代码上两者最大的不同就是遍历顺序

Read more

动态规划2

背包问题

01 背包

有n件物品和一个最多能背重量为w 的背包。第i件物品的重量是weight[i],得到的价值是value[i] 。每件物品只能用一次,求解将哪些物品装入背包里物品价值总和最大。

举一个例子:

背包最大重量为4。

物品为:

重量 价值
物品0 1 15
物品1 3 20
物品2 4 30

问背包能背的物品最大价值是多少?

Read more

动态规划1

所以动态规划中每一个状态一定是由上一个状态推导出来的,这一点就区分于贪心,贪心没有状态推导,而是从局部直接选最优的,

动态规划中dp[j]是由dp[j-weight[i]]推导出来的,然后取max(dp[j], dp[j - weight[i]] + value[i])。

但如果是贪心呢,每次拿物品选一个最大的或者最小的就完事了,和上一个状态没有关系。

动态规划的解题步骤

  1. 确定dp数组(dp table)以及下标的含义
  2. 确定递推公式
  3. dp数组如何初始化
  4. 确定遍历顺序
  5. 举例推导dp数组
Read more