利用模糊神经网络控制解决问题的原理及方法(优选)word资料

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

利用模糊神经网络控制解决问题的原理及方法(优选)word资料
利用模糊神经网络控制解决问题的原理及方法
通过课程学习,我了解了模糊控制和神经网络控制解决问题的基本原理和方法。

通过查阅资料, 了解到模糊控制和神经网络控制在实际生活中如何解决问题。

我参考火灾探测系统为例,介绍模糊控制解决问题的原理及方法。

首先,简要介绍一下 Bp 神经网络控制和模糊控制的原理。

1. Bp 神经网络的结构及算法
BP 网络可以有多层, 但为叙述简捷以三层为例导出计算公式。

设 BP 网络为三层网络,输入神经元以 i 编号,隐蔽层神经元以 j 编号,输出层神经元以 k 编号,示意图如图 1-1所示,其具体形式在下面给出,隐蔽层第 j 个神经元的输入为:∑=i
i ji j o w net ,第 j 个神经元的输出为 (j j net g o =,输出层第 k 个神经
元的输入为∑=j kj k o w net ,相应的输出为 (k k net g o =,式中 g 为 sigmoid 型函
数, g(x= (
11 (Θ+-+=
x e x g , 式中ʘ为阈值或偏置值。

ʘ˃0则使 sigmoid 曲线沿横坐标左移, 反之则右移。

因此, 各神经元的输出应为∑Θ+-+=i
j i ji j o w o (exp(1(1、∑Θ+-+=j
k j kj k o w o
(exp(1(1
图 1-1神经网络结构图
BP 网络学习过程中的误差反向传播过程是通过使一个目标函数(实际输出与希望输出之间的误差平方和最小化来完成的, 可以利用梯度下降法导出计算公式。

在学习过程中,设第 k 个输出神经元的希望输出为 pk t ,而网络输出为 pk o ,则系统平均误差为∑∑-=p k
pk pk o t E 2 (21,为了表示方便,省去下标 p ,平均误差
可写成∑-=k
k k o t E 2 (21,式中平均误差 E 也称为目标函数。

根据梯度下降法, 权值的变化项∆ kj w 与ƏE/Əkj w 成正比,即∆ kj w =-ƞƏE/Əkj w ,由上述各公式可得:∆ kj w =-ƞƏE/Əkj w =j k k k k kj
k k k k o o o o t net o E 1( ((--=∂∂∂∂∂∂-ηη, 记 j k k k k k o o o o t 1( (--=δ,对于隐含层神经元,也可写成∆ ji w =-ƞƏE/Əji w =
i j j j
ji j j j j o o o E net o E 1((-∂∂-=∂∂∂∂∂∂-ηη, 1(j j j j o o E -∂∂-=δ,由于ƏE/Əj o 不能直接计算 , 而是以参数的形式表示 , 即 -ƏE/Əj o =-∑∑∑∑∑=∂∂-=∂∂∂∂-=∂∂∂∂k
kj k kj k k j j j kj k k j k k k w w E o w E net E δ( (((, 则导出各个权重系数的调整量为∆ kj w j k k k k o o o o t 1( (--=η, ∆ ji w =i j o ηδ, 式中ƞ称为学习效率, ]1([j j k
kj k j o o w -=∑δδ,
1( (k k k k k o o o t --=δBP 网络的学习算法的具体步骤如下:
1. 从训练本集中取某一样本,把它的输入信息输入到网络中
2. 由网络正向计算出各层节点的输出
3. 计算网络的实际输出与期望输出的误差
4. 从输入层起始反向计算到第一个隐层,按一定原则向减小误差方向调整网络的各个联接权值
5. 对训练样本集中的每一个样本重复以上步骤,直到对整个训练样本集的误差达到要求为止。

2. 模糊控制的结构与算法
课程所学我们知道模糊控制器的设计原则如下
1. 定义输入输出变量
2. 定义所有变量的模糊化条件
3. 设计控制规则库
4. 设计模糊推理结构
5. 选择精确化策略的方法
模糊控制解决问题的方法为:
1. 模糊化过程
2.
模糊规则
3. 模糊推理
4. 清晰化过程
模糊控制系统的原理框图如图 2-1
所示。

图 2-1模糊控制原理框图
可以看出其结构与一般计算机数字控制系统基本类似。

只是其控制器为模糊控制器。

模糊控制系统由以下几部分组成:输入输出接口、执行机构、检测装置、被控对象及模糊控制器。

模糊控制器是模糊控制系统的核心, 也是模糊控制系统区别于其他自动控制系统的主要标志, 下面对模糊控制器三个主要阶段做简要的介绍:
2.1输入模糊化
模糊化是把系统输入的精确量转化为模糊控制器中所需的模糊量的过程, 为了完成输入的模糊化, 我们必须知道输入精确值对模糊集的隶属函数 (这里不作说明。

模糊集的个数可根据被控对象的不同而不同,例如,可分成正大,正中, 正小,零,负小,负中,负大七种。

隶属函数的形状可根据实际情况而定,要求不高的一般可取三角形或梯形。

2.2模糊推理决策
模糊控制器的主要工作是依据语言规则进行模糊推理决策。

因此在进行模糊规则推理之前, 先要指定好语言控制规则。

实际上控制规则是根据操作者或专家的经验知识来确定的, 它们也可以在试验过程中不断进行修正和完善。

规则的形式很像计算机程序设计语言常用到的条件语句“ IF…THEN…” 。

模糊控制规则随着模糊控制器的输入输出维数的不同采用不同的形式。

1单输入单输出型:其控制规则为 IF X=A,THEN Y=B
2 多输入单输出型:其控制规则为IF X 1=A1,AND(ORX 2=A2,…AND(ORXN =AN ,THEN Y=B
3 多输入多输出型:IF X 1=A1, AND(ORX 2=A2,…AND(ORXN =AN ,THEN
Y=B1, AND(ORY2=B2,…AND(ORYN =BN
这里的 AND 和 OR 在模糊推理中相应于“交” “并”运算
输出逆模糊化就是将语言表达的模糊量恢复到精确的数值, 也就是根据输出模糊
子集的隶属度计算出确定的数值。

下面介绍三种主要的方法
1最大隶属度法:这种方法就是选取模糊子集隶属度最大的元素作为控制量。

如果最大点有几个 , 则取它们的平均值。

例如有两个模糊子集分别为
6. 08. 02. 03. 01. 01+++-+-=U , 8. 0115. 02. 01+++-+-=U , 在 U1中, 元素 1的隶属度最大,则取 u=1为输出量;而在 U2中,元素 0和 1的隶属度都为最大,则取
u=(0+1/2=0.5作为输出量。

选择最大隶属度方法简单易行,算法实时性好, 但它利用的信息量较少,会引起一定的不确定性。

2加权平均法:此法又称重心法,有两种形式。

第一种是普通加权平均法,其控制量的精确值 u 由下式决定:∑∑===i i
n i i i u u u u 11
( (μμ. 第二种是算术加权平均法,其控
制量的精确值 u 由下式求出:∑∑===i i
n i i
i k
u k u 11, 其中 k 的选择可根据实际情况来决定。

3取中位法:为了充分利用所有信息,求出将模糊集隶属函数曲线与横坐标之间的面积平分为两等的数,用此数作为逆模糊化的结果。

模糊控制的算法步骤
1根据当前采样得到的系统的输出值,计算所选择的系统的输入变量
2将输入变量的精确值变为模糊量,即模糊化处理
3根据输入模糊变量及模糊控制规则,按模糊推理合成规则计算控制模糊量, 即进行推理决策
4由上述得到的控制模糊量计算精确的控制量,即模糊化处理
3. Bp 神经网络串联模糊控制在火源探测方面的应用
3.1火源探测硬件系统
火源探测系统由温度 -火焰复合探测器,放大滤波, A/D转换,微处理器识别和数据输出五部分组成,系统结构如 3-1图所示。

图 3-1火灾探测系统结构框图
本文的火灾探测系统主要应用于电路,变压器间和配电室等室内封闭空间。

当发生火灾时,室内产生高温以及高强度的火焰辐射,系统前端采用温度 -火灾复合探测器进行构建, 将探测到的温度及火焰辐射通过一定的信号预处理电路进行放大,滤波和 A/D转换得到的数字信号送入微处理器中进行分析判断。

3.2模糊神经网络与火灾探测
在火灾探测中, 单纯依靠模糊逻辑或神经网络都存在一定的局限性, 不能达到理想的辨识效果, 如将两者结合则具有广阔的前景。

因此本文采用模糊神经网络进行火灾信号的识别。

本文建立的模糊神经网络采用串联型结构,模糊神经网络的基本结构如图 3-2
所示
图 3-2模糊神经网络的基本结构框图
图 3-2中,模糊神经网络各层的作用如下 :
1输入层:温度 -火焰复合探测器的输出信号(即目标温度,环境温度和红外辐射作为网络的输入数据。

2信号处理层:对网络的输入数据进行放大,滤波和 A/D转换,需要指出的是对输入量进行归一化处理,可以防止小数值被大数值淹没而影响网络矫正过程 3预测层:通过输入训练样本来调节连接权值
利用神经网络生成评语
陈烨
(四川大学电气信息学院 610065)
内容摘要本文介绍了人工神经网络用于协助老师生成评语的方法。

用这种方法,只需输入学生的各项指数就能生成对学生的评价。

由于神经网络具有较好的学习和推广能力,生成的评语能够较准确的反映学生的表现。

关键词人工神经网络,BP算法,评语
Generating Remarks Using Neural Networks
Chen Ye
(School of Electrics Information, Sichuan University, Sichuan, 610065) Abstract A method of helping teachers to generate remarks using artificial neural networks is presented. Using this method to generate remarks of students, the only thing you need to do is to input the index of the students. Since the neural networks has good performance in studying and extending, the remarks generated by this
method can report the performance of the students accurately.
Keywords Artificial Neural Networks, BP algorithm, remarks
1前言
人工神经网络(Artificial Neural Networks, ANN)是在研究大脑工作原理的基础上提出来的。

它是生物神经网络(Biological Neural Networks, BNN)的一种简化模型。

人工神经网络具有较强的学习和推广能力[1]。

它可以用硬件实现,也可以用软件模拟。

本文就是用软件来模拟神经网络。

迄今为止,已有十种以上的人工神经网络模型被提出并应用到实践中。

其中,BP网络是应用的最广泛的一种。

它能够在学习几个样本的基础上进行推广,从而掌握这一类问题。

经过学习后,它就能根据已学习的内容对外部的输入做出正确的响应。

BP网络属于前馈网络。

它可看成是一从输入到输出的高度非线性映射。

Hecht-Nielsen于1987年证明了Kolmogorov定理。

其内容为::给定任何一个连续函数f:U n→R m,Y=f(X), 其中,U n∈[0,1],f可以精确地用一个三层前馈网络实现,该网络的第一层(即输入层)有n个神经元,中间隐含层有2n+1个神经元,第三层(即输出层)有m个神经元[1]。

由于BP网络具有上述一些优良特性,一些学者已成功地将基于BP算法的人工神经网络运用解决倒立摆问题,直接根据地面信息预报天气等。

本文也将利用BP网络的这些特点来达到智能生成评语的目的。

下面将首先对评语的生成方法作一个简单介绍,接着介绍本文方法中用到的BP网络模型,然后介绍这种方法所需的数据结构,最后简要描述一下本文方法的工作流程。

2评语生成方法
人工写评语时,总是由某个学生各个方面的各种表现推出这个学生在各方面能得到的评语。

例如,一个学生在遵守纪律方面的表现为:迟到1次,旷课1次,上课讲话2次。

教师更具这几个数据就会得出“不很遵守纪律”这样的评语。

这里,各种表现(如,迟到次数、旷课次数、上课讲话次数等)与学生在各个方面能得到的评语(如,遵守纪律、不遵守纪律等)之间的关系通常是复杂的,是很难用一个简明的解析式来表达的。

用计算机生成评语不可能通过寻求这个简明的解析式来生成评语。

同时,也不能让教师逐一输入前面提到的那个复杂的关系。

因此,本文选用神经网络来表示这个关系。

这种方法不仅能减少教师的工作量,还能生成能够准确反映学生情况的评语。

3 BP 网络模型
BP (Back Propagation )网络是由P.Werbos, David Rumelhart 等人提出的。

它由多层神经元通过一定的连接权连接起来,并采用BP 算法作为训练算法。

下面将作具体描述。

3.1 BP 网络结构
BP 网络由若干个神经元组成,这些神经元可分为几层,任何一个神经元于同一层的神经元之间无直接关系,而且各神经元的输出信号只能向前传播,输入信号只能由该神经元后面的神经元(或输入节点)传来。

单个神经元的结构如图1所示。

它将多个输入加权求和并减去阈值θi ,在激活函数f(·)的作用下,得到一个输出。

这个关系可表述为
i x w Y j n
j ij i θ-=∑=1
(1)
)(i i Y f O = (2)
其中,x j 是输入信号,w ij 表示从神经元i 到神经元j 的连接权值,θi 为阈值,O i 为第i 个神经元
的输出。

f(·)为激活函数。

激活函数有多种类型,如阈值型、饱和型等。

本文采用S 型激活函数
)
exp(11
)(x x f β-+=
(本文中β取1) (3)
本文中用到的神经网络的结构如图2。

这是一个三层网络。

输入的数据通过输入节点的神经元经过计算得出这一层中各神经元的输出。

这一层的神经元又计算出自己的输出并传给下一层。

如此进行直到计算出输出节点的输出为止。

学生各方面的表现与评语内容之间是一
种非线性关系。

因此根据Kolmogorov 定理,为了保证该神经网络能成功地学习,根据该问题的特点,本文取BP 网络的输出节点数为1,隐含层神经元数为输入层的2倍加上1,输入层的节点数与生成当前评语所需的评价等级数目一致(后面将作具体阐述)。

3.2 BP 网络的学习算法
BP 网络在正常工作前必须经过训练。

训练时通常需要有多个训练样本,以保证神经网络具有良好的推广能力。

训练所要求的样本数可近似的表达为:若允许的训练误差为ε,那么,训练样本数应大于连接权个数与ε的商。

训练时,先将训练样本的输入部分从输入神经元输入,然后根据公式(1)—(3)依次计算各层的神经元的输出。

最后从输出节点开始按下式调整各连接权值
)(')(i i i Y f x c ⋅- 如果神经元i 是输出单元
δi =
(4)
∑>i
m i m mi Y f w )(')(δ 如果神经元i 不是输出单元
其中, c i 表示训练集中当前输入对应的输出的第i 分量。

由激活函数解析式可求出
)1()('i i i x x Y f -= (5)
计算出个神经元的δi 后,按下式调节权值
j i ij ij x w w ρδ+← (6)
反复按照公式(4)、(5)、(6)调节权值直到均方误差E 足够小。

其中,E 的定义如下
2))()((2
1
k o k c E -=∑ (7)
其中,k 表示训练样本序号。

3.3 BP 网络的使用
BP 网络经过学习后,就可以它来解决问题使用了。

需要解决已训练的问题时,就将需要输入信息从神经网络的输入节点输入,根据公式(1)——(3)从输入节点开始计算各神经元的输出。

最后,输出节点的输出即为所求问题的解。

4 数据结
构 本文根
据算法的
需要,将评语按以下方式来确定: 评价角度1 …………
评价角度n
评价点1
…………
评价等级1 …………
具体等级1
……
评语等级1
评语等级
2
……
表 1 评语确定方式
由表1可知,整个数据结构由n个评价角度(如,德、智、体等)组成,每一个评价角度又由一定数量的评价点组成(如,“德”可由“是否遵守纪律”、“是否尊敬师长”等组成),每一个评价点又由若干个评价等级组成(如,“是否遵守纪律”可由“上课随便讲话次数”、“迟到次数”、“旷课次数”等组成),每个评价等级还包含若干个具体等级(如,“旷课次数”可包括“一次”、“两次”、“三次及以上”等具体等级)。

当某个评价点的每一个评价等级对应的具体等级都已确定时,就通过神经网络计算出学生在该评价点上能得到的评语等级的序号(如,“是否遵守纪律”可包含“遵守纪律”、“不遵守纪律”等评语等级),然后根据这个序号,从对应的评语内容下的具体内容(如,“不遵守纪律”可包含“不能遵守纪律”、“希望能遵守纪律”等具体内容)中任选一个写入评语,这样可保证评语语句的多样性。

从这里的叙述可看出对数据结构进行这样的划分是必要的。

由于评价点与评价等级、具体等级、评语等级之间有这样一个关系:对某一个学生进行评价时,对某一个评价点,该学生所得到的评语由该学生在该评价点下的各个评价等级上所得到的具体等级确定。

这个确定与被确定的关系就由神经网络来完成。

因此每个评价点都对应于一个神经网络。

上面所述的几个数据结构将分为如下所示的几个表来存储:
表 2 评价角度的存储
表 3 评价点的存储
表 4 评价等级的存储
表 5 具体等级的存储
表 6 评语等级的存储
表2~7中,“是否已删除”用于标记已经删除的内容。

这是由于在进行删除其中某一项的操作时,如果直接删除,就会使各种编号无法指向原来所指向的目标,而这些表通常会很大,如果调整这些编号,会花去很多时间,因此采用对已删除项作上标记的方法,当添加项时,只需搜索一个作有标记的项,将内容填入该项即可。

这种操作类似于现在大多数文件系统删除或添加文件的方法。

这是一种十分有效的方法。

每个所评价点对应的神经网络以字符串的形式存储在表3中。

5具体实现
可用VB6编程实现神经网络部分,通过ADO技术来实现数据库部分[4]。

评语生成系统
的结构如图3。


系统共分为四个模
块和一个数据库。

数据库修改部分主
要处理添加、删除评价角度、评价点、评价等级、具体等级和评语内容以及调整它们各自的内容之间的顺序。

神经网络训练部分按照本文第2部分所述内容根据用户输入的样本对每一个评价点对应的神经网络进行训练。

学生信息输入部分提供用户输入当前所选择学生各方面表现的接口。

神经网络评语生成部分将根据其他几个部分提供的信息,按照2.3中所述方法计算出当前学生的每一个评价点对应的评语内容。

6结束语
本文介绍了用神经网络的方法来实现智能化地生成评语。

使用该方法,用户首先需要将自己需要的评价角度、评价点、评价等级、具体等级以及评语内容输入计算机,然后只需给计算机举一些例子,而不需将每个评价角度、评价点、评价等级、具体等级的对应关系都输入到计算机中,减少了教师使用时的工作量。

不仅如此,计算机还会从这些例子中发现其中的内在联系,生成评语时,计算机的表现就会更加智能化。

该系统经过老师使用,取得了较好的效果。

本文介绍的这种评语生成系统经过改进后,还可用于班务管理等,因此这种方法具有很广的应用前景。

题一神经网络
【问题背景】
人工神经网络(Artificial Neural Network)是一种新兴的具有自我学习能力的计算系统,在模式识别、函数逼近及风险评估等诸多领域有广泛的应用。

对神经网络的研究一直是当今的热门方向,兰兰同学在自学了一本神经网络的入门书籍后,提出了一个简化模型,他希望你能帮助他用程序检验这个神经网络模型的实用性。

【问题描述】
在兰兰的模型中,神经网络就是一张有向图,图中的节点称为神经元,而且两个神经
元之间至多有一条边相连,下图是一个神经元的例子:
神经元〔编号为1)
图中,X1—X3是信息输入渠道,Y1-Y2是信息输出渠道,C1表示神经元目前的状态,
Ui是阈值,可视为神经元的一个内在参数。

神经元按一定的顺序排列,构成整个神经网络。

在兰兰的模型之中,神经网络中的神
∑∈-=
E
)i ,j (i
j
ji
i U C
W C 经无分为几层;称为输入层、输出层,和若干个中间层。

每层神经元只向下一层的神经元
输出信息,只从上一层神经元接受信息。

下图是一个简单的三层神经网络的例子。

兰兰规定,C i 服从公式:(其中n 是网络中所有神经元的数目)
公式中的Wji (可能为负值)表示连接j 号神经元和 i 号神经元的边的权值。

当 Ci 大于0时,该神经元处于兴奋状态,否则就处于平静状态。

当神经元处于兴奋状态时,下一秒它会向其他神经元传送信号,信号的强度为Ci 。

如此.在输入层神经元被激发之后,整个网络系统就在信息传输的推动下进行运作。

现在,给定一个神经网络,及当前输入层神经元的状态(Ci ),要求你的程序运算出最后网络输出层的状态。

【输入格式】
输入文件第一行是两个整数n (1≤n≤200)和p 。

接下来n 行,每行两个整数,第i +1行是神经元i 最初状态和其阈值(Ui ),非输入层的神经元开始时
状态必然为0。

再下面P行,每行由两个整数i,j及一个整数Wij,表示连接神经元i、j的边权值为Wij。

【输出格式】
输出文件包含若干行,每行有两个整数,分别对应一个神经元的编号,及其最后的状态,两个整数间以空格分隔。

仅输出最后状态非零的输出层神经元状态,并且按照编号由小到大顺序输出!
若输出层的神经元最后状态均为 0,则输出 NULL。

【输入样例】
5 6
1 0
1 0
0 1
0 1
0 1
1 3 1
1 4 1
1 5 1
2 3 1
2 4 1
2 5 1
【输出样例】
3 1
4 1
5 1
解题思路
存放边的权值,再存放边的起点与终点,然后存放神经元的阀值与状态值并存放神经元的层数。

通过for i:=1 to p do begin
readln(f1,start[i],terminal[i],w[i]);读入边的起点,终点,权
layer[terminal[i]]:=layer[start[i]]+1;计算终点的层数(比起点大1) end
maxlayer:=layer[terminal[p]];求最大层数,即输出层的层数
for i:=1 to n do计算非输入层的节点i的状态值
if layer[i]>0 then begin
for j:=1 to p do
if (terminal[j]=i) and (c[start[j]]>0)与目标节点i有边相连的节点j且其状态处于兴奋时(Cj>0)才向节点I传送信号
then c[i]:=c[i]+w[j]*c[start[j]];
c[i]:=c[i]-u[i]; end; 最后输出结果。

程序
program NOIP2003_1_Network;
const
maxn=200;maxp=200;
var
i,j,n,p,maxlayer:integer;
w:array[0..maxp]of longint;
start,terminal:array[0..maxp]of byte;
u,c:array[0..maxn]of longint;
layer:array[0..maxn]of byte;
f1,f2:text;fn1,fn2,fileNo:string;
flag:boolean;
begin
write('Input fileNo:');
readln(fileNo);
fn1:='network.in'+fileNo;
fn2:='network.ou'+fileNo;
assign(f1,fn1);reset(f1);
assign(f2,fn2);rewrite(f2);
readln(f1,n,p);
for i:=1 to n do readln(f1,c[i],u[i]);
fillchar(layer,sizeof(layer),0);
for i:=1 to p do begin
readln(f1,start[i],terminal[i],w[i]);
layer[terminal[i]]:=layer[start[i]]+1;
end;
close(f1);
maxlayer:=layer[terminal[p]];
for i:=1 to n do
if layer[i]>0 then begin
for j:=1 to p do
if (terminal[j]=i) and (c[start[j]]>0)
then c[i]:=c[i]+w[j]*c[start[j]];
c[i]:=c[i]-u[i];
end;
flag:=true;
for i:=1 to n do
if (layer[i]=maxlayer) and (c[i]>0) then begin
writeln(f2,i,' ',c[i]);
flag:=false;
end;
if flag then writeln(f2,'NULL'); close(f2); end.
题四传染病控制
【问题背景】
近来,一种新的传染病肆虐全球。

蓬莱国也发现了零星感染者,为防止该病在蓬莱国
大范围流行,该国决定不惜一切代价控制传染病的蔓延。

不幸的是,由于人们尚未完
全认识这种传染病,难以准确判别病毒携带者,更没有研制出疫苗以保护易感人群。

于是,
蓬莱国的疾病控制中心决定采取切断传播途径的方法控制疾病传播。

经过WHO(世界卫
生组织)以及全球各国科研部门的努力,这种新兴传染病的传播途径和控制方法已经研究
消楚,剩下的任务就是由你协助蓬莱国疾控中心制定一个有效的控制办法。

【问题描述】
研究表明,这种传染病的传播具有两种很特殊的性质;
第一是它的传播途径是树型的,一个人X只可能被某个特定的人Y感染,只要Y不
得病,或者是XY之间的传播途径被切断,则X就不会得病。

第二是,这种疾病的传播有周期性,在一个疾病传播周期之内,传染病将只会感染一
代患者,而不会再传播给下一代。

这些性质大大减轻了蓬莱国疾病防控的压力,并且他们已经得到了国内部分易感人群
的潜在传播途径图(一棵树)。

但是,麻烦还没有结束。

由于蓬莱国疾控中心人手不够,同
时也缺乏强大的技术,以致他们在一个疾病传播周期内,只能设法切断一条传播途径,而
没有被控制的传播途径就会引起更多的易感人群被感染(也就是与当前已经被感染的人有
传播途径相连,且连接途径没有被切断的人群)。

当不可能有健康人被感染时,疾病就中止
传播。

所以,蓬莱国疾控中心要制定出一个切断传播途径的顺序,以使尽量少的人被感染。

你的程序要针对给定的树,找出合适的切断顺序。

【输入格式】
输入格式的第一行是两个整数n(1≤n≤300)和p。

接下来p行,每一行有两个整数i
和j,表示节点i和j间有边相连(意即,第i人和第j人之间有传播途径相连)。

其中节点
1是已经被感染的患者。

【输出格式】
只有一行,输出总共被感染的人数。

【输入样例】
7 6
1 2
1 3
2 4
2 5
3 6
3 7
【输出样例】
3
解题思路
type
node=array [0..maxp] of integer;节点数据类型是一维数组,其中下标为0的元素中存放该节点的孩子节点个数,下标为1的元素中存放该节点的第1个孩子的节点序号,下标为i的元素中存放该节点的第i个孩子的节点序号通过建立一个过程procedure try(i:integer);求以i为根节点的树中被感染人数的最少值,
再通过递归或回溯来解决,对于剩下的树继续用刚才的过程,直到最后输出结果。

相关文档
最新文档