python学习应用笔记(一)

本文介绍使用Python和NumPy解决操作系统中多个进程资源分配问题的方法。通过深度优先搜索算法找到安全路径,确保系统处于安全状态。文章展示了具体的Python代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

       之前一直用c++写程序  所以考虑程序一般都比较容易往数据结构的方向想 而自己设计数据结构往往要费很大事  昨天看了一下python  发现脚本语言 真是厉害    用来进行模拟运算确实不错  可以先想个解决问题的思路 用python 先测试一下  如果可行 如果为了运行效率 使用c++改写  确实是一个不错的选择

      昨天在看操作系统的时候看到这么一个题目  


这个题目是操纵系统中典型的为多个进程分配资源 最后达到安全状态的题目,可以理解为找一条安全路径

如果使用c++来写 那就用深度优先搜索算法  然后就要慢慢思考解决办法了 , 为了练习刚刚学习的python 我使用python的 numpy来解决这个问题

因为还没有学怎么写函数  所以写成四个循环了 不过算法复杂度应该差不多, 准备再学一段时间后 优化一下


import numpy
a=numpy.array(([1,1,2,4],
   [0,1,2,2],
   [1,1,1,0],
   [1,1,1,1]))
b=numpy.array(([1,2,3,6],
   [1,1,2,2],
   [1,2,1,1],
   [1,1,2,3]))
c=numpy.array([0,1,0,1])

d=b-a


for i in range(0,4):
	j = 0
	for j in range(0,4):
		if d[i][j]>c[j]:
			break
#	print 'e'
#	if j==3 and d[i][j]<=c[j]:
	else:
		e=numpy.array([0,0,0,0])
		f=c
		e[i]=1
		f=f+d[i]
		d[i]=numpy.array((0,0,0,0))
		
		for k in range(0,4):
			if e[k]==1:
				continue
			n = 0
			for n in range(0,4):
				if d[k][n]>f[j]:
					break;
#			if n==3 and  d[k][n]<=f[j]:
			else:
				
				
				e[k]=1
				f=f+d[k]
				d[k]=numpy.array((0,0,0,0))
				for m in range(0,4):
					if e[m]==1:continue
					p = 0
					for p in range(0,4):
						if d[m][p]>f[p]:break
#					print p
#					print m
#					if p==3 and d[m][p]<=f[p]:
					else:
						
						
						e[m]=1
						f=f+d[m]
						d[m]=numpy.array((0,0,0,0))
						for q in range(0,4):
							if e[q]==1:continue
							r = 0
							for r in range(0,4):
								if d[q][r]>f[r]:break
#							if r==3 and  d[q][r]<=f[r]:
							else:
								print i+1
								print k+1
								print m+1
								print q+1
#								print 'heihei'
								exit()
								
						d[m]=b[m]-a[m]
						e[m]=0
				d[k]=b[k]-a[k]
				e[k]=0
		d[i]=b[i]-a[i]
		e[i]=0


							



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值