關於裁減和自連線的問題,我有自己一些認識。說出來,不對的如有時間請指出來,沒興趣的別看就行。
涉及到的名詞:
最廣範圍選取適合的k+1長度的專案------從k長度專案集中派生出來的長度為k+1的專案集,只遵循了有k-1個元素相同兩個專案合併為(k-1個相同的+兩個中不相同的兩項。)
k+1欄位中的任意k組合欄位-------從k+1長度的專案中任找k個元素構成的k長度專案。
第k層的頻繁專案集------k長度的,已確定的,支援度滿足要求的 最終專案的集合
k+1的候選專案集--------最小的,k+1長度的,不能確定每項是否支援度滿足要求的專案的集合
自連線和裁減都是出現在從第k層的頻繁專案集到第k+1的候選專案集過程中的。他們先後有順序的,先是進行自連線,然後再裁減。其實在自連線之前有一步是最廣範圍選取適合的k+1長度的專案。自連線和裁減的基本原理的依據點是相同的,就是在k+1欄位中的任意k組合字段一定是頻繁的。我們從最廣範圍進行自連線和進行裁
減都是為了去處那些k組合字段不是頻繁的對應得k+1專案。
只不過自連線是在基於字典序的較簡單檢查並去除方法,它更容易對較大的資料進行操作,速度更快。
由於自連線是按字典序的排除,我們能夠根據上段所述的原則進行否定的確認,但是對於保留下來的k+1專案,我們不能肯定在不按字典序的自連線方法中的匹配k欄位的頻繁性,所以才進行了裁減操作。它是比自連線更細緻的排除做法。
我們可以這樣理解:沒有自連線操作,我們從最廣範圍的k+1長度的專案集中直接進行裁減操作也可以最終得到k+1的候選專案集。只不過自連線使裁減的操作減輕了許多,讓他基於的資料量更小罷了,因為裁減是毫無道理的全面組合的檢查。他很耗時耗空間。
以上是我對這兩者的看法。語言能力有限,可能表述的不夠清晰。見諒。
關於陣列複製的問題和多表連線問題
陣列賦值問題 a array 1,2,3,4,5 b array a b c d e data array 如果想把 a,b新增到 陣列 data中,不可以使用 data a echo data array 1,2,3,4,5 data b echo data array a b c d e 並不是...
自連線和笛卡爾積連線的區別
原始表 co 注意 用於笛卡爾積連線的表可以是同一張表 要設定不同的別名,否則報錯 也可以是多張不同的表 笛卡爾積連線的原理是不管兩張或多張表的記錄是否匹配,均一一對應生成新的記錄,因此笛卡爾積連線不設定連線條件 如on,wher等 select from co t1,co t2 注意 同一張表用作...
關於ArrayList和Vector的自動增長
集合中常用的兩個類,arraylist和vector是兩個先進先出的堆疊。他們乙個是非同步,乙個是同步。new arraylist 或new vector 預設都是10個長度,vector構造器中也可以構造乙個適當的步長,如 vector int initialcapacity,int capaci...