算法
文章平均质量分 78
字面意思
fa1c4
软件安全研究生, 不定期灌水博主(
展开
-
[分布式算法] 生成树广播与敛播
首先需要了解分布式算法的复杂度概念(1) 消息复杂度: 算法在所有容许的执行上发送msg总数的最大值(包括同步和异步系统)(2) 时间复杂度:①同步系统:最大轮数,即算法的任何容许执行直到终止的最大轮数。②异步系统:假设:①节点计算任何有限数目事件的时间为0; ②一条消息发送和接收之间的时间至多为1个时间单位,定义为:所有计时容许执行中直到终止的最大时间。(3) 空间复杂度(4) 性能衡量:最坏性能、期望性能消息的延迟发送msg的计算事件和处理该msg的计算事件之间所逝去的时间, 主要由msg原创 2022-06-23 05:30:00 · 643 阅读 · 0 评论 -
[分布式算法] 理论基础
分布式系统分类SMP (symmetric multiprocessor) 对称多处理机PVP (parallel vector processor) 并行向量机MPP (Massively parallel processor) 大型并行机COW (cluster of workstation) 工作站集群Internet 广域分布式而针对并行机(耦合/松散类型)有DSW (Distributed Shared Memory) 专用分布式共享存储分布式系统的优势可用性: 比如保证可靠性, 多个处理原创 2022-06-23 03:15:00 · 395 阅读 · 0 评论 -
[近似算法] 互补问题的近似解的关系
为什么两个互补的优化问题,一个有常数上界的性能比的近似算法时,其互补问题的近似解未必有常数上界的近似比?NPC的最优算法是彼此相关的, 但是近似算法常常彼此之间没有联系考虑两个NPC问题顶点覆盖(VC)和最大独立集(MIS)。设G(V,E)是图。VC问题:G的顶点覆盖是一顶点集C⊆V使得E中每条边至少有一端点在C中,VC问题是在图中找一个顶点数最小的覆盖。MIS问题:G的独立集是一顶点集I⊆V使得I里任何点对之间无边,MIS问题是在G中找一个最大的独立集设G是任意图,C是一顶点覆盖当且仅当I=V\C原创 2022-06-22 00:00:00 · 191 阅读 · 0 评论 -
[近似算法] 多机调度和装箱问题
Def 5 性能比设AAA是优化问题ΠΠΠ的一个近似算法,算法AAA在一个输入实例III上的性能比RA(I)R_A(I)RA(I)被定义为:RA(I)={A(I)OPT(I) if Π 是最小化问题 OPT(I)A(I) if Π 是最大化问题 R_{A}(I)=\left\{\begin{array}{l}\frac{A(I)}{O P T(I)} \text { if } \Pi \text { 是最小化问题 } \\\frac{O P T(I)}{A(I)} \text { if } \P原创 2022-06-16 11:36:37 · 899 阅读 · 0 评论 -
[近似算法] NP-hard 问题求解
若某NPH问题q有多项式时间算法,则任一NP问题皆可多项式时间归约到q,故任一NP问题也是多项式时间可解的,由此可得NP=P. 传统时间复杂度中n表示数据输入的规模,如排序中n表示被排序的数据元素个数。但这不够严谨,其标准化的定义应该是:一个问题的输入规模是保存输入数据所需要的位数(bit),在此基础上定义的时间复杂度是标准的时间复杂度。若一个算法的传统时间复杂度是多项式时间而其标准的时间复杂度不是多项式时间的,则该算法是伪多项式时间的。(例如朴素的素数判定算法), 一个具有伪多项式时间复杂度的NPC问题原创 2022-06-16 06:00:00 · 3808 阅读 · 0 评论 -
[计算理论] P NP NPC NP-hard 问题
计算理论的基本概念, P, NP, NPC, NPH问题的定义和性质的有关知识原创 2022-06-16 03:00:00 · 1101 阅读 · 0 评论 -
Miller–Rabin 素性检验算法
算法介绍Miller-Rabin素数检验或Rabin-Miller素数检验是一种概率素数检验:一种确定给定数是否可能是素数的算法,类似于费马素数检验和Solovay-Strassen素数检验。作为实践中使用比较广泛的素性检验算法的一种, Miller-Rabin算法最早在1976年由Gary L. Miller提出(当时该算法是确定性的), 并在1980年由Michael O. Rabin改进为无条件的概率算法.数学原理算法的主要思想就是检验数是否满足特定的素数条件, 这些条件在Miller-Rabi原创 2022-01-11 22:59:13 · 2567 阅读 · 0 评论 -
python利用优先队列取最大K个元素
利用priorityqueue取最大的K个元素在进行稍微大一点的数据排序时, 有时并不需要全部数据, 只需要前面的最大k个数, 如果用sorted([…])[::-1][:k]实现效率会低很多, 为了优化执行速度, 可以采用优先队列priorityqueue实现求最大的K个元素. 同时空间也可以得到明显优化import queueimport randomK = 12q = queue.PriorityQueue()tlist = []for ith in range(100):原创 2021-01-12 17:45:37 · 919 阅读 · 0 评论