首页 > 编程语言 >随机算法

随机算法

时间:2023-01-30 13:14:37浏览次数:53  
标签:个数 每次 随机化 算法 随机 端点 扰动

模拟退火

听说是模拟了物理中的降温过程来寻找全局最优解的过程?

众所周知物理中的降温过程是\(T=T_{ed}+a^t\),所以我们仿照这个过程定义温度\(T\),降温系数\(a\)。

每次我们有一个当前的解\(A\),历史最优解\(B\)。假设我们求最小值。我们做这样的事情:

扰动\(A\),扰动幅度相关于\(T\)(一般正比),设扰动结果为\(C\),并更新\(B\)。

计算当前答案与扰动前答案的差值,记为\(\Delta\)。

如果\(\Delta<0\),则接受这个解,否则计算\(e^{\frac{\Delta}{T}}\),并随机某个\((0,1)\)范围内的实数,如果大于则接受这个解。

\(t\)加一。

可以发现,在这个过程中,刚开始的时候先跳比较快找到一个比较高的范围,然后再精细下去找最值。这个东西在连续一元函数上显然更具有优势。

RabbitWorking

首先枚举选的个数,然后退火的时候每次选一个换掉。

枚举个数的具体原因大概就是如果不定个数除的那个数会影响退火的单调性。

DIY Tree

每次选择一条边,然后尝试换成另一条边。退多次。

随机估算

也就是通俗地说:用频率估算概率。

定理:设初始方差是\(D\),随机\(T\)次期望方差是\(\frac{D}{T}\)。

看上去很对,所以不用证了(

定理:若当前标准差为\(D\),则与答案误差超过\(nD\)的概率是\(\frac{1}{n^2}\)。

展开式子即可。

匹配难题

随机每条边出现次数,跑匈牙利算匹配个数。

最后的点大概能跑\(10^4\)次,标准差大概\(10^{-2}\),多交几遍就能过(雾

随机化贪心/调整

感受那股劲!

主要就是先把比较难满足的限制满足了,然后让随机化来干那些比较松,又不好算的限制。

线段

先随一个初始局面,然后扫,找到一条矛盾的边。

随便选一个端点换颜色,考虑这个端点周围的点的颜色,注意到有\(8\)的度和\(3\)种颜色,因此可以根据每个点出现次数设幂函数随,幂函数的底数应该小一点更好。

实测扫\(O(\log n)\)次就能过。

挑战哈密顿

把曼哈顿链考虑成一堆边,满足无环,出入度都不超过\(1\)。

无环不太能考虑,于是限定一直不能有环。每次随一条边,如果可以加入就加入,否则如果只有一个端点不满足,则以某个概率替换。

还有为啥我要跑两个小时/dk

标签:个数,每次,随机化,算法,随机,端点,扰动
From: https://www.cnblogs.com/275307894a/p/17075147.html

相关文章

  • 根据地图point生成随机坐标
    在此记录一下,不是本人开发github地址:https://github.com/zxbit2011/RandomLngLat......
  • 使用遗传算法+神经网络解决贪食蛇游戏
    在网上无意看到的一个项目,感觉还是蛮有意思的:​​https://github.com/greerviau/SnakeAI​​    ==========================================  代码不知道是用什么语......
  • 怎么高效学习数据结构和算法?
    5个步骤:基础语法学习—>语法配套练习—>数据结构—>算法入门—>算法进阶一、数据结构官方解释:​​数据结构​​是一门研究非数值计算的程序设计问题中的额操作对象,以及他们......
  • 【算法与数据结构】Trie树简介及应用
    作者:京东物流马瑞1什么是Trie树1.1Trie树的概念Trie树,即字典树,又称单词查找树或键树,是一种树形结构,典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常......
  • Exgcd(扩展欧几里得算法)
    其实挺简单。GCD(辗转相除法)定理:\[\gcd(a,b)=\gcd(b,a\%b)\]证明:\[\text{设}a=kb+r\text{,则}r=a\bmodb\]\[\text{若}c\text{是}a,b\te......
  • 分布式协议与算法-Raft算法
    本文总结自:极客时间韩健老师的分布式协议与算法实战课程。大家都知道,Raft算法属于Multi-Paxos算法,它是在Multi-Paxos思想的基础上,做了一些简化和限制。关于Paxos算法,博主......
  • 《深入理解Java虚拟机》第三章读书笔记(一)——垃圾回收算法
    参考书籍《深入理解java虚拟机》周志明著系列文章目录和关于我本文主要介绍垃圾回收理论知识1.jvm哪些区域需要进行垃圾回收虚拟机栈,本地方法栈,程序计数器都是线......
  • 算法刷题 Day 27 | ● 39. 组合总和 ● 40.组合总和II ● 131.分割回文串
    今日任务组合总和组合总和II分割回文串详细布置39.组合总和本题是集合里元素可以用无数次,那么和组合问题的差别其实仅在于startIndex上的控制题目链接/......
  • 字符串1 最基础的字符串算法
    Trie很简单的东西,这里就不阐述了。constintN=400005+111;structTrie{intnxt[N][27],cnt;intvis[N];voidinit(){memset(nxt,0,siz......
  • C语言算法与数据结构[2023-01-29]
    C语言算法与数据结构[2023-01-29]算法与数据结构大作业(2022—2023学年第1学期)学院电子信息工程学院专业班级电信20-2班学号202005010209......