- 博客(39)
- 收藏
- 关注
原创 本地环境OPC数据读写模拟[Python3+OpenOPC+MatrikonOPCSimulation]
win10环境,通过python3、openopc与本地Matrikon opc模拟服务器交互
2022-11-18 13:14:41
2284
1
原创 基于Python的程序自启动,无响应时重启的一个实现
程序需长期正常运行,但期间可能会因为某些无法定位的问题崩溃、无响应,为使其尽快从非正常状态下恢复,给出一个基于python的解决方案首先是造一个无响应的程序,为方便起见通过tkinter实现,并用pyinstaller进行打包,代码部分如下:import timefrom tkinter import Button, X, mainloopButton(text = 'Sleep', command = lambda: time.sleep(3600)).pack(fill = X)ma
2022-03-28 17:04:05
1768
原创 nil与nan
看到Go数据结构指针这里,其中有一段是这样:“指针类型的零值是nil。测试p! = nil,结果是true说明p指向一个变量。指针是可比较的,两个指针当且仅当指向同一个变量或者两者都是nil的情况下才相等。”结合python里的nan(not a number,一般用于缺失值)作个比较,首先是Go:package mainimport "fmt"func main() { var a, b *int // a, b为整数指针
2022-03-17 22:39:25
854
1
原创 算法导论 13.3 RB-INSERT-FIXUP(T, z)算法中的缩进问题
感觉好像是少了一个换行符。。。修正后是这样:RB-INSERT-FIXUP(T, z)1 while z.p.color == RED2 if z.p == z.p.p.left3 y = z.p.p.right4 if y.color == RED5 z.p.color = BLACK // case 16 y.color = BLACK
2022-02-13 10:48:31
371
2
原创 Windows平台下基于Python的邮件发送实现(以QQ邮箱为例)
先作三点说明:1、需要开启POP\SMTP相关服务,下图为QQ邮箱示例(设置-账户-POP/IMAP/SMTP...服务),服务开启后会给一个码,即为smtp登录密码2、感觉可以用在程序跑完后进行邮件提醒3、实现过程中参考了《Python编程第四版》(翻译的不行)、网站相关技术文章代码部分:from email.mime.multipart import MIMEMultipartfrom email.mime.text import MIMETextimport smtpli
2022-01-26 09:51:52
500
原创 算法导论 练习12.4-5
考虑RANDOMIZED-QUICKSORT操作在n个互不相同的输入数据的序列上。证明:对于任何常数k>0,n!种输入排列除了其中种之外,运行时间都为。Consider RANDOMIZED-QUICKSORT operating on a sequence of n distinct input numbers. Prove that for any constant k > 0, all butof the n! input permutations yield anrunnin...
2022-01-13 11:16:05
178
原创 算法导论 练习12.3-5
假设为每个结点换一种设计,属性x.p指向x的双亲,属性x.succ指向x的后继。试给出使用这种表示法的二叉搜索树T上SEARCH、INSERT和DELETE操作的伪代码。这些伪代码应在O(h)时间内执行完,其中h为树T的高度。(提示:应该设计一个返回某个结点的双亲的子过程。)日常吐槽算法导论中文版的翻译,先看一下英文原题是怎么写的:Suppose that instead of each node x keeping the attribute x.p, pointing to x's parent
2021-12-23 09:34:41
502
原创 算法导论 练习12.1-3(中序遍历)
设计一个执行中序遍历的非递归算法。(提示:一种容易的方法是使用栈作为辅助数据结构;另一种较复杂但比较简洁的做法是不使用栈,但要假设能测试两个指针是否相等)其实可以关联到练习10.4-5先写第一种以栈作为辅助数据结构的方法(练习10.4-5中只能用固定量额外存储空间,舍弃了这种方法)INORDER-TREE-WALK(x) PUSH(S, NIL) // 先向辅助栈S中存入NIL作为循环终止符 while true while x.left !
2021-12-20 16:19:17
398
原创 算法导论 思考题 11-2
(链接法中槽大小的界)假设有一个含n个槽的散列表,向表中插入n个关键字,并用链接法来解决冲突问题。每个关键字被等可能地散列到每个槽中。所有关键字被插入后,设M是各槽中所含关键字数的最大值。读者的任务是证明M的期望值E[M]的一个上界为O(lgn/lglgn)。a. 证明:正好有k个关键字被散列到某一特定槽中的概率为b. 设为M = k的概率,即包含最多关键字的槽中有k个关键字的概率。证明:。c. 应用斯特林近似公式(3.18)来证明:。d. 证明:存在常数c>1,使得...
2021-12-17 13:10:23
769
原创 算法导论 练习11.5-1
假设采用了开放寻址法和均匀散列技术将n个关键字插入到一个大小为m的散列表中。设p(n,m)为没有冲突发生的概率。试证明:。(提示:见式(3.12)。)论证当n超过时,不发生冲突的概率快速趋近于0。对于所有实数x,我们有不等式 (3.12)稍作变形,对x大于-1时在两边以e为底取对数有不难推算将n个关键字插入到一个大小为m的散列表中,不发生冲突的概率为:对其取以e为底的对数有:结合上述式(3.12)变形,有:即因此然而不发生冲突的概率快速趋近于0...
2021-12-15 15:52:07
1354
原创 算法导论 练习11.4-5
考虑一个装载因子为α的开放寻址散列表。找出一个非零的α值,使得一次不成功查找的探查期望数是一次成功查找的探查期望数的2倍。这两个探查期望可以使用定理11.6和定理11.8中给定的上界。首先是参考了CLRS答案里Lambert W函数的解法,主要是补充一下细节部分依题意对进行求解首先进行替换,即,原方程化简得到:两边同时乘,再除以,得到:,即:此时已经满足Lambert W函数的求解形式了(),因此:,于是这里可以看出有一个解是 x = 0,但需要的不是这个而是借...
2021-12-10 14:42:16
120
原创 算法导论 练习11.4-4
假设采用双重散列来解决冲突,即所用的散列函数为。试证明:如果对某个关键字k,m和有最大公约数,则在对关键字k的一次不成功查找中,要返回槽 之前,要检查散列表中第(1/d)1/d的元素。于是,当d=1时,m与互素,查找操作可能要检查整个散列表。(提示:见第31章)英文版:Suppose that we use double hashing to resolve collisions - that is, we use the hash function.Show that if m ...
2021-12-09 14:17:01
527
2
原创 算法导论 练习10.4-5
给定一个n结点的二叉树,写出一个O(n)时间的非递归过程,将该树每个结点的关键字输出。要求除该树本身的存储空间外只能使用固定量的额外存储空间,且在过程中不得修改该树,即使是暂时的修改也不允许。先结合上图说下具体的策略 对二叉树进行遍历(图中红色箭头所指方向),在遍历过程中存储两个点,分别是当前遍历的点记为now,以及上一步遍历的点记为last,将now和last均初始化为T.root,同时初始化root_num = 0,该变量表示遍历结点到达根结点的次数。根据now和las...
2021-11-18 10:28:16
414
1
原创 算法导论 练习10.3-5
设L是一个长度为n的双向链表,存储于长度为m的数组key、prev和next中。假设这些数组由维护双链自由表F的两个过程ALLOCATE-OBJECT和FREE-OBJECT进行管理。又假设m个元素中,恰有n个元素在链表L上,m-n个在自由表上。给定链表L和自由表F,试写出一个过程COMPACTIFY-LIST(L, F),用来移动L中的元素使其占用数组的1,2,...,n的位置,调整自由表F以保持其正确性,并且占用数组中n+1,n+2,...,m的位置。要求所写的过程运行时间应为,且只使用固定量的额外储存
2021-11-13 19:21:34
477
原创 算法导论 练习10.2-8
说明如何在每个元素仅使用一个指针 x.np(而不是通常的两个指针 next 和 prev)的情况下实现双向链表。假设所有指针的值都可视为k位的整型数,且定义 x.np = x.next XOR x.prev,即 x.next 和 x.prev 的k位异或。(NIL的值用0表示。)注意要说明获取表头所需的信息,并说明如何在该表上实现SEARCH、INSERT和DELETE操作,以及如何在O(1)时间内实现该表的逆转。主要是在原答案的基础上加了些注释。。。基于A = C XOR (A XOR C)
2021-11-10 11:36:47
606
原创 算法导论 练习9.3-4
对于一个包含n个元素的集合,假设一个算法只使用比较来确定第i小的元素,证明:无需额外的比较操作,它也能找到第i-1小的元素和第n-i大的元素。证明:百思不得其解,充其量也就只能分别找到比它小和比它大的元素集,看之前那份答案写的也是对不上,只是把较小的i-1个元素和较大的n-i个元素找到了,然后我去看了英文版。。。还能说什么最后贴下英文版的github链接Introduction to Algorithms...
2021-10-28 10:27:16
388
原创 算法导论 练习9.2-1
证明:在RANDOMIZED-SELECT中,对长度为0的数组,不会进行递归调用。写这题主要是看和答案(有明显缺陷)不太一样,加上想推荐一个在线作流程图的网站在线流程图制作昨天用WPS画流程图,画到一半说图形到上限了,让充会员,不然不让画。血压一下就起来了,找到了之前下个资源,下完了让付款买解压码的感觉,然后就找到了上面那个网站,感觉还比较好用,下面的图也是用它作的。...
2021-10-22 10:48:50
229
2
原创 leetcode 552. 学生出勤记录 II
可以用字符串表示一个学生的出勤记录,其中的每个字符用来标记当天的出勤情况(缺勤、迟到、到场)。记录中只含下面三种字符:"A": Absent,缺勤"L": Late,迟到"P": Present,到场如果学生能够同时满足下面两个条件,则可以获得出勤奖励:1、按总出勤计,学生缺勤("A")严格少于两天。 2、学生不会存在连续3天或连续3天以上的迟到("L")记录。给你一个整数n,表示出勤记录的长度(次数)...
2021-08-18 22:11:17
179
1
原创 算法导论 练习7.4-4
证明:RANDOMIZED-QUICKSORT期望运行时间是这题其实挺容易看出来的,但看之前找的那份答案证的实在太糙,实在看不下去了,于是自己再证一遍借用书中(7.4),有:
2021-08-08 21:22:09
221
原创 算法导论 附录B 思考题 B-2
(友谊图)将下列描述改写成关于无向图的定理,并给出证明。假定友谊是对称的,但不是自反的。a. 任何至少含两人的组中,至少有两人在组内有相同数目的朋友。b. 任何6人的组要么至少有三个人互为朋友,要么至少有三个人互不认识。c. 每个组中的人均能分成两个子组,其中每个属于某个子组的至少有一半的朋友在另外一个子组。d. 如果一个组中每个人都至少是该组内一半人的朋友,那么该组可以按如下方式安排组员坐在圆桌周围:每个人都坐在他的两个朋友之间。改写:a. 任何至少有两个顶点的无向图中至少有两个顶
2021-07-18 21:43:55
178
原创 算法导论 附录B 思考题 B-1
(图着色问题)给定一个无向图G = (V, E),G的k着色是一个函数c:V → {0, 1, ..., k - 1},满足对于每条边(u, v) ∈ E,有c(u) ≠ c(v)。换句话说,数字0, 1, ..., k - 1代表了k种颜色,邻接的顶点不能具有相同颜色。a. 证明:任意树都可以都是2可着色的。b. 证明下列三条描述是等价的:1. G是二分图2. G是2可着色的3. G没有奇数长度的环c. 令d为图G中任意顶点的最大度数。证明:G可以用d + 1种颜色着色。d.
2021-07-16 09:36:05
355
原创 算法导论 附录B B.5-5
一棵满二叉树的内路径长度是指所有内部结点深度之和。类似地,外路径长度是指所有叶结点的深度之和。考虑一个有n个内部结点的满二叉树,其内路径长度为i,外路径长度为e。证明e = i + 2n.证明:先考虑不同深度节点的内部结点和叶结点数量,不妨设树最大深度为d,有:depth inner_node leaf_node 0 (1) (0) 1 2 ... ... ... d (0) 不难看出每层中的内
2021-07-14 09:59:40
718
4
原创 算法导论 练习5.4-4
一次聚会需要邀请多少人,才能让其中3人的生日很可能相同?from math import factorialimport numpy as npclass Birthday: def C(self, a, b): return factorial(a) / factorial(b) / factorial(a - b) def A(self, a, b): return factorial(a) / factorial(a - b) def
2021-07-03 19:02:59
157
原创 算法导论 5.4.1 生日悖论
一个屋子里人数必须要达到多少人,才能使其中两人生日相同的机会达到50%?没看书上的解前,自己先算了下不考虑闰年,并假设每人生日均匀随机分布,即生日落在某天的概率均为1/365设有n人,考虑所有情况数量为 365^n,每人生日均不同的情况相当于从365中选出n进行排列,1减去两者比值即为两人生日相同的概率。实现如下:from math import factorial # 阶乘函数def run(n): all_state = 365**n non_state =
2021-06-29 22:10:22
371
原创 算法导论 练习5.3-5
证明:在过程PERMUTE-BY-SORTING的数组P中,所有元素都唯一的概率至少是1 - 1/n。PERMUTE-BY-SORTING(A)1 n = A.length2 let P[1...n] be a new array3 for i = 1 to n4 P[i] = RANDOM(1, n^3)5 sort A, using P as sort keys证明:易知全事件有种...
2021-06-29 09:38:04
208
原创 算法导论 练习5.3-3
假设我们不是将元素A[ i ]与子数组A [ i ... n ]中的一个随机元素交换,而是将它与数组任何位置上的随机元素交换:PERMUTE-WITH-ALL(A)1 n = A.length2 for i = 1 to n3 swap A[ i ] with A[ RANDOM(1, n)]这段代码会产生一个均匀随机排列吗?为什么会或为什么不会?对某些特定的n,该法有可能产生均匀随机排列,如1, 2但考虑一般情况,在执行...
2021-06-28 22:00:19
184
原创 算法导论 答案
被附录C.5-6折磨太久了,今天去找了下答案,发现了一个算是能用的,下贴出链接(这个能不能标原创啊,但也不是转载吧,只是把链接贴出来了算法导论-答案
2021-06-23 21:12:43
8188
3
原创 算法导论 附录C C.5-1
抛掷一枚均匀硬币n次都为反面朝上的概率与抛掷一枚均匀硬币4n次得到少于n个正面的概率哪个小?这题做起来比较蛋疼,因为哪个小与n有关。。。
2021-06-20 20:10:55
100
原创 算法导论 附录C C.4-6
Rosencrantz教授和Guildenstern教授各扔一枚均匀硬币n次。证明:他们得到正面朝上次数相同的概率为。(
2021-06-17 10:41:15
157
原创 算法导论思考题4-3.b
递归式T(n) = 3T(n/3) + n/lgn比较容易看出,结点部分3T(n/3)代价为Θ(n)每层代价为n/lg(n/3^i),其中最后一层i为
2021-06-07 18:08:59
606
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人