学习 严蔚敏讲数据结构笔记11

收藏 《数据结构(C语言版)视频全集》—清华大学严蔚敏主讲 eMule资源 下面是用户共享的文件列表,安装eMule后,您可以点击这些文件名进行下载 数据结构(清华严蔚敏)_数据结构01.asf 详情 55.4MB 数据结构(清华严 阅读详情

2.5删除有序表中所有值大于且小于的数据元素。

分析:删除的结点的特点

while(p && p->data <= mink)

{

         pre=p;

         p=p->next;

         if(p)

         {

                   while(p&& p->data < maxk)

                            p= p->next;

                   q= pre->next;

                   pre->next= p;

                   while(q!= p)

                   {

                            s= q;

                            q= q->next;

                            free(s);

                   }

         }

}

 

2.8已知A,B和C为三个有序链表,编写算法从A表中删除B表和C表中共有的数据元素。

分析:被删元素的特点为:ai=bj=ck

其它元素则为:ai<bj 或bj<ck 或ck<ai

设三个指针pa,pb和pc分别指向这三个链表中的相应结点,则算法中的主要操作:

if(pa->data < pb->data)

{

         pre= pa;

         pa= pa->next;

}

else if(pb->data < pc->data)

                   pb= pb->next;

else if(pc->data < pa->data)

                   pc= pc->next;

else

{

         //删除

         pre-next= pa->next;

         free(pa);

         pa= pre->next;

}

 

1.9  双向循环链表的结点中,增加一个访问频度的数据域freq,编写算法实现LOCATE(L,x).

分析:

1)算法的基本操作应该是在链表中进行行搜索,直至p->data = x为止

2)在访问频度freq增1之后,需将该节点调整到适当位置。向前搜索直至找到一个访问频度大于它的结点为止。

p=L->next; //L为双向链表的头指针

while(p != L && p->data !=  x)

{

         p=p->next;//搜索元素值为x的结点

}

if(p == L)

{

         returnNULL;

}

q = p->priou;

while(q != L && q->freq <p->freq)

         q= q->prion; //搜索访问频度不小于它的结点

//删除结点*p

//将结点*p插入在结点*q之后;

 

 

3.2给出区分给定的“栈操作”序列是否合法的准则,并证明两个不同的合法蓄力不可能得到相同的输出元素序列。空栈到空栈

准则:

1)从操作序列中第一个字符起的任何一个子序列中,‘S’的个数不少与‘X’的个数;

2)整个序列中,‘S’的个数和‘X’的个数相同。

证明:(用反证法)

假设两个不同的合法操作序列:T1=u1,u2,…,un, T2=v1,v2,…,vn ui,vi∈{S,X} i=1,2,..,n 可以得到相同的输出元素序列。

不失一般性,假设第一个不同的操作为:

Uk=’S’ <> vk=’X’ 即:uj=vj,j=1,2,…k-1

则此时,已输出的元素序列相同,栈的状态也相同,且栈中至少存在一个元素。

假设,栈顶元素为b,正待输入的元素a,则根据栈的后进先出的原则,由T1得到的输出序列中,a领先于b。而由T2得到的输出序列中,b领先于a。

由此证得,两个不同的合法操作序列不肯能得到相同的输出元素序列。

 

3.6

status test(int &sum)

{

         intx;

         scanf(x);

         if(!x)

                   sum= 0;

         else

         {

                   test(sum);

                   sum+= x;

                   printf(sum);

         }

}

设输入为:5,3,1,0

则输出为:0,1,4,9

从上述运行结果可见,输出顺序和输入顺序恰好相反,则消去递归时必须用栈。

void ditui(int sum)

{

         InitStack(S);

         scanf(x);

         while(x)

         {

                   Push(S,x);

                   scanf(x);

         }

         sum= 0;

         printf(sum);

         while(!StackEmpty(S))

         {

                   sum+= Pop(S);

                   printf(sum);

         }

}

 

3.8识别读入一个的反对称的字符序列。

例如:abcd&dcba@是反对称字符序列;abc&@或abc&abc@ 或 ab&bac@ 都不是反对称字符序列。

这个算法和“判别括弧是否正确匹配的算法极其相似,算法过程中需要用到一个栈,由于序列中必定出现字符‘&’,则可以将在字符‘&’出现之前的所有字符均入栈,虑去字符‘&’之后再读入字符则应和栈顶的字符相等。

 

1.15  判别读入的字符序列是否为“回文”。

例如:abcdecdba 或 abccba 是回文。

由于回文的字符序列中的分界线不明确,因此算法中,除了需要一个栈之外,还需要一个队列,否则无法判别。

算法的基本思想是:

将依次读入的字符分别插入栈和队列,然后依次比较“栈顶”和“队头”的字符。

Status ex315()

{

         InitStack(S);

         InitQueue(Q);

         scanf(ch);

         while(ch!='@')

         {

                   Push(S,ch);

                   EnQueue(Q,ch);

                   scanf(ch);

         }

         state= TRUE;

         while(!StackEmpty && state)

         {

                   if(GetTop(S)== GetHead(Q))

                   {

                            Pop(S);

                            DeQueue(Q);

                   }

                   else

                   {

                            state= False;

                   }

         }

         returnstate;

}

 

1.7  从串S中删除所有和串T相同的子串。

此题的操作等同于“以空串置换串S中所有和T串相同的子串。”

显然,算法的目标是构造如上所画的一个新串。

下一次搜索串的起始位置为:

pos=k+StrLength(T)

 

n = StrLength(S);

m = StrLength(T);

k = pos = 1;

StrAssign(news,'');

while(k <= n-m+1)

{

         sub= SubString(S, k, m);

         if(StrCompare(sub,T) != 0)

                   k++;

         else

         {

                   news= Concat(new, SubString(S, pos, k-pos));

                   pos= k + n;

                   k= pos;

         }

}

news = Concat(news SubString(S, pos,n-pos+1));

 

4.11 求串S中出现的第一个最长重复子串及其位置。所谓“重复子串”指的是,

SubString(S,i,len) == SubString(S,j,len)

1<=i<j<=StrLength(S)

1<=len<=StrLength(S)-j+1

例如:S=’aaaaaaa’的最长重复子串为T=’aaaaaa’

分析:

此题可以有多种解法,在此只介绍一种利用求next函数的算法

next[j]<>0 表明:在第j个字符之前存在一个长度为next[j]-1的重复子串。

由此,算法的基本思想为:求串 pat=SubString(S,i,StrLength(S)-i+1)的next函数值,i=1,2,…,StrLength(S)-1并从中求最大值。

例如:S=’abaabaaabaaaab’

Pat1 =  ‘abaabaaabaaaab’

Next值01122345234522

Pat2 = ’ baabaaabaaaab’

Next值0111234123411

Pat3= ‘aabaaabaaaab’

Next值 012123345673

Pat4 = ’abaaabaaaab’

Next值 01122234562

 

特殊情况:注意最后一个字符!

如果:字符串aabaaabaaaba

Next 值为    012121345678

 

i = 1;

maxl = 0; //当前重复子串的长度

n = S[0];

while(n-i+1 > maxl)

{

         maxk= Max

         {

                   Next(SubString(S,i, n-1+1))

         }

         if(maxk!= next[n] || S[n] != S[i+maxk-1])

                   maxk--;

         if(maxk> maxl)

         {

                   maxl= maxk;

                   pos= i;

         }

         i++;

}

 

 

6.2二叉树

基本操作:

查找插入删除

查找:

Root(T);

Parent(T,cur_e)

LeftChild(T,cur_e)

RightChild(T,e)

LeftSibling(T,cur_e)

RightSibling(T,cur_e)

BiTreeEmpty(T);

BitTreeDepth(T);

PreOrderTraverse(T,Visit());

InOrderTraverse(T,Visit());

PostOrderTraverse(T,Visit());

LevelOrderTraverse(T,Visit());

插入:

InitBiTree(&T);

CreateBiTree(&T,definition);

Assign(T,&e,value);

InsertChild(T,p,LR,c);

删除:

ClearBiTree(&T);

DestoryBiTree(&T);

DeleteChild(&T,p,LR);

 

二叉树的重要特性

性质1:在二叉树的第i层上至多有2^(i-1)个结点 (i>1)

性质2:深度为k的二叉树上至多含(2^k)-1个结点(k>1)

性质3:对任何一棵二叉树,若他含有n0个叶子结点,n2个度为2的结点,则必存在关系式:n0=n2+1

 

两类特殊的二叉树

满二叉树:指的是深度为k且含有2^k-1个结点的二叉树。

完全二叉树:树中所含的n个结点和满二叉树中编号为1至n的结点一一对应

性质4:具有n个结点的完全二叉树树的深度为[log2n]+1向下取整在加一

性质5: 若含n个结点的二叉树从上到下且从左到右进行1至n的编号,则对二叉树中任意一个编号为i的结点:

(1)      若i=1,则该结点是二叉树的根,无双亲。否则,编号为[i/2]的结点为其双亲结点。

(2)      若2i>n,则该结点无左孩子结点,否则,编号为2i的结点为其左孩子结点;

(3)      若2i+1>n,则该节点无右孩子结点,否则,编号为2i+1的结点为其右孩子结点。

 

数据结构常见问题(2)栈 1.给出区分给定的“栈操作”序列是否合法的准则,并证明两个不同的合法序列不可能得到相同的输出元素序列。 分析: 准则: (1)从操作序列中第一个字符起的任何一个子序列中,‘s'的个数不少于’x‘的个数。(s入栈,x出栈)。 (2)为保证从空栈到空栈,所以整个序列中,'s'的个数和'x'的个数相同。 证明: (反证法)假设两个不同的合法操作序列: 可以得到相同的输出元素序列。 阅读详情

相关推荐

严蔚敏数据结构C语言版教材精讲考研真题串讲视频

本课程是严蔚敏《数据结构》(C语言版)网授精讲班,为了帮助参加研究生招生考试指定考研参考书目为严蔚敏《数据结构》(C语言版)的考生复习专业课,我们根据教材和名校考研真题的命题规律精心讲解教材章节内容。

ldingxxw的博客 769

数据结构--严蔚敏(C语言版)笔记

目录第一章 绪论1.1 复习笔记一、 什么是数据结构二、 基本概念和术语三、 抽象数据类型的实现四、 算法和算法分析第二章 线性表一、线性表的类型定义二、线性表的顺序表示和实现1. 顺序表存储结构的表示2. 顺序存储结构的特点三、 线性表的链式表示和实现1.定义2.链式存储结构的特点3.链式存储结构的分类第三章 栈和队列一、 栈1. 栈的定义与基本操作2. 栈的表示和实现二、栈的应用举例1. 括号匹配2. 表达式求值三、栈与递归的实现1. 递归的定义2.栈在递归中的运用数据结构是一门研究非数值计算的程序设计

lose_user___的博客 5845

严蔚敏老师版《数据结构》笔记之基本概念和术语

1. 什么是数据结构 如果要写好一个程序,必须分析待处理的对象的特性和对象之间的关系,这是“数据结构”形成和发展的背景。 “数据结构是一门研究非数值计算的程序设计问题中计算机的操作对象以及它们之间的关系和操作等的学科”。   2. 基本概念和术语: (1) 数据(data):在CS中是指所有能输入到计算机中并被计算机程序处理的符号的总称。 (2)数据元素(data element)...

李皮皮的博客 1万+

Java判断回文序列

判断一个序列是否为回文序列,使用栈实现。

m0_53676388的博客 720

数据结构题集(严蔚敏版)题目——第二章 线性表

数据结构题集(严蔚敏版)题目——第二章 线性表题目选作。

CocoaChen 2716

严蔚敏数据结构——算法2.11和2.12

/* algo2-5.c 实现算法2.11、2.12的程序 */ //#include"c1.h" /* c1.h (程序名) */ #include<string.h> #include<ctype.h> #include<malloc.h> /* malloc()等 */ #include<limits.h> /* INT_MAX等 */ #include<stdio.h> /*

sunshine_rebrith的博客 1997

用C++实现的完全二叉树,实现前序遍历,中序遍历,后序遍历。

用C++实现的完全二叉树,实现前序遍历,中序遍历,后序遍历。

EncodedStar的博客 2261

严蔚敏数据结构习题解析与算法实战答案汇总

数据结构是计算机科学中一门承上启下的核心课程,它不仅连接着程序设计语言与算法分析,更是构建高效软件系统的基础支柱。从底层内存布局到高层应用架构,数据结构贯穿于操作系统、数据库、编译器乃至人工智能系统的各个层面。例如,在数据库中,B+树索引优化查询效率;在网络路由中,图结构支撑最短路径计算;在函数调用过程中,栈结构管理执行上下文。掌握数据结构的本质,意味着具备了将现实问题抽象为逻辑模型并进行高效求解的能力。

weixin_35006125的博客 1046

2021-10-16【严蔚敏数据结构代码实现合集】【c语言学习必备】

线性表 2021-9-14【数据结构/严蔚敏】【顺序表】【代码实现算法2.1-2.7】 2021-9-18【数据结构/严蔚敏】【单链表】【代码实现算法2.8-2.12】 2021-9-18【数据结构/严蔚敏】【静态链表】【代码实现算法2.13-2.17】 2021-9-19【数据结构/严蔚敏】【双向链表】【代码实现算法2.18-2.19】 2021-9-19【数据结构/严蔚敏】【带头结点的线性表】【代码实现算法2.20-2.21】 2021-9-19【数据结构/严蔚敏】【一元多项式的表示及相加、相减、相乘

eternity_memory的博客 1万+

直接删除s串中与t串相同的子串

直接删除s串中与t串相同的子串

手把手教你搭建日本亚马逊CVV钓鱼系统(含自动验证功能)

本文详细介绍了电商平台安全防护的关键实践,重点讲解了如何构建自动化风控系统。内容包括基础架构设计、用户行为分析、交易风险评估模型构建、验证机制实现以及系统部署优化,帮助电商平台有效识别和防范安全威胁,同时提升用户体验。

weixin_30952535的博客 816

【计算机】数据结构-严蔚敏/清华大学(完)

【计算机】数据结构-严蔚敏/清华大学(完) 来源链接:点击查看bilibili【计算机】数据结构-严蔚敏/清华大学(完) 已整理完成 数据结构(清华严巍敏)01 数据结构(清华严巍敏)02 数据结构(清华严巍敏)03 数据结构(清华严巍敏)04 数据结构(清华严巍敏)05 数据结构(清华严巍敏)06 数据结构(清华严巍敏)07 数据结构(清华严巍敏)08 数据结构(清华严巍敏)09 数据结构(清华严巍敏)10 数据结构(清华严巍敏)11 数据结构(清华严巍敏)12 数据结构(清华严巍敏)13 数据结构(清华

weixin_47312141的博客 1万+

Jenkins+docker 微服务实现自动化部署安装和部署过程

本文详细介绍了如何使用Docker部署Jenkins自动化服务器。主要内容包括:1)拉取Jenkins官方或BlueOcean镜像;2)创建容器并配置端口映射、数据卷挂载;3)设置防火墙规则;4)配置清华大学镜像加速;5)安装必要插件;6)SSH密钥配置;7)构建触发器设置;8)编写自动化构建脚本。通过Docker部署Jenkins可以简化安装流程,确保环境一致性,并利用容器特性实现快速启动和管理。文章提供了完整的配置步骤和注意事项,帮助用户快速搭建CI/CD环境。

qq_33665793的博客 1687

数据结构视频教程 清华大学严蔚敏主讲 全48讲完整版asf格式

迅雷下载:  数据结构(清华严蔚敏)01.rar 迅雷下载:  数据结构(清华严蔚敏)02.rar 迅雷下载:  数据结构(清华严蔚敏)03.rar 迅雷下载:  数据结构(清华严蔚敏)04.rar 迅雷下载:  数据结构(清华严蔚敏)05.rar //(*本文出处:南山古桃(nsgtao)的百度空间:http://hi.baidu.com/nsgtao/ *) 迅雷下载:  数据结构

奋斗之路 6973

CSP-J 入门级第一轮认证 2025 详细解析

2025年CSP-J入门级第一轮认证模拟赛提供10套免费试题,含选择题与解析。选择题涉及计算机科学基础,如32位无符号整数最大值计算(约42.9亿,选A)、C++位运算(255&254=254,选B)、递归函数分析(calc(5)=6,选B)、哈夫曼树构造(带权路径长度186,选B)等。其他题目涵盖图论(有向图边数等于入度/出度和,选B)、组合数学(120种选法,选C)、布尔逻辑(选项C不恒等)、模运算周期性(f[2025]=6,选D)、C++字符串特性(支持string+char,选B)及引用传参

lan_in的博客 2939

本地AI语音生成与配音工作台Pandrator:从TTS到RVC的完整实践指南

语音合成(TTS)技术通过深度学习模型将文本转换为自然语音,其核心原理涉及声学建模与波形生成。这项技术不仅提升了人机交互体验,更在内容创作领域展现出巨大价值,广泛应用于有声书制作、视频配音、虚拟助手等场景。本文聚焦于一个集成了XTTS-v2、RVC等先进模型的本地化AI语音工作台——Pandrator,它通过模块化架构将语音合成、声音克隆、音频转录与翻译等流程无缝整合,为用户提供了一个图形化、可定制的完整解决方案。文章深入解析了其基于TTS与RVC(Retrieval-based Voice Convers

weixin_42676876的博客 339

c语言数据结构,清华大学严蔚敏老师讲的数据结构

 刚开始学程序设计的时候就是看的严蔚敏老师的教程,虽然老了点,不过内容是真的不错. 计算机视频教程系列—数据结构教程—清华严蔚敏主讲.01    计算机视频教程系列—数据结构教程—清华严蔚敏主讲.02    计算机视频教程系列—数据结构教程—清华严蔚敏主讲.03    计算机视频教程系列—数

bluesft的专栏 1321

Unitree G1仿人机器人协同搬箱:从仿真搭建到多机协同部署完整指南

Unitree G1仿人机器人协同搬箱技术方案摘要 本文提供了一套完整的Unitree G1人形机器人协同搬箱解决方案,涵盖从仿真环境搭建到多机协同部署的全流程。核心内容包括: 双仿真环境配置:同时搭建Gazebo+ROS Noetic基础仿真环境与Isaac Gym+Mujoco高性能RL训练环境,支持Sim2Sim迁移验证 训练框架搭建:详细配置unitree_rl_gym框架,提供PPO算法定制化训练流程和参数优化方案 数据集应用:整合宇树开源真机数据集(UnifoLM-WBT-Dataset)~~~

huanghm88的专栏 471

探索数据结构的奥秘:严蔚敏数据结构C语言版开源宝藏

探索数据结构的奥秘:严蔚敏数据结构C语言版开源宝藏 【下载地址】严蔚敏数据结构C语言版资源下载 本书的第1章综述数据、数据结构和抽象数据类型等基本概念;第2章至第7章从抽象数据类型的角度,分别讨论线性表、栈、队列、串、数组、广义表、树和二叉树以及图等基本类型的数据结构及其应用;第8章综合介绍操作系统和编译程序中涉及的动态...

gitblog_09809的博客 777

【100%通过率】华为OD机试真题 Python 实现【水库蓄水问题】【2022.11 Q4 新题】

给定一个长度为 n 的整数数组height。数组的元素表示山的高度,选择两个元素作为水库的边界,求蓄水量的最大值并输出蓄水量最大时的边界下标(蓄水量相同时输出下标较近的)。

MISAYAONE的博客 1万+

数字图像处理:直方图匹配或规定化Histogram Matching (Specification)原理及感悟

本文介绍了连续图像和数字图像直方图匹配(直方图规定化)的原理、处理过程,并提供了案例进行了讲解。可以看到,直方图均衡处理是直方图匹配的一个重要桥梁。 最后,对于直方图规定化这个翻译个人觉得很low,个人感觉叫指定直方图更好理解,但Histogram Specification怎么翻译确实不太好把握,因此还是叫Histogram Matching直方图匹配最好。

老猿Python 2880

c语言程序设计第三版何钦铭课后答案_严蔚敏数据结构C语言版课后习题答案及笔记...

向然学习资料网为同学们提供严蔚敏数据结构C语言版课后习题答案及笔记严蔚敏《数据结构》(C语言版)笔记和习题(含考研真题)详解课程目录第1章 绪 论 1.1 复习笔记 1.2 强化习题详解 1.3 考研真题与典型题详解第2章 线性表 2.1 复习笔记 2.2 强化习题详解 2.3 考研真题与典型题详解第3章 栈和队列 3.1 复习笔记 3.2 强化习题详解 3.3 考研真题与典型题详解第4...

weixin_33661931的博客 1506

RK3588+YT9215快速拓展以太网口

YT9215支持7个端口的非阻塞数据传输,确保高效的数据流处理;在开发过程中,最重要的一点就是YT9215与RK3588的GMAC连接和配置部分,下面是gmac1对应dtsi文件的修改,包括注释掉rgmii_phy1对应的mdio1,以及gmac1对应的phy-handle部分,同时将gmac1修改成1000Mbps全双工模式。这就是最简单,最快速的RK3588拓展网口的方法了,如果需要用到交换芯片的其他功能,那就不可以直接使用原厂提供的bin,而是需要对YT9215进行另外的驱动开发。

带着耳朵取流浪的博客 2792

《数据结构-C语言版》(严蔚敏,吴伟民版)课本源码+习题集解析使用说明

转载自:https://www.cnblogs.com/kangjianwei101/p/5221816.html 《数据结构-C语言版》(严蔚敏,吴伟民版)课本源码+习题集解析使用说明 先附上文档归类目录: 课本源码合辑 链接☛☛☛《数据结构》课本源码合辑 习题集全解析 链接☛☛☛《数据结构题集》习题解析合辑 ★教材及习题源码下载★ 链接☛☛☛ 严蔚敏《...

IceSea7 4023

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

【免费下载】 严蔚敏数据结构C语言版资源下载

严蔚敏数据结构C语言版资源下载 【下载地址】严蔚敏数据结构C语言版资源下载 本书的第1章综述数据、数据结构和抽象数据类型等基本概念;第2章至第7章从抽象数据类型的角度,分别讨论线性表、栈、队列、串、数组、广义表、树和二叉树以及图等基本类型的数据结构及其应用;第8章综合介绍操作系统和编译程序中涉及的动态存储管理的基本技术;...

gitblog_09801的博客 1407

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

上一篇: 学习 严蔚敏讲数据结构笔记10
下一篇: 学习 严蔚敏讲数据结构笔记12
dblion
博客等级 码龄16年 23粉丝 104原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值