導航:首頁 > 源碼編譯 > 編譯原理閉包函數怎麼求

編譯原理閉包函數怎麼求

發布時間:2023-02-08 15:39:09

① 資料庫閉包怎麼計算

已知關系模式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| 次循環就會終止。

② 資料庫閉包怎麼算的

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

例:設關系R(A,B,C, D,E, G)有函數依賴集F={AB→C, BC→AD,D→E, CG→B},求AB的閉包。

解:首先從AB出發,令X={A,B},由於函數依賴AB→C左邊的所有屬性都在X中,所以可以把右邊的C添加到X中,這時X={A, B,C},其次考慮函數依賴BC→AD,左邊B,C均在X中,右邊D不在X中,將其添加到X中,此時X={A,B,C,D}。

再考慮函數依賴D→E,同理可將E添加到X中,此時x={A,B,C,D,E}。上述方法再不能向X中添加屬性,所以得到{A,B} +={A,B,C,D, E}。


(2)編譯原理閉包函數怎麼求擴展閱讀:

使用閉包的注意點

1,由於閉包會使得函數中的變數都被保存在內存中,內存消耗很大,所以不能濫用閉包,否則會造成網頁的性能問題,在IE中可能導致內存泄露。解決方法是,在退出函數之前,將不使用的局部變數全部刪除。

2,閉包會在父函數外部,改變父函數內部變數的值。所以,如果你把父函數當作對象(object)使用,把閉包當作它的公用方法(Public Method),把內部變數當作它的私有屬性(private value),這時一定要小心,不要隨便改變父函數內部變數的值。

閱讀全文

與編譯原理閉包函數怎麼求相關的資料

熱點內容
Linux目錄inode 瀏覽:142
手機上如何用文件夾發郵件 瀏覽:424
暢課app密碼忘了怎麼找回 瀏覽:75
怎麼編譯idea 瀏覽:229
如何查看伺服器是否做了熱備 瀏覽:999
硬碟同名文件夾病毒 瀏覽:727
百度雲不解壓下載 瀏覽:560
新冠疫情app怎麼用 瀏覽:971
拆二代程序員 瀏覽:398
河北壓縮空氣冷干機生產廠家 瀏覽:580
圖論與java 瀏覽:577
程序員寫代碼告白初音 瀏覽:740
sshpdf 瀏覽:539
windows調用linux 瀏覽:594
如何查找本地伺服器名稱 瀏覽:819
linux文件只讀屬性 瀏覽:586
VNAS技術加密 瀏覽:131
python編程電話費計算話費 瀏覽:463
c編譯文件怎麼改名 瀏覽:626
pdf轉格式軟體 瀏覽:875