當前位置:首頁 » 編程軟體 » 編譯原理集合的閉包怎麼求

編譯原理集合的閉包怎麼求

發布時間: 2022-12-31 03:37:50

1. 編譯原理,設文法G[E]如下,句型T+T * F+a的素短語是__

試給出句型T-T/F+a和T+T*F-F↑a的短語、句柄、素短語:

句型1:短語TT/F+a, T-T/F, T, T/F, a

句型T

素短語: T/F,a

句型2:短語E+T*F_F↑a, E+T*F, T*F,F↑a, a

句型T*F

素短語: T*F,a

(1)編譯原理集合的閉包怎麼求擴展閱讀

文法:以有窮的集合描述無窮的計劃的工具。

字母表:元素的非空有窮集合,其中的元素稱為符號,因此也叫符號集。

符號串:由字母表中的元素組成的任何有窮序列,串中的元素個數叫做符號串的長度,空符號串ε,長度為0。

符號串的運算:

連接-符號串x = ab,y=cd, xy = abcd

方冪-z=xn,當n = 0, z = ε,當 n = 2, z = xx

集合的閉包-∑* = ∑0 ∪∑1 ∪∑2 ∪?∪∑n

∑+ 為正閉包 = ∑1 ∪∑2 ∪?∪∑n

2. 編譯原理中,LR(0)文法的項目集規范族的I0,I1,I2,I3…………是怎麼求的~

先舉個例子:

}

將其命名為I1。

其他可類似推出。

3. 閉包的理解

集合 S 是閉集當且僅當 Cl(S)=S(這里的cl即closure,閉包)。特別的,空集的閉包是空集,X 的閉包是 X。集合的交集的閉包總是集合的閉包的交集的子集(不一定是真子集)。

閉包

在PHP、Scala、Scheme、Common Lisp、Smalltalk、Groovy、JavaScript、Ruby、 Python、Go、Lua、objective c、swift 以及Java(Java8及以上)等語言中都能找到對閉包不同程度的支持。

4. 資料庫屬性集合的閉包怎麼求

計算屬性集閉包X+的演算法如下:
輸入:X,F
輸出:
X+
迭代演算法的步驟:

選取X+的初始值為X
,即X+={X};

計算X+,
X+={XZ}
,其中Z要滿足如下條件:
YX+,且F中存在一函數依賴Y→Z。實際上就是以X+中的屬性子集作為函數依賴的決定因素,在F中搜索函數依賴集,找到函數依賴的被決定屬性Z放到X+中。

判斷:如果X+沒有變化?或X+等於U?則X+就是所求的結果,演算法終止。否則轉②。
因為U是有窮的,所以上述迭代過程經過有限步驟之後就會終止。

5. 編譯原理、離散數學中閉包是什麼意思

數學中是閉的集合,也就是集合和它的邊界的並。集合e的全體聚點並上e稱為e的閉包。關系的閉包運算時關繫上的一元運算,它把給出的關系R擴充成一新關系R』,使R』具有一定的性質,且所進行的擴充又是最「節約」的。

比如自反閉包,相當於把關系R對角線上的元素全改成1,其他元素不變,這樣得到的R』是自反的,且是改動次數最少的,即是最「節約」的。

6. 資料庫閉包怎麼計算

已知關系模式R<U,F>,其中
U={A,B,C,D,E};
F={AB→C,B→D,C→E,EC→B,AC→B}。
求(AB)F+ 。
解 設X(0)=AB;
(1)計算X(1): 逐一的掃描F集合中各個函數依賴,
找左部為A,B或AB的函數依賴。得到兩個:
AB→C,B→D。
於是X(1)=AB∪CD=ABCD。
(2)因為X(0)≠ X(1) ,所以再找出左部為ABCD子集的那些函數依賴,又得到AB→C,B→D, C→E,AC→B,
於是X(2)=X(1)∪BCDE=ABCDE。
(3)因為X(2)=U,演算法終止
所以(AB)F+ =ABCDE。

求屬性集X(X  U)關於U上的函數依
賴集F 的閉包XF+
輸入:X,F
輸出:XF+
步驟:
(1)令X(0)=X,i=0
(2)求B,這里B = { A |( V)(  W)(V→WF
∧V  X(i)∧A W)};
(3)X(i+1)=B∪X(i)
(4)判斷X(i+1)= X (i)嗎?
(5)若相等或X(i)=U , 則X(i)就是XF+ ,
演算法終止。
(6)若否,則 i=i+l,返回第(2)步。
對於演算法6.l, 令ai =|X(i)|,{ai }形成一個步長大
於1的嚴格遞增的序列,序列的上界是 | U |,因
此該演算法最多 |U| - |X| 次循環就會終止。

7. 編譯原理中的閉包是什麼意思,在資料庫中看到過閉包

閉包就是由一個屬性直接或間接推導出的所有屬性的集合,例如:
f={a->b,b->c,a->d,e->f}
由a可直接得到b和d,間接得到c,則a的閉包就是{a,b,c,d}

8. 離散數學中傳遞閉包怎麼求 通俗一點

方法:warshall法,即運行n次,每次使得MR[n][i],MR[i][n]都為1時使得MR[i][j]為1,否則還是為MR[i][j]。
傳遞閉包的計算過程一般可以用Warshell演算法描述:
For 每個節點i Do
For 每個節點j Do
If j能到i Then
For 每個節點k Do
a[j, k] := a[j, k] Or ( a[j, i] And a[ i, k] )
其中a數組為布爾數組,用來描述兩個節點是否相連,可以看做一個無權圖的鄰接矩陣。演算法過程跟Floyd很相似,三重循環,枚舉每個中間節點。不過傳遞閉包只需要求出兩個節點是否相連,而不用求其間的最短路徑長。
傳遞性:對於一個節點i,如果j能到i,i能到k,那麼j就能到k。求傳遞閉包,就是把圖中所有滿足這樣傳遞性的節點都弄出來,計算完成後,就知道任意兩個節點之間是否相連。
傳遞閉包的定義:R』是R(不具有傳遞性質)變動最少的步驟得到的具有傳遞性質的關系。
(8)編譯原理集合的閉包怎麼求擴展閱讀
演算法實例:
#include<stdio.h>
#define
N
10
int
judge(int
k,int
i,int
j)
{
if(i==1
&&
j==1){
return
1;
}
return
k;
}
void
warShall(int
MR[N][N],int
n)
{
for(int
k=0;k<n;k++){
for(int
i=0;i<n;i++){
for(int
j=0;j<n;j++){
if(i!=k
||
j!=k){
MR[i][j]=judge(MR[i][j],MR[k][j],MR[i][k]);
}
}
}
}
}
int
main()
{
int
MR[10][10];
int
mul;
scanf("%d",&mul);
for(int
i=0;i<mul;i++){
for(int
j=0;j<mul;j++){
scanf("%d",&MR[i][j]);
}
}
printf("求傳遞閉包為:\n");
warShall(MR,mul);
for(int
i=0;i<mul;i++){
for(int
j=0;j<mul;j++){
printf("%d
",MR[i][j]);
}
printf("\n");
}
return
0;
}
運行結果:
參考資料:網路-傳遞閉包

熱點內容
c語言編程與設計 發布:2025-09-18 06:09:15 瀏覽:716
2016年預演算法 發布:2025-09-18 06:07:05 瀏覽:617
什麼是廣告腳本設計 發布:2025-09-18 05:52:09 瀏覽:653
移動版我的世界伺服器 發布:2025-09-18 05:38:49 瀏覽:960
使用jsp腳本輸出九九乘法表 發布:2025-09-18 05:22:11 瀏覽:665
出行解壓 發布:2025-09-18 05:20:54 瀏覽:576
安卓手機畫線怎麼用 發布:2025-09-18 05:16:43 瀏覽:699
解壓吃蔬菜 發布:2025-09-18 05:10:04 瀏覽:820
php判斷數組個數 發布:2025-09-18 04:54:02 瀏覽:666
linuxmd5c 發布:2025-09-18 04:47:04 瀏覽:346