人工智能搜索推技术.docx

上传人:b****5 文档编号:7263379 上传时间:2023-01-22 格式:DOCX 页数:24 大小:39.30KB
下载 相关 举报
人工智能搜索推技术.docx_第1页
第1页 / 共24页
人工智能搜索推技术.docx_第2页
第2页 / 共24页
人工智能搜索推技术.docx_第3页
第3页 / 共24页
人工智能搜索推技术.docx_第4页
第4页 / 共24页
人工智能搜索推技术.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

人工智能搜索推技术.docx

《人工智能搜索推技术.docx》由会员分享,可在线阅读,更多相关《人工智能搜索推技术.docx(24页珍藏版)》请在冰豆网上搜索。

人工智能搜索推技术.docx

人工智能搜索推技术

第三章搜索推理技术

教案内容:

本章在上一章知识表示的基础上研究问题求解的方法,是人工智能研究的又一核心问题。

内容包括早期搜索推理技术,如图搜索策略和消解原理;以及高级搜索推理技术,如规则演绎系统、产生式系统、系统组织技术、不确定性推理和非单调推理。

教案重点:

图搜索策略、消解原理、规则演绎系统、产生式系统。

教案难点:

启发式搜索、规则双向演绎系统等。

教案方法:

课堂教案为主,辅以恰当的实验。

注意结合前面所学知识表示的基础内容,将其与问题求解方法融为一体。

及时提问、收集学生学习情况。

尽量使用实例和网络课程中的多媒体素材进行讲解。

教案要求:

重点掌握一般图搜索策略和消解原理,掌握各种搜索方法和产生式系统原理,了解规则演绎系统的基本原理,对系统组织技术、不确定性推理和非单调推理等高级推理技术作一般性了解。

3.1图搜索策略

教案内容:

本节介绍图搜索的一般策略,作为各种图搜索技术的基础。

教案重点:

图搜索的一般过程、OPEN表和CLOSE表的概念。

教案难点:

OPEN表和CLOSE表的物理意义。

教案方法:

课堂教案为主,通过提问彻底弄清图搜索的基本概念。

教案要求:

重点掌握图搜索一般策略,掌握OPEN表和CLOSE表的构成及作用。

1、图搜索策略的定义

  图搜索策略可看作一种在图中寻找路径的方法。

初始节点和目标节点分别代表初始数据库和满足终止条件的数据库。

求得把一个数据库变换为另一数据库的规则序列问题就等价于求得图中的一条路径问题。

研究图搜索的一般策略,能够给出图搜索过程的一般步骤。

2、图搜索算法中的几个重要名词术语

  

(1)OPEN表与CLOSE表

  

(2)搜索图与搜索树

3、图搜索(GRAPHSEARCH)的一般过程

  

(1)建立一个只含有起始节点S的搜索图G,把S放到一个叫做OPEN的未扩展节点表中。

  

(2)建立一个叫做CLOSED的已扩展节点表,其初始为空表。

  (3)LOOP:

若OPEN表是空表,则失败退出。

  (4)选择OPEN表上的第一个节点,把它从OPEN表移出并放进CLOSED表中。

称此节点为节点n。

  (5)若n为一目标节点,则有解并成功退出,此解是追踪图G中沿着指针从n到S这条路径而得到的(指针将在第7步中设置)。

  (6)扩展节点n,同时生成不是n的祖先的那些后继节点的集合M。

把M的这些成员作为n的后继节点添入图G中。

  (7)对那些未曾在G中出现过的(既未曾在OPEN表上或CLOSED表上出现过的)M成员设置一个通向n的指针。

把M的这些成员加进OPEN表。

对已经在OPEN或CLOSED表上的每一个M成员,确定是否需要更改通到n的指针方向。

对已在CLOSED表上的每个M成员,确定是否需要更改图G中通向它的每个后裔节点的指针方向。

  (8)按某一任意方式或按某个探试值,重排OPEN表。

  (9)GOLOOP。

提问:

图搜索是针对什么知识表示方法的问题求解方法?

4、图搜索方法分析:

  图搜索过程的第8步对OPEN表上的节点进行排序,以便能够从中选出一个“最好”的节点作为第4步扩展用。

这种排序可以是任意的即盲目的(属于盲目搜索),也可以用以后要讨论的各种启发思想或其它准则为依据(属于启发式搜索)。

每当被选作扩展的节点为目标节点时,这一过程就宣告成功结束。

这时,能够重现从起始节点到目标节点的这条成功路径,其办法是从目标节点按指针向S返回追溯。

当搜索树不再剩有未被扩展的端节点时,过程就以失败告终(某些节点最终可能没有后继节点,所以OPEN表可能最后变成空表)。

在失败终止的情况下,从起始节点出发,一定达不到目标节点。

提问:

什么是图搜索?

其中,重排OPEN表意味着什么,重排的原则是什么?

3.2盲目搜索

教案内容:

介绍三种盲目搜索方法,即宽度优先搜索、深度优先搜索和等代价搜索。

教案重点:

盲目搜索的特点,宽度优先搜索。

教案难点:

等代价搜索中代价的概念。

教案方法:

以实例强化内容的学习,通过提问引导学生对三种方法的特点进行比较。

教案要求:

掌握盲目搜索的特点,比较三种盲目搜索方法的优缺点。

3.2.1宽度优先搜索

1、定义

  如果搜索是以接近起始节点的程度依次扩展节点的,那么这种搜索就叫做宽度优先搜索(breadth-firstsearch)。

2、特点

  这种搜索是逐层进行的;在对下一层的任一节点进行搜索之前,必须搜索完本层的所有节点。

3、宽度优先搜索算法

  

(1)把起始节点放到OPEN表中(如果该起始节点为一目标节点,则求得一个解答)。

  

(2)如果OPEN是个空表,则没有解,失败退出;否则继续。

  (3)把第一个节点(节点n)从OPEN表移出,并把它放入CLOSED的扩展节点表中。

  (4)扩展节点n。

如果没有后继节点,则转向上述第

(2)步。

  (5)把n的所有后继节点放到OPEN表的末端,并提供从这些后继节点回到n的指针。

  (6)如果n的任一个后继节点是个目标节点,则找到一个解答,成功退出;否则转向第

(2)步。

4、宽度优先搜索方法分析:

  宽度优先搜索是图搜索一般过程的特殊情况,将图搜索一般过程中的第8步具体化为本算法中的第6步,这实际是将OPEN表作为“先进先出”的队列进行操作。

  宽度优先搜索方法能够保证在搜索树中找到一条通向目标节点的最短途径;这棵搜索树提供了所有存在的路径(如果没有路径存在,那么对有限图来说,我们就说该法失败退出;对于无限图来说,则永远不会终止)。

5、例:

把宽度优先搜索应用于八数码难题时所生成的搜索树,这个问题就是要把初始棋局变为如下目标棋局的问题:

123

8 4

765

提问:

宽度优先搜索方法中OPEN表需要按什么方式进行操作?

A.先进后出B.先进先出

3.2.2深度优先搜索

1、定义

  在此搜索中,首先扩展最新产生的(即最深的)节点。

深度相等的节点可以任意排列。

  这种盲目(无信息)搜索叫做深度优先搜索(depth-firstsearch)。

2、特点

  首先,扩展最深的节点的结果使得搜索沿着状态空间某条单一的路径从起始节点向下进行下去;只有当搜索到达一个没有后裔的状态时,它才考虑另一条替代的路径。

3、深度界限

  为了避免考虑太长的路径(防止搜索过程沿着无益的路径扩展下去),往往给出一个节点扩展的最大深度棗深度界限。

任何节点如果达到了深度界限,那么都将把它们作为没有后继节点处理。

4、含有深度界限的深度优先搜索算法

  请同学们课后自学,并回答课后思考题。

思考题:

有界深度优先搜索方法能够保证在搜索树中找到一条通向目标节点的最短途径吗?

3.2.3等代价搜索

1、定义

  宽度优先搜索可被推广用来解决寻找从起始状态至目标状态的具有最小代价的路径问题,这种推广了的宽度优先搜索算法叫做等代价搜索算法。

2、等代价搜索中的几个记号

  起始节点记为S;

  从节点i到它的后继节点j的连接弧线代价记为c(i,j);

  从起始节点S到任一节点i的路径代价记为g(i)。

3、等代价搜索算法

  (请同学们课后认真阅读本算法,指出与宽度优先、深度优先算法有何特别之处。

4、等代价搜索方法分析

  如果所有的连接弧线具有相等的代价,那么等代价算法就简化为宽度优先搜索算法。

思考:

试比较各种盲目搜索搜索方法的效率,找出影响算法效率的原因。

3.3启发式搜索

教案内容:

启发式搜索策略概述和有序搜索。

启发式搜索弥补盲目搜索的不足,提高搜索效率。

教案重点:

启发式搜索策略、启发信息和有序搜索。

教案难点:

估价函数的设计、A*算法原理。

教案方法:

通过实例加深对原理的理解,鼓励同学扩大阅读范围。

教案要求:

掌握启发式搜索策略和估价函数的设计方法,了解A*算法原理。

3.3.1启发式搜索策略和估价函数

1、为什么需要启发式搜索

  盲目搜索效率低,耗费过多的计算空间与时间,这是组合爆炸的一种表现形式。

2、定义

  进行搜索技术一般需要某些有关具体问题领域的特性的信息,把此种信息叫做启发信息。

利用启发信息的搜索方法叫做启发式搜索方法。

3、启发式搜索策略

  有关具体问题领域的信息常常可以用来简化搜索。

一个比较灵活(但代价也较大)的利用启发信息的方法是应用某些准则来重新排列每一步OPEN表中所有节点的顺序。

然后,搜索就可能沿着某个被认为是最有希望的边缘区段向外扩展。

应用这种排序过程,需要某些估算节点“希望”的量度,这种量度叫做估价函数(evalutionfunction)。

4、估价函数

  为获得某些节点“希望”的启发信息,提供一个评定侯选扩展节点的方法,以便确定哪个节点最有可能在通向目标的最佳路径上。

  f(n)——表示节点n的估价函数值 

  建立估价函数的一般方法:

试图确定一个处在最佳路径上的节点的概率;提出任意节点与目标集之间的距离量度或差别量度;或者在棋盘式的博弈和难题中根据棋局的某些特点来决定棋局的得分数。

这些特点被认为与向目标节点前进一步的希望程度有关。

3.3.2有序搜索

1、定义

  用估价函数f来排列GRAPHSEARCH第8步中OPEN表上的节点。

应用某个算法(例如等代价算法)选择OPEN表上具有最小f值的节点作为下一个要扩展的节点。

这种搜索方法叫做有序搜索(orderedsearch)或最佳优先搜索(best-firstsearch),而其算法就叫做有序搜索算法或最佳优先算法。

  尼尔逊(Nilsson)曾提出一个有序搜索的基本算法。

估价函数f是这样确定的:

一个节点的希望程序越大,其f值就越小。

被选为扩展的节点,是估价函数最小的节点。

2、实质

  选择OPEN表上具有最小f值的节点作为下一个要扩展的节点,即总是选择最有希望的节点作为下一个要扩展的节点。

3、有序状态空间搜索算法

  

(1)把起始节点S放到OPEN表中,计算f(S)并把其值与节点S联系起来。

  

(2)如果OPEN是个空表,则失败退出,无解。

  (3)从OPEN表中选择一个f值最小的节点i。

结果有几个节点合格,当其中有一个为目标节点时,则选择此目标节点,否则就选择其中任一个节点作为节点i。

  (4)把节点i从OPEN表中移出,并把它放入CLOSED的扩展节点表中。

  (5)如果i是个目标节点,则成功退出,求得一个解。

  (6)扩展节点i,生成其全部后继节点。

对于i的每一个后继节点j:

(a)计算f(j)。

(b)如果j既不在OPEN表中,又不在CLOSED表中,则用估价函数f把它添入OPEN表。

从j加一指向其父辈节点i的指针,以便一旦找到目标节点时记住一个解答路径。

(c)如果j已在OPEN表上或CLOSED表上,则比较刚刚对j计算过的f值和前面计算过的该节点在表中的f值。

如果新的f值较小,则

  (i)以此新值取代旧值。

  (ii)从j指向i,而不是指向它的父辈节点。

  (iii)如果节点j在CLOSED表中,则把它移回OPEN表。

  (7)转向

(2),即GOTO

(2)。

4、有序搜索方法分析

  宽度优先搜索、等代价搜索和深度优先搜索统统是有序搜索技术的特例。

对于宽度优先搜索,选择f(i)作为节点i的深度。

对于等代价搜索,f(i)是从起始节点至节点i这段路径的代价。

  有序搜索的有效性直接取决于f的选择,如果选择的f不合适,有序搜索就可能失去一个最好的解甚至全部的解。

如果没有适用的准确的希望量度,那么f的选择将涉及两个方面的内容:

一方面是一个时间和空间之间的折衷方案;另一方面是保证有一个最优的解或任意解。

5、例:

八数码难题

  采用了简单的估价函数

f(n)=d(n)+W(n)

  其中:

d(n)是搜索树中节点n的深度;W(n)用来计算对应于节点n的数据库中错放的棋子个数。

因此,起始节点棋局

283

1 4

765

的f值等于0+4=4。

3.3.3A*算法

  A*算法是一种有序搜索算法,其特点在于对估价函数的定义上。

1、几个记号

  令k(ni,nj)表示任意两个节点ni和nj之间最小代价路径的实际代价(对于两节点间没有通路的节点,函数k没有定义)。

于是,从节点n到某个具体的目标节点ti,某一条最小代价路径的代价可由k(n,ti)给出。

令h*(n)表示整个目标节点集合{ti}上所有k(n,ti)中最小的一个,因此,h*(n)就是从n到目标节点最小代价路径的代价,而且从n到目标节点能够获得h*(n)的任一路径就是一条从n到某个目标节点的最佳路径(对于任何不能到达目标节点的节点n,函数h*没有定义)。

2、估价函数的定义

  定义g*为g*(n)=k(S,n)

  定义函数f*,使得在任一节点n上其函数值f*(n)就是从节点S到节点n的一条最佳路径的实际代价加上从节点n到某目标节点的一条最佳路径的代价之和,即

f*(n)=g*(n)+h*(n)

  希望估价函数f是f*的一个估计,此估计可由下式给出:

f(n)=g(n)+h(n)

  其中:

g是g*的估计;h是h*的估计。

对于g(n)来说,一个明显的选择就是搜索树中从S到n这段路径的代价,这一代价可以由从n到S寻找指针时,把所遇到的各段弧线的代价加起来给出(这条路径就是到目前为止用搜索算法找到的从S到n的最小代价路径)。

这个定义包含了g(n)≥g*(n)。

h*(n)的估计h(n)依赖于有关问题的领域的启发信息。

这种信息可能与八数码难题中的函数W(n)所用的那种信息相似。

把h叫做启发函数。

3、A*算法定义

  定义1在GRAPHSEARCH过程中,如果第8步的重排OPEN表是依据f(x)=g(x)+h(x)进行的,则称该过程为A算法。

  定义2在A算法中,如果对所有的x存在h(x)≤h*(x),则称h(x)为h*(x)的下界,它表示某种偏于保守的估计。

  定义3采用h*(x)的下界h(x)为启发函数的A算法,称为A*算法。

当h=0时,A*算法就变为有序搜索算法。

4、A*算法

  A*算法描述参考教材。

提问:

由g*(n)和g(n)的定义知g*(n)≤g(n)

A.对B.错

思考:

试比较宽度优先搜索、有界深度优先搜索及有序搜索的搜索效率,并以实例数据加以说明

3.4消解原理

教案内容:

消解原理是针对谓词逻辑知识表示的问题求解方法。

本节内容主要包括子句集的求取、消解推理的规则和消解反演问题求解方法。

教案重点:

子句集的求取、消解推理的规则和消解反演问题求解方法。

教案难点:

消解反演的思想。

教案方法:

实例讲解,注重课堂练习。

教案要求:

重点掌握子句集的求解步骤和消解反演过程,掌握消解推理的规则。

  消解原理的基础知识:

  

(1)谓词公式、某些推理规则以及置换合一等概念。

  

(2)子句:

由文字的析取组成的公式(一个原子公式和原子公式的否定都叫做文字)。

  (3)消解:

当消解可使用时,消解过程被应用于母体子句对,以便产生一个导出子句。

例如,如果存在某个公理E1∨E2和另一公理~E2∨E3,那么E1∨E3在逻辑上成立。

这就是消解,而称E1∧E3为E1∨E2和~E2∨E3的消解式(resolvent)。

3.4.1子句集的求取

1、步骤

  

(1)消去蕴涵符号

  只应用∨和~符号,以~A∨B替换A→B。

提问:

现有公式[(A→B)→B]∨C,在消去蕴涵符号后得到公式:

A.[~(A→B)∨B]∨CB.[~(A∨B)∧B]∨C

C.[~(~A∨B)∨B]∨CD.[(A∨B)∨B]∨C

  

(2)减少否定符号的辖域

  每个否定符号~最多只用到一个谓词符号上,

  并反复应用狄·摩根定律。

例如:

以~A∨~B代替~(A∧B)

以~A∧~B代替~(A∨B)

以A代替~(~A)

以(

x){~A}代替~(

x)A

以(

x){~A}代替~(

x)A

提问:

设有公式(

x)(

y){(

y)P(x,y)→(

x)Q(x,y)},在经过对变量标准化后得到公式为:

A.(

x)(

y){(

y)P(x,y)→(

y)Q(y,y)}

B.(

x)(

y){(

x)P(x,x)→(

x)Q(x,y)}

C.(

x)(

y){(

z)P(x,z)→(

q)Q(q,y)}

D.(

x)(

y){(

z)P(x,z)→(

q)Q(q,z)}

E.(

x)(

y){(

z)P(q,z)→(

q)Q(q,z)}

  (3)对变量标准化

  在任一量词辖域内,受该量词约束的变量为一哑元(虚构变量),它可以在该辖域内处处统一地被另一个没有出现过的任意变量所代替,而不改变公式的真值。

合适公式中变量的标准化意味着对哑元改名以保证每个量词有其自己唯一的哑元。

  (4)消去存在量词

  用Skolem函数代替存在的x,就可以消去全部存在量词,并写成:

y)P[g(y),y]

  从一个公式消去一个存在量词的一般规则是以一个Skolem函数代替每个出现的存在量词的量化变量,而这个Skolem函数的变量就是由那些全称量词所约束的全称量词量化变量,这些全称量词的辖域包括要被消去的存在量词的辖域在内。

Skolem函数所使用的函数符号必须是新的,即不允许是公式中已经出现过的函数符号。

例如:

y)(

x)P(x,y)被〔(

y)P(g(y),y)〕代替,其中g(y)为一Skolem函数。

  如果要消去的存在量词不在任何一个全称量词的辖域内,则用不含变量的Skolem函数即常量。

例如,(

x)P(x)化为P(A),其中常量符号A用来表示人们知道的存在实体。

A必须是个新的常量符号,它未曾在公式中其它地方使用过。

  (5)化为前束形

  把所有全称量词移到公式的左边,并使每个量词的辖域包括这个量词后面公式的整个部分。

所得公式称为前束形。

  (6)把母式化为合取范式

  任何母式都可写成由一些谓词公式和(或)谓词公式的否定的析取的有限集组成的合取。

这种母式叫做合取范式。

  (7)消去全称量词

  消去明显出现的全称量词。

提问:

对于公式(

z)(

y){(

x)P(x,y,z)∨(

q)(

w)(

e)Q(q,w,e,z),在经过消去存在量词后,正确的公式为:

A.(

y){P(B,y,A)∨(

w)Q(C,w,D,A)

B.(

y){P(B,y,A)∨(

w)Q(C,w,g(w),A),g(w)为一Skolem函数

C.(

y){P(g1(y),y,A)∨(

w)Q(g2(y),w,g3(w),A)

式中,(g1(y),g2(y)和g3(w)为Skolem函数

D.(

y){P(g1(y),y,A)∨(

w)Q(g2(y),w,g3(y,w),A)

式中,(g1(y),g2(y)和g3(y,w)为Skolem函数

  (8)消去连词符号∧

  用{A,B}代替(A∧B),以消去明显的符号∧。

反复代替的结果,最后得到一个有限集,其中每个公式是文字的析取。

任一个只由文字的析取构成的合适公式叫做一个子句。

  (9)更换变量名称

  可以更换变量符号的名称,使一个变量符号不出现在一个以上的子句中。

2、例

  将下列谓词演算公式化为一个子句集

  (

x){P(x)→{(

y)[P(y)→P(f(x,y))]∧~(

y)[Q(x,y)→P(y)]}}

3、说明

  并不是所有问题的谓词公式化为子句集都需要上述9个步骤。

对于某些问题,可能不需要其中的一些步骤。

3.4.2消解推理规则

1、消解式

  令L1为任一原子公式,L2为另一原子公式;L1和L2具有相同的谓词符号,但一般具有不同的变量。

已知两子句L1∨α和~L2∨β,如果L1和L2具有最一般合一者σ,那么通过消解可以从这两个父辈子句推导出一个新子句(α∨β)σ。

这个新子句叫做消解式。

它是由取这两个子句的析取,然后消去互补对而得到的。

2、消解式求法

  

(1)假言推理

  父辈子句P~P∨Q(即P→Q)

\         /

\       /

消解式Q

(2)合并

  (3)重言式

  (4)空子句(矛盾)

 ~P     P

 \       /

 \     /

 NIL

  (5)链式(三段论)

  即取各子句的析取,然后消去互补对。

说明:

对合并、重言式、链式(三段论)请同学们自行阅读。

 

3.4.3含有变量的消解式

1、消解式求法

  为了对含有变量的子句使用消解规则,必须找到一个置换,作用于父辈子句使其含有互补文字。

2、例子

P(x)∨Q(x)~Q[f(y)]

置换σ={f(y)/x}

      P[f(y)]

3.4.4消解反演求解过程

1、基本思想

  把要解决的问题作为一个要证明的命题,其目标公式被否定并化成子句形,然后添加到命题公式集中去,把消解反演系统应用于联合集,并推导出一个空子句(NIL),产生一个矛盾,这说明目标公式的否定式不成立,即有目标公式成立,定理得证,问题得到解决,与数学中反证法的思想十分相似。

2、消解反演

  反演求解的步骤

  给出一个公式集S和目标公式L,通过反证或反演来求证目标公式L,其证明步骤如下:

  

(1)否定L,得~L;

  

(2)把~L添加到S中去;

  (3)把新产生的集合{~L,S}化成子句集;

  (4)应用消解原理,力图推导出一个表示矛盾的空子句NIL。

  反演求解的正确性

  设公式L在逻辑上遵循公式集S,那么按照定义满足S的每个解释也满足L。

决不会有满足S的解释能够满足~L的,所以不存在能够满足并集S∪{~L}的解释。

如果一个公式集不能被任一解释所满足,那么这个公式是不可满足的。

因此,如果L在逻辑上遵循S,那么S∪{~L}是不可满足的。

可以证明,如果消解反演反复应用到不可满足的子句集,那么最终将要产生空子句NIL。

因此,如果L在逻辑上遵循S,那么由并集S∪{~L}消解得到的子句,最后将产生空子句;反之,可以证明,如果从S∪{~L}的子句消解得到空子句,那么L在逻辑上遵循S。

3、反演求解过程

  步骤:

  

(1)把由目标公式的否定产生的每个子句添加到目标公式否定之否定的子句中去。

  

(2)按照反演树,执行和以前相同的消解,直至在根部得到某个子句止。

  (3)用根部的子句作为一个回答语句。

  分析:

  答案求取涉及到把一棵根部有NIL的反演树变换为在根部带有可用作答案的某个语句的一颗证明树。

由于变换关系涉及到把由目标公式的否定产生的每个子句变换为一个重言式,所以被变换的证明树就是一棵消解的证明树,其在根部的语句在逻辑上遵循公理加上重言式,因而也单独地遵循公理。

因此被变换的证明树本身就证明了求取办法是正确的。

例:

储蓄问题

前提:

每个储蓄钱的人都获得利息。

结论:

如果没有利息,那么就没有人去储蓄钱

思考:

应用消解反演求解如下问题:

“如果无论约翰(John)到哪里去,菲多(Fido)也就去那里,那么如果约翰在学校里,菲多在哪里呢?

 

3.5规则演绎系统

教案内容:

规则演绎系统属于高级搜索推理技术,用于解决比较复杂的系统和问题。

本节介绍规则演绎系统的定义及其三种推理方法:

规则正向演绎系统、规则逆向演绎系统和规则双向演绎系统。

教案重点:

规则演绎系统的定义、正向推理和逆向推理过程。

教案难点:

双向演绎的匹配问题等。

教案方法:

课堂教案为主。

通过比较揭示正向推理、逆向推理和双向推理的特点。

教案要求:

掌握规则演绎系统的定义和

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1