没有合适的资源?快使用搜索试试~ 我知道了~
名义统一算法的实施和扩展
理论计算机科学电子笔记176(2007)25-37www.elsevier.com/locate/entcs实施名义统一Christophe Calv`esandMaribelFern'andez1,2伦敦大学国王摘要名词性匹配和统一是名词性重写的动力学基础。 Urban、Pitts和Gabbay给出了一个名义统一算法,该算法找到了名义匹配或统一问题的最一般解决方案,如果在eexiss上。最后,通过Férn′andezanddGabbay扩展了所有语法,以使用名称生成和位置。在本文中,我们首先描述了一个直接实现的名义统一算法,包括扩展,在Maude。这种实现并不高效(它在时间上是指数级的),但我们将证明我们可以通过使用termgraph来获得可行的实现。保留字:统一化、名义化、术语图1介绍名义项[10]是树,其内部节点由项构造器(也称为函数符号)标记,叶子由变量或常数标记,其中:• 变量集合被划分为原子集合a、b、c、.. . 以及一组未知数(或仅仅是变量)X、Y、Z、. 其可以用原子的交换(a b• 有一个特殊的术语--构造函数,叫做抽象(abstraction),写作[a]t,其中a是原子。在名义上,我们可以通过归纳法定义一个新鲜度关系a#t(读作使用新鲜度和交换,我们可以归纳地定义项的α-相等的概念。由于t可能包含变量,为了推导出#t,我们可能需要使用假设a#X。例如,我们将看到,1这项工作得到了EPSRC基金EP/D501016/1“名义集的计算应用”的部分资助2电邮地址:Maribel.Fernandez,Christophe. kcl.ac.uk1571-0661 © 2007 Elsevier B. V.在CC BY-NC-ND许可下开放访问。doi:10.1016/j.entcs.2006.09.02726C. 卡尔韦斯湾Fernández/Electronic Notes in Theoretical Computer Science 176(2007)25可以推断a#X,a#Ya#f(X,Y,[a]Z)a#X,b#X<$[a]X<$α[b]X名义统一是决定两个名义项是否可以通过实例化它们的变量来使它们α相等的问题。Urban,Gabbay和Pitts证明了这个问题是可判定的,并给出了一个算法,当存在一个时,该算法可以找到两个项中最一般的unier [10]。 统一算法在[10]中被指定为统一问题的一组转换规则(或重写规则)。后来,这个算法被扩展到处理包含用于名称生成的额外运算符的术语(写作a.t,意味着名称a是t的局部),以及局部约束a@t(读作扩展的名义统一算法也被定义为一组重写规则的问题。在[10]中证明,虽然名义统一算法的直接实现是指数的,但使用有向无环图可以获得多项式算法。在本文中,我们描述了名义统一化的两种实现(我们实际上实现了[4]的扩展名义统一化算法)。第一个是Maude [7]中Maude是一种基于重写逻辑的语言,由于名义统一算法被指定为一组重写规则,因此它是第一次实现的自然选择。此外,由于Maude是一种高级声明性语言,因此程序易于理解和扩展(我们首先实现了标准名义统一算法,然后将其扩展到处理名称生成)。这种直接实现并不是一种有效的实现(正如预期的那样)。众所周知,一阶统一是名义统一的一种特殊情况,如果子项不共享,则它是指数的,但如果项表示为具有最大共享的图,则它是线性的。我们用OCaml [8]编写的名义统一算法的第二个实现是基于使用termgraph而不是terms。关于一阶统一还有一个额外的复杂性,即为了获得多项式算法,我们还必须共享直到原子排列的子项。由于对置换的额外运算,我们的第二个实现不是线性的,但我们可以证明这些额外的计算是多项式的。总之,本文的贡献是:• (扩展的)名义统一化的两种实现:第一种简单但效率低下,第二种仍然是高级和多项式。我们注意到,名义统一的实际复杂性是未知的;高阶模式统一,这是一个密切相关的问题[1],是线性的[9]。• 名词术语图概念的定义,我们使用它作为我们的数据结构,用于在名词统一的第二个实现中表示名词术语和规则名词术语图和名词术语图重写理论还没有发展起来,将是未来研究的课题。C. 卡尔韦斯湾Fernández/Electronic Notes in Theoretical Computer Science 176(2007)2527相关工作在[5]中,由Fernandez、Gabbay和Mackie使用了标称统一算法(或更准确地说,标称匹配)来定义不包含任何项的新算法本文讨论的统一和匹配的实现是获得标称重写系统的评估器的第一步。名义统一在类型化算法中有实际应用(参见示例[6]),并且它是α-Prolog [3]的核心,这是使用名义方法的Prolog与绑定器的扩展α-Prolog已在OCaml中实现,包括名义统一算法的实现这种实现使用树来表示术语,并且在时间上是指数的,在空间上是二次的[2]。Pot- tier开发了另一个没有名字生成和位置约束的名义统一(私有通信)的OCaml实现,它似乎是多项式。我们的实现不依赖于副作用,也不使用Ocaml的命令式功能(除了名称生成);相反,它重写了用于表示统一问题的图形。2背景我们回顾了名词术语的语法,定义了名词统一化问题,并给出了[10,4]中描述的重写规则来解决它们。设f是函数符号f,g,.的可数集合。,X是变量X,Y,. (表示元级未知数)并且A是原子a、b、c、n的可枚举集合(表示对象级变量符号)。我们假设X,X和A是两两不相交的。交换是一对原子,我们写为(a b)。排列π是由文法π::= Id|(ab)·π。我们称Id为恒等置换。我们称一对置换π和一个可变X为一个可变或可变置换,并将其记为π·X。我们知道π是悬在X上的。我们将π中的交换列表颠倒后得到的置换记为π−1。我们用π<$πJ表示包含π中所有交换的置换,然后是πJ中的交换。名义项,或者简称为项,在X上,X由gram- mar生成:s,t::=a|π·X|(第1条, . ,sn)|[a]s|(ft)它们分别被称为原子、调节变量(或简称为变量)、元组、抽象和函数应用。 我们建议读者参考[10,4]以了解名义签名和术语的更多细节和示例。注意,当X不具有模糊性时,Id·X不具有模糊性,并且我们将不模糊地定义X。我们可以将一个多变量和多变量分别记为π·t和t[X→s]置换对项的作用由归纳法定义,28C. 卡尔韦斯湾Fernández/Electronic Notes in Theoretical Computer Science 176(2007)25basecases:Id·t=tandd(ab)·a=b (ab)·b=a (ab)·c=c(ab)·(π·X)=((ab)<$π)·X(ab)·(ft)=f(ab)·t(ab)·[n]t=[(ab)·n](ab)·t(ab)·(t1, . . ,tn)=((ab)·t1, . . ,(ab)·tn)其中c被假定为不同于a,b。替换由语法σ::= Id|[X→s] σ。我们将替换写为post fix,并将替换的合成写为t(σ<$σJ)=(tσ)σJ。我们定义项t通过用归纳法替换σ的实例化如下:tId=tt[X<$→s]σ=(t[X<$→s])σ哪里a[X<$→s]=a (ft)[X<$→s] =f(t[X<$→s])([a]t)[X<$→s] =[a](t[X<$→s])(t1,. ,t n)[X<$→s] =(t1 [X <$→s],. ,t n [X <$→s])(π·X)[X<$→s]=π·s (π·Y)[X<$→s]=π·Y请注意,置换作用于自上而下的调节变量,而替代作用于调节变量中的变量符号谓词#指定原子和项之间的新鲜度关系,α表示α-相等。约束的形式为:a#t或sαt。一组约束条件Pr称为一个问题。我们在下面给出一个检查约束的算法,该算法由一个集合指定作用于问题的简化规则,其中a,b表示任何一对不同的原子,π·Xdénotesamodededvariable,fafunctionsysymbolanddds dénotes两个排列的差异集,即,它们在其中分散的原子的集合ds(π,πJ)={n|π·n πJ·n我们将ds(π,πJ)#X写为{n #X}的缩写|n∈ds(π,πJ)}。C. 卡尔韦斯湾Fernández/Electronic Notes in Theoretical Computer Science 176(2007)2529简化问题规则:a#b,Pr=Pra#fs,Pr=a#s,Pra #(s1,.,s n),Pr = λa #s1,.,a #sn,Pr a #[b] s,Pr = a #s,Pra#[a]s,Pr=Pra#π·X,Pr=ππ-1·a#X,PrπIdaαa,Pr=Pr(l1,.,l n)nα(s1,.,s n),Pr = π1παs1,.,ln<$αs n,Pr fl<$αfs,Pr =<$l<$αs,Pr[a]lα[a]s,Pr=lαs,Pr[b]l<$α[a]s,Pr=n(ab)·l<$αs,a#l,Prπ·X<$απJ·X,Pr=nds(π,πJ)#X,Pr这些规则定义了问题的归约关系:当jPr是通过应用一个简化规则从Pr中得到的,我们将的传递闭包和自反闭包。检查约束的算法定义如下:给定一个问题Pr,我们应用规则直到得到一个不可约问题。如果只剩下形式为a#X的约束的集合Δ,则原始问题在上下文Δ中有效(即,ΔPr),否则无效。请注意,像X<$αa这样的问题因此是因为它是不可约的。然而,X可以通过实例化等于a;我们说这个约束是可以解决的。问题Pr的最一般的解是使用从上述简化规则导出的算法获得的对(Γ,σ),该算法富含实例化规则,标记有替换:π·X<$αu,Pru<$απ·X,PrX›→π-1 ·u=πPr[X<$→π-1X›→ π-1 u=πPr[X<$→π-1·u](X/∈V(u))·u](X/∈V(u))实例化规则中的条件通常称为发生检查。这样我们就得到了一个正确而完整的名义统一算法。我们参考[10]了解更多细节和示例。在[4]中扩展了名词术语的语法,使用一个操作符来模型名称生成,并使用一种新的约束来表示局部性(写作a@t)。扩展项具有A.t的形式,其中A是t中的局部名30C. 卡尔韦斯湾Fernández/Electronic Notes in Theoretical Computer Science 176(2007)25称的集合,并且t是可以包含但不是在最高层。 我们省略这里的统一规则处理和局部约束,虽然我们有C. 卡尔韦斯湾Fernández/Electronic Notes in Theoretical Computer Science 176(2007)2531执行它们。我们请读者参考[4],以将统一算法扩展到项。3在MaudeMaude是一种重写逻辑编程语言,支持等式和重写规范和编程。因此,它非常适合于实现指定为重写系统的算法。 一个Maude程序由一个签名描述(它指定了术语的语法及其排序),以及一组关于术语的等式和重写规则组成。我们建议读者参考[7],以了解有关Maude的更多详细信息。名义项可以很容易地在Maude中编码,使用名义签名加上一些簿记等式规则来模拟它们的行为。我们将证明,匹配或统一问题同样容易编码。下面我们描述我们在Maude中实现的名义统一。3.1Maude中的名词术语名义项在一个名为NOM-TERM 的函数模块中定义,该模块定义了VarSusp、NomTermStruct、NomTermRed和NomTerm的排序:排序VarSuspNomTermStructNomTermRedNomTerm。子分类Var NomTerm [ctor].op_;_:[NomTerm] [NomTerm]->[NomTerm][ctor asynchronid:unit]。op tpl:NomTerm-> NomTerm [ctor].op _(_):Fct NomTerm-> NomTermStruct[ctor]. op _^_:Perm NomTerm-> NomTerm[ctor].op abs:Atm NomTerm -> NomTermStruct [ctor].操作N:设置{AtmV} NomTerm -> NomTerm[ctor]32C. 卡尔韦斯湾Fernández/Electronic Notes in Theoretical Computer Science 176(2007)25例如,如果a,b是Maude项的排序Atm(原子);f,g是Maude项的排序Fct(函数名);X,Y,Z是变量名;p,q是Maude项的排序Perm(置换)和A,B是Maude项的排序Set{AtmV}(原子集),则:N(A,abs(a,f(a,X)N(a, g(abs(b,Y);Z))p ^ f(N(B,g(a)); q ^Z)是NomTerm类的Maude项。3.2模拟名义项的行为排序项NomTerm与名义项不完全对应。 比如说,A. B.t不是一个名义项(只有一个可以出现在一个扩展的名义项的根),并且它是π·(ft)(该permut到为了获得Maude项和名义项之间的直接对应,我们在NOM-TERM中包含了定义项的等价类的规则(Maude项将通过这些规则简化我们举一些例子如下:等式tpl(单位)=单位。等式N(空,t)= t。等式N(A,(N(B,t)= N((A,B),t)。等式id ^t = t。等式p ^ unit =单位3.3Maude中的统一规则新鲜度、局部性和α等价谓词被定义为具有以下语法的运算符:排序新鲜本地阿尔法控制器。子排序新鲜本地阿尔法<控制器。op_#_ : 设 置 {AtmV}NomTerm-> Fresh[ctor] 。 op _@_ : 设 置 {AtmV} NomTerm->Local [ctor]。op _~_:NomTerm NomTerm->Alpha [ctor].其中Fresh、Local和Alpha分别是新鲜度、局部性和α等价性约束的种类Contr就是这几类人的联合体。一个统一化问题是一组排序条件。 我们在下面给出一些定义在这些集合上的重写规则:* 一些新鲜度和地点规则eqA#(t;u)=(A#t)(A#u).C. 卡尔韦斯湾Fernández/Electronic Notes in Theoretical Computer Science 176(2007)2533EQ一 @ (t;u)=(A)@ t)(A@u).EQ一 # tpl(t)=一 # 不.EQ一 @ tpl(t)=一 @ 不.EQ一 # (f不') )=的A#t.EQ一 @ (f不') )=的A @t .等式A # abs(a,t)=(A\a)#t。等式A @ abs(a,t)=(A\a)@ t。等式A #N(B,t)=A #t。等式A @ N(B,t)=(A\B)@ t。等式A #(p ^t)=(perm-inv(p)^ A)#t。等式A @(p ^ v)=(perm-inv(p)^ A)@ v。*一些字母相等规则eq t~t=空。等式(p ^t)~ u = t ~(perm-inv(p)^ u)。等式N(A,(p ^t))~ u = N((perm-inv(p)^A),t)~(perm-inv(p)^u)。等式tpl(t)~ tpl(u)=t ~ u。eq(t ;u)~(tp;up)=(t ~ tp)(u ~ up)。eq(f'(t '))~(f '(u '))= t ~ u.等式abs(a,t)~ abs(b,u)=(b #abs(a,t))(a-b)^t)~ u)。等式v ~(p ^ v)= perm-supp(p)# v。这些Maude规则中的每一个都对应于统一算法中的一个规则(见第2节),因此实现的正确性很容易证明。请注意,为了效率,我们在约束中使用原子集最后,我们在Maude中定义了函数matching和unifying,它们取一个表示匹配的34C. 卡尔韦斯湾Fernández/Electronic Notes in Theoretical Computer Science 176(2007)25项(分别为)。统一)问题,并减少它与上述规则。为了解决名义匹配或名义统一问题,我们在Maude环境中简单地调用匹配或统一,如下面的例子所示(注意原子,函数符号和变量分别编码为a(s),f(s),v(s),其中s是原子,函数或变量的名称,即,字符串):(redmatching(N(a(“a”),abs(a(“b”),f(“f”)(a(“b”);v(“X”)~abs(a(“c”),f(“f”)(a(“c”);a(“a”)。产生以下结果:C. 卡尔韦斯湾Fernández/Electronic Notes in Theoretical Computer Science 176(2007)2535结果匹配:matching(a(“a”)@ a(“a”),v(“X”)-> a(“a”))这意味着结果是a@a,其中X被a替换。由于a@a为false,这意味着这个问题没有解决方案。统一用途:(red统一(N(a(“a”),abs(a(“b”),f(“f”)(a(“b”);v(“X”)~~~abs(a(“c”),f(“f”)(a(“c”);a(“a”).)匹配的代码是eq matching(C)= matching(C,empty)ceq matching(((v~t),C),S)= matching(subst(v,t,C),(subst(v,t, S),(v ->t)if not occurrence(v,t)ceq匹配(p ^ v)~t),C),S)=matching(subst(v,(perm-inv(p)^t),C),(subst(v,(perm-inv(p)^t),S),(v ->t)如果没有发生,则检查(v,t)。其中subst是替换,occurcheck是出现检查。这种实现简单,易于理解和维护,但在时间上是显式的(即使对于纯一阶统一问题)。在下一节中,我们将讨论另一种实现,使用图来表示术语。4使用有向非循环图上面描述的简单实现是简单的,但是效率不高。为了改进它,我们改变了用于表示术语和统一问题的数据结构:整个名义统一问题将被表示为单个有向无环图。这样我们就得到了一个多项式算法。该算法已经在OCaml(一种强类型、严格的函数式编程语言,支持命令式特性和面向对象设计;更多细节请参见[8])中实现。在本节的其余部分,我们将重点介绍遇到的主要困难和使用的技术。4.1从项到图名词术语和约束条件被归纳转化为如下图形:低,定义)。表示项T的平移(即,我们给出一个归纳的不36C. 卡尔韦斯湾Fernández/Electronic Notes in Theoretical Computer Science 176(2007)25一不A BB不≈α≈αFf不u不uf(t):(t1,. ,tn):[a].tA.t:π 测试:A#t:A@t:t=0:在统一过程中,这些图将被简化并保持在规范形式中,并遵循一组正确的、终止的和连续的规则(有一种策略可以在多项式时间内计算规范形式)。例如,其中两个标准化规则是:ˆAπBtπJt项重写规则可以自动转换为图重写规则。例如,统一规则f(t)<$αf(u)→t<$αu被转换为图重写规则:F不()t1.. .tn[]一不ˆπ不#一不@一不≈α一不ˆπ πJˆπJ不C. 卡尔韦斯湾Fernández/Electronic Notes in Theoretical Computer Science 176(2007)2537我们省略了其他规则(转换很简单)。38C. 卡尔韦斯湾Fernández/Electronic Notes in Theoretical Computer Science 176(2007)25≈αMuˆFπ不αfMuππtMNˆNˆMπn⇒π−1nn1.. .nnˆ.. .ˆπn1nnFig. 1.重新定位排列4.2置换的α-等价与重定位图表示的优点是它支持术语共享,但是为了在名义语法中获得良好的共享程度,必须小心处理排列在名义上,排列是“渴望”的,因为它们被自动推到树的叶子上,它们只在变量上挂起。为了获得更多的共享,排列应该“懒惰地”应用,但我们必须考虑到这样一个事实,即我们可能被迫应用排列,以便能够应用统一规则。在共享子项上应用置换是有问题的:幼稚的应用可能是不正确的,或者会破坏共享,如下例所示。考虑这个术语:将π应用于t给出:而f(t)变成了f(π<$t),这是不正确的。为了在不重复t的情况下解决这个问题(这对于避免指数爆炸至关重要),我们使用了一种基于重新定位项上的排列的技术,保持最大项共享。置换的重新定位操作描述于图1中。C. 卡尔韦斯湾Fernández/Electronic Notes in Theoretical Computer Science 176(2007)2539≈α#ˆˆ⇒vπvπJ不ds(π,πJ)t请注意,必须仔细控制此操作:实际上,很容易看到它可以再次应用于图1的右侧,导致非终止。我们通过允许对节点n应用重新定位来避免这个问题,只有当这使得能够应用涉及该节点的统一规则R时,并且R在重新定位后立即应用。这种技术可以推广到双射函数的条款。4.3引入图除了上面提到的重新定位技术之外,我们还需要为指针上的α等价添加特定的规则,以提高效率。例如,我们有一个额外的图重写规则对应于:J Jπ<$t<$απ< $t→ds(π,π)#t描述如下。新鲜度和局部性约束可以通过一组图重写规则在多项式时间内解决,该规则存储每个节点的新鲜原子集和局部原子集,以避免重复计算。4.4图上算法的复杂性首先,我们注意到,使用termgraphs与最大共享意味着我们永远不会重复的子图,因此算法是线性的空间。解决统一问题所需的图形重写次数是图形大小(即统一问题的大小)的多项式。然而,与基于termgraph的算法是线性的一阶统一相比,我们无法实现线性时间,因为在应用图重写规则之前,我们可能需要规范化排列并应用重新定位(但这些都是多项式运算)。5结论和今后的工作我们在Maude中实现了一个扩展名义项的名义统一算法(扩展名义统一的第一个实现),使用名义项直接编码为Maude项,统一规则为Maude规则。然后,我们讨论了一个更好的实现,使用图形来表示nomi-40C. 卡尔韦斯湾Fernández/Electronic Notes in Theoretical Computer Science 176(2007)25术语和统一问题。第二种实现方式提供了多项式标称统一算法,可从www.dcs.kcl.ac.uk/staff/maribel/papers.html名义统一的复杂性仍然是一个悬而未决的问题。高阶模式的统一,一个密切相关的问题(见[1]),是线性的[9],因此有希望名义统一也可以是线性的。这是今后工作的一个具有挑战性的领域。确认我 们 是 一 家 人 , 莫 尔 德 · 奥 奇 ·J 。 Gabbayy , IanMackie , AndrewPitts ,FrancoisPottier和Christian Urban就本文的主题进行了有趣的讨论,并为改进本文提出了有用的建议引用[1] 切尼。有关名义和高阶模式统一。2005年联合国森林论坛会议记录,第104- 119页。[2] 切尼。 私人通信,2006年。[3] J. Cheney ,C.城市。AlphaProlog :一种具有名称、绑定和alpha等价的逻辑程序设计语言. ICLP2004,p. 269-283。[4] M.Fern'andez,M.加布一个Y。不,我不想重新开始与此同时,我们也在不断地学习:Abstra t r ationvs。 我打电话给你。Proceedings of the 7th ACM-SIGPLAN Symposium on Principles and Practiceof Declarative Programming(PPDP ' 0 5 ) , L i s b o n , P o r t u g a l , A C M P r e s s , 2 0 0 5 .[5] M. Fern'andez,M. 加布岛 M ackie。没有一个新的写作系统。第六届ACM-SIGPLAN声明式编程原理与实践研讨会(PPDP '04)论文集 ,意大利, ACM 出版社,2004年。[6] N. Gauthier , F. Pottier. 编 号 问 题 : 二 阶 递 归 类 型 的 一 阶 标 准 形 式 。 Proceedings of the 2004 ACMSIGPLAN Int. Conf. on Functional Programming(ICFP'04),p. 150-161,2004.[7] Maude,http://maude.cs.uiuc.edu/[8] OCAML,http://caml.inria.fr/[9] Z.乾线性时间和空间中高阶模式的统一。Journal of Logic and Computation 6:315-341,1996.[10] C. Urban,A. M.皮茨,M. J. Gabbay,Nominal unification,Theoretical Computer Science 323,473
下载后可阅读完整内容,剩余1页未读,立即下载
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://profile-avatar.csdnimg.cn/default.jpg!1)
cpongm
- 粉丝: 4
- 资源: 2万+
上传资源 快速赚钱
我的内容管理 收起
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![](https://csdnimg.cn/release/wenkucmsfe/public/img/voice.245cc511.png)
会员权益专享
最新资源
- VMP技术解析:Handle块优化与壳模板初始化
- C++ Primer 第四版更新:现代编程风格与标准库
- 计算机系统基础实验:缓冲区溢出攻击(Lab3)
- 中国结算网上业务平台:证券登记操作详解与常见问题
- FPGA驱动的五子棋博弈系统:加速与创新娱乐体验
- 多旋翼飞行器定点位置控制器设计实验
- 基于流量预测与潮汐效应的动态载频优化策略
- SQL练习:查询分析与高级操作
- 海底数据中心散热优化:从MATLAB到动态模拟
- 移动应用作业:MyDiaryBook - Google Material Design 日记APP
- Linux提权技术详解:从内核漏洞到Sudo配置错误
- 93分钟快速入门 LaTeX:从入门到实践
- 5G测试新挑战与罗德与施瓦茨解决方案
- EAS系统性能优化与故障诊断指南
- Java并发编程:JUC核心概念解析与应用
- 数据结构实验报告:基于不同存储结构的线性表和树实现
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035111.png)
安全验证
文档复制为VIP权益,开通VIP直接复制
![](https://csdnimg.cn/release/wenkucmsfe/public/img/green-success.6a4acb44.png)