導航:首頁 > 源碼編譯 > lr演算法

lr演算法

發布時間:2022-02-06 06:00:22

㈠ AFLR演算法是什麼演算法

現有的無錨節點定位演算法有AFL演算法、KPS演算法和ABS演算法。AFL演算法是無錨節點、完全分布式的定位演算法,它先用啟發式原理得到一個無折疊布局,使之結構大致接近於實際布局圖,然後基於質點
彈簧模型優化演算法修正和平衡定位誤差,使對應於位置的能量函數達到最小。KPS演算法是根據事先假定的節點分組配置模型,每個節點觀察鄰節點所在組的成員節點個數,並根據預先假定的分組配置模型實現自身定位。ABS演算法則是利用節點間的通信連接關系,按順序一次計算一個未知節點坐標,不斷經修正和冗餘計算減少定位誤差。但這3種無錨節點定位方法均還存在問題。如:AFL演算法並未明確給出單跳跳距的計算方法;KPS演算法是基於一個分組布置的概率模型前提;而ABS演算法需已知4個錨節點坐標,或要事先設定4個節點的坐標。而且,這3種演算法由於各自固有的特點,都存在嚴重的誤差累加現象,故往往導致定位結果不可用。

㈡ 如何計算理想CsClr+ /r-

P1*V1/T1=P0*V0/T0.其中P0標准大氣壓,T0理想氣體溫度,T0和T1均用絕對溫度.P0和P1統一單位.求V0即可.

㈢ LR分析法的LR(0)分析表的構造

顧名思義,LR(0)分析就是LR(K)分析當K=0的情況,亦即在分析的每一步,只要根據當前的棧頂狀態 (或者說根據當前分析棧中已移進或歸約出的全部文法符號)就能確定應採取何種分析動作,而無須向前查看輸入符號。
為了給出構造LR分析表的演算法,我們首先需要引入一些非常重要的概念和術語。 由例4?6對輸入串「a,b,a」的分析過程容易看出,如果所分析的輸入串沒有語法錯誤,則在分析的每一步,若將分析棧中已移進和歸約出的全部文法符號與余留的輸入符號串拼接起來,就形成了所給文法的一個規范句型。換言之,也就是在分析的每一步,如輸入串已被掃視的部分無語法錯誤,則當前分析棧中的全部文法符號應當是某一規范句型的前綴。而且還不難看出,此種規范句型的前綴決不會含有句柄右邊的任何符號,這是因為一旦句型的句柄在棧的頂部形成,將會立即被歸約之故。以後,我們將把規范句型具有上述性質 (即不含句柄之右的任何符號)的前綴稱為它的活前綴。例如,對於文法G[L]的規范句型「E,b,a」 (見表412分析過程第5步),其句柄為「b」,棧中的符號串為「E,b」,此句型的活前綴為ε,「E」,「E,」,「E,b」等。
由此可見,一個LR分析器的工作過程,實質上也就是一個逐步產生 (或識別)所給文法的規范句型之活前綴的過程。同時,在分析的每一步,分析棧中的全部文法符號 (如果輸入串無語法錯誤)應是當前規范句型的活前綴,並且與此時的棧頂狀態相關聯。因此,我們自然會想到,如果能構造一個識別所給文法的所有活前綴的有限自動機,那麼就能很方便地構造出相應的LR分析表來。稍後我們將討論這一問題。 上面我們已經說過,在一個規范句型的活前綴中決不含有句柄右邊的任何符號。因此,活前綴與句柄的關系不外下述三種情況:
(1) 其中已含有句柄的全部符號 (句柄的最右符號即為活前綴的最右符號);
(2) 其中只含句柄的一部分符號 (句柄開頭的若干符號與活前綴最右的若干個符號一致);
(3) 其中全然不含有句柄的任何符號。
第一種情況表明,此時某一產生式A→β的右部符號串β已出現在棧頂,因此相應的分析動作應是用此產生式進行歸約。第二種情況意味著形如A→β1β2的產生式的右部子串β1已出現於棧頂,正期待著從余留輸入串中看到能由β2推出的符號串。而第三種情況則意味著期望從余留輸入串中能看到由某一產生式A→α的右部,即α所推出的符號串。為了刻畫在分析過程中,文法的一個產生式右部符號串已有多大一部分被識別,我們可在該產生式的右部的某處加上一個圓點「·」來指示位置。例如,對於上述三種情況,標有圓點的產生式分別為A→β·,A→β1·β2以及A→·α。我們把右部某位置上標有圓點的產生式稱為相應文法的一個LR(0)項目。特別,對形如A→ε的產生式,相應的LR(0)項目為A→·。顯然,不同的LR(0)項目反映了分析過程中棧頂的不同情況。下面我們就會看到,文法的全部LR(0)項目,將是構造識別其全部活前綴的有限自動機的基礎。 在作出文法的全部LR(0)項目之後,現在用它們來構造識別全部活前綴的DFA。這種DFA的每一個狀態由若干個LK(0)項目所組成的集合 (稱為項目集)來表示。下面以例4?7所給出的文法為例來說明構造此種DFA的方法。
首先,我們用I0表示這個DFA的初態,它預示著分析過程的開始,並且期待著將給定的輸入符號串逐步歸約為文法的開始符號S′。或者反過來說,我們所期待的是,從使用產生式S′→S開始,能夠逐步推導出所給的輸入符號串。因此,我們應將項目S′→·S列入狀態I0中。換言之,也就是我們期待著將要掃視的輸入串正好就是能由S推出的任何終結符號串。然而,由於不能從輸入串中直接讀出非終結符號S,因此我們也應當把項目S→·A以及S→·B列入到I0中。由於A和B同樣是非終結符號,所以又應當將A→·aAb,A→·c和B→·aBb,B→·d列入I0中。由於最後列入I0的項目中,圓點之後都是終結符號,故I0已經「封閉」,構造項目集I0宣告結束。這樣,表示初態的項目集I0由如下的項目組成:
I0: S′→·SS→·AA→·aAb
S→·BB→·aBbB→·d
A→·c
我們將項目S′→·S稱為項目集I0的基本項目。上述從項目S′→·S出發構造項目集I0的過程,可用一個對其基本項目集{S′→·S}的閉包運算,即CLOSURE({S′→·S})來表示。一般地,設I為一項目集,則構造I的閉包CLOSURE(I)的演算法如下:
(1) I中每一項目都屬於CLOSURE(I);
(2) 若形如A→α·Xβ的項目屬於CLOSURE(I),且X為非終結符號,則文法中任何X產生式的一切圓點在最左邊的項目X→·γ也都屬於CLOSURE(I);
(3) 重復上述過程,直至不再有新的項目加入CLOSURE(I)為止。
有了初態I0之後,我們來說明如何確定從I0可能轉移到的下一個狀態。設X為一個文法符號 (終結符號或非終結符號),若I0中有圓點位於X左邊的項目A→α·Xβ (其中α可以為ε),則當分析器從輸入串識別出 (即移進或歸約出)文法符號X後,分析器將進入它的下一個狀態。設此狀態為Ii,顯然Ii中必含有全部形如A→αX·β的項目,我們將這樣的項目稱為A→α·Xβ的後繼項目。對於每一文法符號X,如果存在這樣的後繼項目,則可能不止一個,設其組成的集合為J,J中的每個項目也就是項目集Ii的基本項目。因此,按照與上面構造項目集I0相類似的討論,我們就有
Ii=CLOSURE(J)
為了指明Ii是「I0關於文法符號X的後繼狀態」這一事實,我們可定義一個狀態轉移函數
GO(I,X)=CLOSURE(J)
其中,I為當前狀態,X為文法符號,J為I中所有形如A→α·Xβ的項目的後繼項目所組成的集合,而CLOSURE(J)就是項目集I (即狀態I)關於X的後繼項目集 (即後繼狀態)。例如,對於上例,我們有:
I1=GO(I0,S)=CLOSURE({S′→S·})={S′→S·}
I2=GO(I0,A)=CLOSURE({S→A·})={S→A·}
I3=GO(I0,B)=CLOSURE({S→B·})={S→B·}
I4=GO(I0,a)=CLOSURE({A→a·Ab,B→a·Bb})=
{A→a·Ab, B→a·Bb, A→·aAb, B→·aBb, A→·c, B→·d}
I5=GO(I0,c)=CLOSURE({A→c·})={A→c·}
I6=GO(I0,d)=CLOSURE({B→d·})={B→d·}
請注意,由於I0中無圓點在b之前的項目,故GO(I0,b)無定義。這樣,我們求出了I0的全部後繼項目集I1,I2,I3,I4,I5,I6。容易看出,由於I1,I2,I3,I5,I6諸項目集中的項目均無後繼項目,因此它們都沒有後繼狀態。對於項目集I4,我們再仿此求出它的後繼狀態,這些後繼狀態是:
I7=GO(I4,A)=CLOSURE({A→aA·b})={A→aA·b}
I9=GO(I4,B)=CLOSURE({B→aB·b})={B→aB·b}
此外,由於
GO(I4,a)=I4GO(I4,c)=I5GO(I4,d)=I6
故它們均不產生新的項目集。最後,再求出I7,I9的後繼項目集。它們分別是
I8=GO(I7,b)=CLOSURE({A→aAb·})={A→aAb·}
I10=GO(I9,b)=CLOSURE({B→aBb·})={B→aBb·}
由於I8和I10已無後繼項目集,所以至此我們已求出所給文法G[S]的全部項目集I0~I10,通常,我們將這些項目集的全體稱為文法G[S]的LR(0)項目集規范族,並記為
C={I0,I1,I2,I3,…,I10}
於是,我們所要構造的識別文法G[S]全部活前綴的DFA為
M=(C,V,GO,I0,C)
其中: M的狀態集也就是文法的LR(0)項目集規范族C={I0,I1,…,I10};
M的字母表也就是文法的字匯表V={S′,S,A,B,a,b,c,d};
M的映像也就是如上定義的狀態轉換函數GO;
M的終態集也是C,這表明M的每一狀態都是它的終態。
對於上述文法G[S],如上構造的識別其全部活前綴的DFA的狀態轉換圖如圖416所示。
由於狀態轉換圖416中的每一個狀態都是終態,因此在上述DFA工作的過程中,從初態I0出發,沿著有向邊所指示的方向前進,可以使DFA在所經歷的任何狀態上中止它的工作。當DFA到達某一狀態時,我們把從初態I0出發,到達該狀態所經過的全部有向邊上的標記符號依次連接起來,就得到了DFA在到達該狀態時,所識別出的某規范句型的一個活前綴。例如:當上述DFA處於初態I0時,它所識別的活前綴為ε;當M處於狀態I3時,它所識別的活前綴為B;當M處於I4時,它所識別的活前綴為aa*;而達到I9時,它所識別的活前綴為aa*B等等。需要注意的是,對那些只含有歸約項目的項目集,即M的I1,I2,I3,I5,I6,I8和I10,當M到達這些狀態時,表明活前綴中已含有相應句柄的全部符號 (即句柄已在棧頂形成),因此,我們將這些狀態稱為句柄識別狀態。特別是當M處於狀態I1時,M所識別的活前綴為S,這意味著已將所給的輸入串歸約為S,如果再按產生式S′→S歸約一步,就得到了拓廣文法G′的開始符號S′。因此,我們將狀態I1稱為「接受狀態」,它預示著對輸入串的分析已成功地完成。
對於一個給定文法G的拓廣文法G′,當識別它的全部活前綴的DFA作出之後,我們就可據此構造相應的LR(0)分析表了。然而,應當首先注意的是,用前述方法所構造的每一個LR(0)項目集,實質上表徵了在分析過程中可能出現的一種分析狀態;再根據前面對LR(0)項目的分類,項目集中的每一個項目又與某一種分析動作相關聯,因此,我們自然會提出這樣的要求,即每一項目集中的諸項目應當是相容的。所謂相容,是指在一個項目集中,不出現這樣的情況:
(1) 移進項目和歸約項目並存;
(2) 多個歸約項目並存。
如果一個文法G滿足上述條件,也就是它的每個LR(0)項目集中都不含沖突項目,則稱G為LR(0)文法。顯然,只有當一個文法是LR(0)文法時,才能構造出不含沖突動作的LR(0)分析表來。
從前面的討論和分析,我們將不難得出構造LR(0)分析表的演算法。為方便起見,我們用整數0,1,2,…表示狀態I0,I1,…,而且如表411那樣,也將GOTO子表中有關終結符號的各列並入ACTION子表相應的各列中去,此外,演算法中形如sj和rj等記號的含義同前,此演算法如下:
(1) 對於每個項目集Ii中形如A→α·Xβ的項目,若GO(Ii,X)=Ij,且X為一終結符號a時,置ACTION[i,a]=sj。但若X為非終結符號時,則僅置GOTO[i,X]=j。
(2) 若歸約項目A→α·屬於Ii,設A→α為文法的第j個產生式,則對文法的任何終結符號或句子的右界符# (將它們統一地記為a),置ACTION[i,a]=rj。
(3) 若接受項目S′→S·屬於Ii,則置ACTION[i,#]=acc。
(4) 在分析表中,凡不能按上述規則填入信息的元素,均置為「出錯」。

㈣ Linear SVM 和 LR 有什麼異同

SVM最早是二分類器,LR是回歸方法,兩者處理的問題不一樣,根本不是一個模型,,,現在擴展了SVM做回歸,稱為SVR演算法,SVR演算法和LR的本質區別在於衡量誤差標準的不同,所以擬合出來的結果不同,但都是好的擬合方法。

㈤ LR分析法的SLR(1)分析表的構造

在前面討論LR(0)分析表的構造演算法時,我們曾經指出,僅當一個文法G是LR(0)文法時,才能對它構造出無沖突動作的LR(0)分析表。然而,對於通常的程序設計語言來說,它們一般都不能用LR(0)文法來描述。例如,考慮如下「簡單分程序」的文法G[B′]:
0? B′→B3? D→d
1? B→bD;Se4? S→s;S
2? D→D;d5? S→s
相應識別其全部活前綴的DFA及LR(0)分析表如圖417及表414所示。由於在項目集I8中,既含有移進項目[S→s·;S],又含有歸約項目[S→s·],因而反映到分析表中就出現了具有多重定義的元素ACTION[8,′;′]={s10,r5},前者指明當輸入符號為「;」時應將它移進棧中,而後者則要求按第5個產生式S→s進行歸約。於是就出現了有「移進歸約」沖突的分析動作。又如,對於通常用來描述簡單表達式的文法G[E],當構造它的項目集規范族時,也會出現類似的情況。這就表明,這兩個文法都不是LR(0)文法。然而,盡管如此,對大多數程序設計語言來說,這種具有沖突項目的項目集,在整個項目集規范族中所佔的比例畢竟是很小的。因此,如果我們能設法解決出現在一個項目集中的「移進歸約」或「歸約歸約」沖突,那麼,只要對前述構造LR(0)分析表的演算法稍加修改,它仍能適用於我們現在討論的情況。
表414G[B′]的LR(0)分析表
b[]d[];[]s[]e[]#[]B[]D[]S0[]s2[8]11[7]acc2[3]s4[9]33[4]s54[]r3[]r3[]r3[]r3[]r3[]r35[][]s7[][]s8[10]66[6]s97[]r2[]r2[]r2[]r2[]r2[]r28[]r5[]r5[]r5,s10[]r5[]r5[]r59[]r1[]r1[]r1[]r1[]r1[]r110[5]s8[10]1111[]r4[]r4[]r4[]r4[]r4[]r4
仔細分析上述構造LR(0)分析表的演算法容易看出,使分析表中出現多重定義分析動作的原因在於其中的規則(2),即對於每一項目集Ii中的歸約項目A→α·,不管當前的輸入符號是什麼,都把ACTION子表相應於Ii那一行 (即第i行)的各個元素指定為rj,其中j是產生式A→α的編號。因此,如果該項目集Ii中同時還含有形如B→α·bβ或C→α·的項目,則在分析表的第i行中,必然會出現多重定義的元素。
由此可見,對於含有沖突的項目集
Ii={B→α·bβ,A→α·,C→α·}
在構造分析表時,如果能根據不同的向前符號a,將Ii中各項目所對應的分析動作加以區分,那麼就有可能使沖突得到解決。為此,對於文法中的非終結符號U,我們定義集合
FOLLOW(U)={a|S′#?*…Ua…, a∈VT∪{#}}
即FOLLOW(U)是由所有含U的句型中,直接跟在U後的終結符號或#組成的集合。現對上述項目集Ii,考察FOLLOW(A),FOLLOW(C)及{b},若它們兩兩不相交,則可採用下面的方法,對Ii中各個項目所對應的分析動作加以區分。
對任何輸入符號a:
(1) 當a=b時,置ACTION[i,b]=「移進」;
(2) 當a∈FOLLOW(A)時,置ACTION[i,a]={按產生式A→α歸約};
(3) 當a∈FOLLOW(C)時,置ACTION[i,a]={按產生式C→α歸約};
(4) 當a不屬於上述三種情況之一時,置ACTION[i,a]=「ERROR」。
一般地,若一個項目集I含有多個移進項目和歸約項目,例如
I={A1→α·a1β1, A2→α·a2β2,…,Am→α·amβm, B1→α·, B2→α·, …, Bn→α·}
則當集合{a1,a2,…,am},FOLLOW(B1),FOLLOW(B2),…,FOLLOW(Bn)兩兩不相交時,可類似地根據不同的向前符號,對狀態為i時的沖突動作進行區分。
上述用來解決分析動作沖突的方法稱為SLR(1)規則。此規則是由F?DeRemer於1971年提出的。
有了SLR(1)規則之後,只須對前述構造LR(0)分析表的演算法中的規則(2)作如下的修改:「(2)′若歸約項目A→α·屬於Ii,設A→α為文法的第j個產生式,則對於任何屬於FOLLOW(A)的輸入符號a,置ACTION[i,a]=rj」,且其餘的規則仍保持不變,就得到了構造SLR(1)分析表的演算法。
對於給定的文法G,若按上述演算法構造的分析表不含多重定義的元素,則稱文法G為SLR(1)文法。例如,對於上面的文法G[B′],它的項目集
I8={S→s·; S,S→s·}
含有沖突的項目,但由於FOLLOW(S)={e}≠{;},故沖突可用SLR(1)規則解決,與上述項目相應的分析動作分別是:
ACTION[8,;]=s10ACTION[8,e]=r5
此外,再注意到FOLLOW(B′)=FOLLOW(B)={#}和FOLLOW(D)={;},則按上述演算法為G[B′]所構造的SLR(1)分析表b[]d[];[]s[]e[]#[]B[]D[]S0[]s2[8]11[7]acc2[3]s4[9]33[4]s54[4]r35[3]s7[][]s8[10]66[6]s97[4]r28[4]s10[][]r59[7]r110[5]s8[10]1111[6]r4

㈥ AFLR演算法是什麼演算法

現有的無錨節點定位演算法有AFL演算法、KPS演算法和ABS演算法。AFL演算法是無錨節點、完全分布式的定位演算法,它先用啟發式原理得到一個無折疊布局,使之結構大致接近於實際布局圖,然後基於質點 彈簧模型優化演算法修正和平衡定位誤差,使對應於位置的能量函數達到最小。KPS演算法是根據事先假定的節點分組配置模型,每個節點觀察鄰節點所在組的成員節點個數,並根據預先假定的分組配置模型實現自身定位。ABS演算法則是利用節點間的通信連接關系,按順序一次計算一個未知節點坐標,不斷經修正和冗餘計算減少定位誤差。但這3種無錨節點定位方法均還存在問題。如:AFL演算法並未明確給出單跳跳距的計算方法;KPS演算法是基於一個分組布置的概率模型前提;而ABS演算法需已知4個錨節點坐標,或要事先設定4個節點的坐標。而且,這3種演算法由於各自固有的特點,都存在嚴重的誤差累加現象,故往往導致定位結果不可用。

㈦ LR時間常數計算

1000/10000,要100個電阻啊,電感電路為63.2%是什麼意思啊,再就是沒見過這么大的L, 1H就已經超級大了

㈧ 演算法與數據結構中樹基本操作DeleteChild(T,p,LR)中的T為什麼不是&T

我的理解是要加上&的。
因為我查課本時,就只有二叉樹的這兩個操作少了&。
而其他的,像,樹的操作是有加上&,圖的刪除,插入,修改……也是有&的,而它們的定義都是用結構體的,類型都差不多,執行功能類似的操作時應該也是一樣的,所以這里應該是課本的失誤,這和我以前做圖的實驗時,不加&就會修必不了的,只是傳值沒有傳址。

㈨ 'lr脫式計算40✘15_70

脫式計算是一個數學學科術語,即遞等式計算,把計算過程完整寫出來的運算,也就是脫離豎式的計算。
40x15-70
=600-70
=530。

㈩ 資料庫理論中的候選鍵演算法中 的4個分類。L R LR N 怎麼區分啊 求解

x = [1,6,9,13,2,8,7,4,11,5,3,10,12];

numGroups = 4; % 組的數目
xMax = max(x);
xMin = min(x);
boundries = xMin + (0:numGroups) * (xMax - xMin) / (numGroups - 1); % 組的邊界

xGroup = zeros(size(x)); % 初始化
for group = 1:numGroups
loc = (x >= boundries(group)) & (x <= boundries(group + 1)); %在這個組的書的坐標
xGroup(loc) = group;
end

結果存在xGroup里

補充:
如果要按照你的那樣輸出,可以改成這樣:
x = [1,6,9,13,2,8,7,4,11,5,3,10,12];
GroupName = ['A','B','C','D'];

numGroups = length(GroupName); % 組的數目
xMax = max(x);
xMin = min(x);
boundries = xMin + (0:numGroups) * (xMax - xMin) / (numGroups - 1); % 組的邊界

xGroup = zeros(size(x)); % 初始化
for group = 1:numGroups
loc = (x >= boundries(group)) & (x <= boundries(group + 1)); %在這個組的書的坐標
xGroup(loc) = group;
end

xGroupName = GroupName(xGroup);
for ii = 1:length(x)
fprintf('%d : %s\n', x(ii), xGroupName(ii));
end

閱讀全文

與lr演算法相關的資料

熱點內容
明茨伯格pdf 瀏覽:440
把網頁存成pdf 瀏覽:265
如何對電腦的d盤加密 瀏覽:98
刀片式伺服器怎麼連接電腦 瀏覽:79
矩陣計算java 瀏覽:231
如何把各銀行app整合 瀏覽:877
方舟生存進化手游版如何建伺服器 瀏覽:288
哪裡購買黃金app 瀏覽:661
中國聯通app優惠購功能在哪裡 瀏覽:227
dream伺服器密碼是什麼 瀏覽:222
程序員自救 瀏覽:486
cmd殺死進程命令 瀏覽:237
ipad激活伺服器地址 瀏覽:453
單片機開始直流電機壓降問題 瀏覽:18
伺服器地址失敗怎麼辦 瀏覽:147
安卓手機怎麼下載蘇聯游戲 瀏覽:132
主教的命令 瀏覽:807
php判斷變數為空 瀏覽:745
你演我猜安卓版本怎麼用 瀏覽:910
已夠app哪裡看 瀏覽:1007