算法

2016-2017-1 20155215 20155232 实验二 固件程序设计

China☆狼群 提交于 2020-02-02 00:09:02
实验二 固件程序设计 固件程序设计-1-MDK 0. 注意不经老师允许不准烧写自己修改的代码 1. 两人(个别三人)一组 2. 参考云班课资源中“信息安全系统实验箱指导书.pdf “第一章,1.1-1.5安装MDK,JLink驱动,注意,要用系统管理员身分运行uVision4,破解MDK(破解程序中target一定选ARM) 3. 提交破解程序中产生LIC的截图 4. 提交破解成功的截图 固件程序设计-2-LED 0. 注意不经老师允许不准烧写自己修改的代码 1. 参考云班课资源中“信息安全系统实验箱指导书.pdf “第一章,1.4” KEIL-MDK 中添加 Z32 SC-000 芯片库,提交安装截图 2. 参考云班课资源中“信息安全系统实验箱指导书.pdf “第一章,1.9”完成LED实验,注意“打开Z32的电源开关前,按住Reboot按键不放,两次打开电源开关,Z32即可被电脑识别,进行下载调试。提交运行结果截图 3. 实验报告中分析代码 代码分析 主函数代码 : 系统初始化; SystemInit (); 判断按键,确认是否进行程序下载; if(0 == GPIO_GetVal(0)) { BtApiBack(0x55555555, 0xAAAAAAAA); } 设置 GPIO0 状态为上拉输出; GPIO_PuPdSel(0,0); // 设置 GPIO0 为上拉

摩尔投票法(Boyer–Moore majority vote algorithm)

依然范特西╮ 提交于 2020-02-01 19:31:18
参考资料 论文MJRTY A Fast Majority Vote Algorithm 算法演示网站 维基百科 算法解读 概述 摩尔投票法(Boyer–Moore majority vote algorithm)出自 论文 ,算法解决的问题是如何在任意多的候选人(选票无序),选出获得票数最多的那个。常见的算法是扫描一遍选票,对每个候选人进行统计的选票进行统计。当候选人的数目固定时,这个常见算法的时间复杂度为: O ( n ) O(n) O ( n ) ,当候选人的数目不定时,统计选票可能会执行较长时间,可能需运行 O ( n 2 ) O(n^2) O ( n 2 ) 的时间。当选票有序时,可以很容易编出 O ( n ) O(n) O ( n ) 的程序,首先找到中位数,然后检查中位数的个数是否超过选票的一半。这篇论文针对无序且侯选人不定的情形,提出了摩尔投票算法。算法的比较次数最多是选票(记为n)的两倍,可以在 O ( n ) O(n) O ( n ) 时间内选出获票最多的,空间开销为 O ( 1 ) O(1) O ( 1 ) 。 算法 形象化描述 想象着这样一个画面:会议大厅站满了投票代表,每个都有一个牌子上面写着自己所选的候选人的名字。然后选举意见不合的(所选的候选人不同)两个人,会打一架,并且会同时击倒对方。显而易见,如果一个人拥有的选票比其它所有人加起来的选票还要多的话

快速排序算法实现

此生再无相见时 提交于 2020-02-01 19:25:05
一般方法   快速排序每趟都可以确定一个元素的最终位置,使得其左侧元素均小于temp,右侧元素均大于temp。   快速排序的算法复杂度为 O ( n l o g n ) O(nlogn) O ( n l o g n ) ,当需要排序的序列接近有序时,算法复杂度退化为 O ( n 2 ) O(n^2) O ( n 2 ) 。 代码如下: //对区间[left, right]进行划分 int Partition ( int A [ ] , int left , int right ) { int temp = A [ left ] ; //将A[left]存放至临时变量temp while ( left < right ) { while ( left < right && A [ right ] > temp ) right -- ; //反复左移right A [ left ] = A [ right ] ; while ( left < right && A [ left ] <= temp ) left ++ ; //反复右移left A [ right ] = A [ left ] ; } A [ left ] = temp ; //放置temp至left与right相遇的地方 return left ; //返回相遇的下标 } //快速排序

人工智能还给我们留多少空间?

╄→гoц情女王★ 提交于 2020-02-01 19:15:41
今天下午,来自清华建筑学院的大一学生到我的办公室来,讨论车模控制问题。原来他参加了汽车工程系举办的科技冬令营-芯动计划活动,参加这个活动将会学习基本软件操作方法、MCU基本知识以及常见的传感器等。其中 一个活动项目就是制作一个可以巡线运行的电动小车。 ^基于模型设计ANYmal 出现的错误动作^ 电子、传感器、单片机等学科在电类系中都作为基础课程进行讲授。对于进入建筑学院的这位同学来说,显然对建筑学科内容的兴趣比不上对电子类内容。所以他在交谈中也提到考虑在大一下或者大二上希望能够从建筑学院(这个往日比较热门的系)转动电类系别,比如自动化系等等。 None 当然,他到我这儿不是来请教电子、传感器、单片机等问题的。为的是一个问题,那就是如果根据车模通过视频检测到的赛道信息,完成车模的巡线控制。 对,这是一个控制问题。是自动化专业的重要的核心问题之一。每当此时,我都会比较自豪给学生讲解如何巧妙从系统的观点,从反馈的观点来分析讨论控制。此时,仿佛感觉所有重要的问题都会留给自动化来解决。 学好自动化,走遍天下都不怕。 ANYmal通过自学过程获得控制算法完成爬起运行动作 当然,这是一个虚幻的想法。而且越来越感到,随着控制理论的不断成熟,控制器设计不再需要人工去深入理解其 机理,被直接成熟的软件所替代完成。未来,你只要产生应用的想法,如何设计控制器将不再是问题。所以学不学自动化

毕业设计1

旧巷老猫 提交于 2020-02-01 18:55:45
今天进行了相似推荐算法的学习。 今天比较了几个协同过滤算法,其中基于用户的算法会存在数据稀疏性:一个大型的电子商务推荐系统一般有非常多的物品,用户可能买的其中不到1%的物品,不同用户之间买的物品重叠性较低,导致算法无法找到一个用户的邻居,即偏好相似的用户和算法扩展性方面的问题,而基于物品的协同过滤算法的基本思想是预先根据所有用户的历史偏好数据计算物品之间的相似性,然后把与用户喜欢的物品相类似的物品推荐给用户。还是以之前的例子为例,可以知道物品a和c非常相似,因为喜欢a的用户同时也喜欢c,而用户A喜欢a,所以把c推荐给用户A。因为物品直接的相似性相对比较固定,所以可以预先在线下计算好不同物品之间的相似度,把结果存在表中,当推荐时进行查表,计算用户可能的打分值,可以同时解决上面两个问题。接下来会进行基于物品的协同过滤算法的试验。 来源: https://www.cnblogs.com/wmy-666/p/12249485.html

(算法练习)——【先序、中序遍历确定二叉树】PAT A1020 Tree Traversals

爷,独闯天下 提交于 2020-02-01 18:29:12
主体部分代码: 需要知道先序、中序序列的区间 //当前先序序列区间为[preL,preR],中序序列区间为[inL,inR],返回根节点地址 node * create ( int preL , int preR , int inL , int inR ) { if ( preL > preR ) { return NULL ; //先序序列长度小于等于0,直接返回 } node * root = new node ; //新建一个新的节点,用来存放当前二叉树的根节点 root - > data = pre [ preL ] ; //新节点的数据域为根节点的值 int k ; for ( k = inL ; k <= inR ; k ++ ) { if ( in [ K ] == pre [ preL ] ) { //在中序序列中找到in[K] == pre[L]的节点 break ; } } int numLeft = k - inL ; //左子树的节点个数 //左子树的先序区间为[pre+1,preL+numLeft],中序区间为[inL,k-1] //返回左子树的根节点地址,赋值给root的左指针 root - > lchild = create ( preL + 1 , preL + numLeft , inL , k - 1 ) ; //右子树的先序区间为[preL

【Python数据结构与算法笔记day04】1.2. 算法的提出+算法的概念+算法的五大特性

久未见 提交于 2020-02-01 17:01:57
文章目录 1.2. 算法的提出 算法的提出 算法的概念 算法的五大特性 1.2. 算法的提出 算法的提出 算法的概念 算法是计算机处理信息的本质,因为计算机程序本质上是一个算法来告诉计算机确切的步骤来执行一个指定的任务。一般地,当算法在处理信息时,会从输入设备或数据的存储地址读取数据,把结果写入输出设备或某个存储地址供以后再调用。 算法是独立存在的一种解决问题的方法和思想。 对于算法而言,实现的语言并不重要,重要的是思想。 算法可以有不同的语言描述实现版本(如C描述、C++描述、Python描述等),我们现在是在用Python语言进行描述实现。 算法的五大特性 输入 : 算法具有0个或多个输入 输出 : 算法至少有1个或多个输出 有穷性 : 算法在有限的步骤之后会自动结束而不会无限循环,并且每一个步骤可以在可接受的时间内完成 确定性 :算法中的每一步都有确定的含义,不会出现二义性 可行性 :算法的每一步都是可行的,也就是说每一步都能够执行有限的次数完成 来源: CSDN 作者: 汪雯琦 链接: https://blog.csdn.net/qq_35456045/article/details/104134023

图常见算法-广度优先算法python实现

非 Y 不嫁゛ 提交于 2020-02-01 16:58:19
广度优先算法 广度优先搜索:breadth-first search, BFS 该算法用于解决两类问题: 1、节点A到节点B是否有路径? 2、节点A到节点B的哪条路径最短? 算法实现思想: 图的建立使用了散列表,双端队列使用了deque,为了避免死循环,需要使用一个列表searched_queue记录已经查找过的数据 from collections import deque graph = { } graph [ "you" ] = [ "alice" , "bob" , "claire" ] graph [ "bob" ] = [ "anuj" , "peggy" ] graph [ "alice" ] = [ "peggy" ] graph [ "claire" ] = [ "thom" , "jonny" ] graph [ "anuj" ] = [ ] graph [ "peggy" ] = [ ] graph [ "thom" ] = [ "rico" ] graph [ "rico" ] = [ ] graph [ "jonny" ] = [ ] def bsfSearch ( name ) : search_queue = deque ( ) search_queue += graph [ name ] searched_queue = [ ] while

【Python数据结构与算法笔记day06】1.4. 算法效率衡量+执行时间反应算法效率+单靠时间值绝对可信吗?+时间复杂度与“大O记法”+如何理解“大O记法”+最坏时间复杂度+时间复杂度的几条基本计

百般思念 提交于 2020-02-01 16:08:04
文章目录 1.4. 算法效率衡量 算法效率衡量 执行时间反应算法效率 单靠时间值绝对可信吗? 时间复杂度与“大O记法” 如何理解“大O记法” 最坏时间复杂度 时间复杂度的几条基本计算规则 1.4. 算法效率衡量 算法效率衡量 执行时间反应算法效率 对于同一问题,我们给出了两种解决算法,在两种算法的实现中,我们对程序执行的时间进行了测算,发现两段程序执行的时间相差悬殊(214.583347秒相比于0.182897秒),由此我们可以得出结论: 实现算法程序的执行时间可以反应出算法的效率,即算法的优劣。 单靠时间值绝对可信吗? 假设我们将第二次尝试的算法程序运行在一台配置古老性能低下的计算机中,情况会如何?很可能运行的时间并不会比在我们的电脑中运行算法一的214.583347秒快多少。 单纯依靠运行的时间来比较算法的优劣并不一定是客观准确的! 程序的运行离不开计算机环境(包括硬件和操作系统),这些客观原因会影响程序运行的速度并反应在程序的执行时间上。那么如何才能客观的评判一个算法的优劣呢? 时间复杂度与“大O记法” 我们假定计算机执行算法每一个基本操作的时间是固定的一个时间单位,那么有多少个基本操作就代表会花费多少时间单位。算然对于不同的机器环境而言,确切的单位时间是不同的,但是对于算法进行多少个基本操作(即花费多少时间单位)在规模数量级上却是相同的