首页 > 编程语言 >银行家算法中安全检查算法正确性证明

银行家算法中安全检查算法正确性证明

时间:2023-01-16 21:56:43浏览次数:44  
标签:释放 Need 安全检查 作业 正确性 算法 forall sum

符号说明

\(<_{\forall}\) :如果两个同维行向量 \(A\)、\(B\) 中,\(A\) 中任意一个元素都小于 \(B\) 中对应位置上的元素,则 \(A <_{\forall}B\) 为真。

\(<_{\exist}\):如果两个同维行向量 \(A\)、\(B\) 中,\(A\) 中存在一个元素小于 \(B\) 中对应位置上的元素,则 \(A <_{\exist}B\) 为真。

\(=\) 、\(>\)、\(\neq\) 等同理。

\(R_0\) :系统初始资源向量

\(Need\):如果作业 \(i\) 能够被释放,则需要 \(R_0 \geq_{\forall} Need_i\)

\(A\) :作业当前占有的资源向量,作业 \(i\) 释放后,\(A_i\) 将累加到资源向量 \(R_0\) 中

证明:

​ 设安全性检查算法无法找到合法的安全序列时,已经释放的作业的集合为 \(W'\) 。此时,系统资源向量 \(R' = R_0 + \sum^{W'} A_{w_i}\)

此时无法找到安全序列,这说明,对于所有剩余未释放的作业 \(w \in W-W'\),\(Need_{w} >_{\exist} R'\)。

  • 不可能通过调整 \(W'\) 中作业释放的顺序改变 \(R'\) 的值。

因为 \(W'\) 中的作业的任何一种可能的释放顺序所释放的资源都是 \(\sum^{W'}A_{w_i}\) 。

  • 不可能改变 \(W'\) 。

设 \(W''\) 是 \(W'\) 的一个子集,那么,必有

\[\sum^{w_i \in W''} A_{w_i} \leq_{\forall} \sum^{w_i \in W'}A_{w_i} \]

因此,\(R'' \leq_\forall R'\),释放 \(W'\) 的任何一个子集都不能把 \(W - W'\) 中的作业某一作业纳入集合,因为 \(\forall w \in W - W',Need_{w} >_{\exist} R' \geq_{\forall} R''\)。

​ 因此我们证明了,对于一个给定的状态,如果系统中不存在安全序列,那么一定能被释放的作业的集合 \(W'\) 和不可能被释放的作业的集合 \(W - W'\) 是确定的,不因为算法的不同而不同。

​ 在安全检查算法中,内层循环遍历所有未释放的作业,发现没有任何一个作业可被释放,就是上述的情况,已经证明了,在这种情况下,判定系统不存在安全序列是正确的。反之不出现上述情况,则系统存在安全序列的判定也是正确的。

标签:释放,Need,安全检查,作业,正确性,算法,forall,sum
From: https://www.cnblogs.com/sarfish/p/17056385.html

相关文章

  • 算法-位运算
    思路:将原始数组和添加重复数字的数组相抑或,最后的结果就是重复的数字。#include<iostream>#include<cstdlib>#include<ctime>usingnamespacestd;intmain(......
  • SAP ABAP 一个有用的程序正确性辅助工具,Checkpoint group 的使用方法介绍
    本教程前一篇文章介绍的内容:74.学会使用SAPABAPApplicationLog在代码里添加应用日志记录功能有读者向我提问:一个ABAP程序植入了应用日志的记录功能之后,有没有......
  • 代码随想录算法训练营第六天 哈希法 | 242.有效的字母异位词 | 349. 两个数组的交集
    哈希表哈希表适用于快速判断元素是否存在于表中,针对于哈希碰撞,有拉链法和线性探测法拉链法碰撞的元素被储存在链表中,拉链法需要根据数据规模选择适当的表大小,既不造成表......
  • AI 八数码A_star算法问题-实验报告
    一题目要求:        八数码问题的A星搜索算法实现        要求:设计估价函数,并采用c或python编程实现,以八数码为例演示A星算法的搜索过程,争取做到直观、清......
  • AI A_star算法野人渡河-实验报告
    1、问题描述及实验要求       请用A*算法实现野人过河问题,(1)分析设计估价函数f(2)采用C语言或Python编程实现(代码中适当加注释,输出具有可读性)。       问题描......
  • AI K-means算法对数据进行聚类分析-实验报告
    1、问题描述及实验要求K-means算法对data中数据进行聚类分析(1)算法原理描述(2)算法结构(3)写出K-means具体功能函数(不能直接调用sklearn.cluster(Means)功能函数)具体函数功......
  • 代码随想录算法训练营第20天
    今日刷题4道 654.最大二叉树, 617.合并二叉树,700.二叉搜索树中的搜索,98.验证二叉搜索树● 654.最大二叉树题目链接/文章讲解:https://programmercarl.com/0654......
  • C语言最短路径[迪杰斯特拉算法][2023-01-16]
    C语言最短路径[迪杰斯特拉算法][2023-01-16]算法与数据结构课程设计要求一、 题目:最短路径二、课程设计报告要求1、设计目的(1)要求熟练掌握C语言的基本知识和编程技......
  • 五子棋html游戏代码与算法介绍
    五子棋html游戏代码与算法介绍运行图片目录路径五子棋.html五子棋算法进行下一个游戏的开发!注意事项我会把html文件、css文件提供下载地址,文件夹路径也展示给大家。但是图片......
  • 寒假算法学习第二周
    动态规划这个东西3步走首先给一个例子配合理解一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。1:首先确定数组含义a[N]这个东......