|
因此,使用这些ECLAUS(在规则1中),我们可以自动生成来自所考虑节点的所有connectorsoutgoing的集合(在表VI中,nocontainsx和insertlast areCIAO谓词用于构建格式良好的连接器)。表中的叶子代表0-连接器(1000代表带宽的∞值)。表VI中的plusand times规则分别模拟了SEC中半环支柱osed的+和×操作。5.1:Snetwork=hhBé{0,+∞},Ni,+′,×′,h0,+∞i,h+∞,0ii,其中+′等于hmax,mini,×′等于hmin,+i,以秒为单位。5.1.最后,第2-3-4-5条规则。描述我们要在图上搜索的路线的结构。规则2表示仅由一个叶节点组成的路由,规则3表示由一个连接器加上一个根节点在连接器的目的地节点的列表中的子路由组成的路由,规则4是规则5的终止,规则4需要管理不相交的子路由与列表[XXs]的连接;显然,当目标节点的列表[XXs]包含不止一个节点时,这意味着我们正在寻找一个多播路由。当我们组合seconnectors或tree(规则2和规则5),我们使用时间规则将它们的成本组合在一起。在规则5中,append是一个CIAO谓词,用于在查询请求组播路由时将目标节点的多个链路连接在一起。最后给出了SEC中的谓词。5.1收集查询的所有结果,并在plus预测的帮助下返回选择的解决方案。5.1是用Prolog c lausesinside规则5来建模的,当组成多个1-连接器时,请注意tab中附加pr e dic的复杂性。VI可以通过使用di hensed erence列表来减少。但是,请参见SEC。8的复杂缺点。使程序在Ta B。VI尽可能易读,我们省略了两个谓词:排序谓词,需要对连接器和树的destinationnodes列表中的元素进行排序(否则,查询路由(n,[n,n,n,N],[B,C])和路由(n,[n,n,n,n],[B,C])将产生di-erent结果),如果rea可使用di-erent连接器(否则,例如树n,[n,n,n8,n9]将是一个有效的r-erult),则使用交集谓词来检查同一节点的多次出现是否出现在目标节点的同一列表中。为了解决与或g问题,用prologlanguage执行查询就足够了:例如,如果我们要计算所有根在nand且具有as的树的代价,则节点将表示所有接收者(即。{n,n,n,n}),ACM期刊名称,卷。V,No.N,20yy。软约束逻辑编程的单播和组播QoS路由。25表六。表示Fi G中加权与或图问题的最佳结果树的CIAO程序。9b.:-模块(multicastnetwork,_,_)。:-use_module(库(聚合))。:-use_module(library(lists)).max([X,Y],X):-X>=y.max([X,Y],Y):-X<Y.min([X,Y],X):-X<Y.min([X,Y],Y):-X>=Y.乘以([B1,C1],[B2,C2],[B,C]):-min([B1,B2],B),C是(C1+C2)。加上([],最好的,最好)。加上([[B,c]休息],[B1,C1],Max):-Max([B,b1],BMax),min([C,C1],DMin),加上(休息,[BMax,dmin],最大)。路由(X,Y,BestQoS):-findall([B,C],树(X,Y,[B,C]),L1),plus(L1,[0,100],BestQoS)。树(X,[X],[B,C]):-leaf([X],[B,C])。树(X,Z,[B,C]):-connector(X,W,[B1,C1]),treeList(W,Z,[B2,C2]),times([B1,C1],[B2,C2],[B,C]),treeList([],[],[100,0])。树ist([XXs],Z,[B,(X,Z1,[B1,C1]),附加(Z1,Z2,Z),树列(Xs,Z2,[B2,C2]),次([B1,C1],[B2,C2],[B,C])。边(n0,[n1],[10,1])。边(n1,[n2],[3,6])。边(n1,[n3],[7,2])。边(n1,[n4],[10,3])。边(n2,[n4],[1,5])。边(n3,[n5],[2,9])。边(n3,[n6],[3,5])。边(n4,[n5],[4,2])。边(n4,[n9],[5,3])。边(n5,[n7],[8,1])。边(n5,[n8],[7,1])。叶([n0],[100,0])。
|