鏈表屬性改進研究論文

時間:2022-03-05 04:17:00

導語:鏈表屬性改進研究論文一文來源于網友上傳,不代表本站觀點,若需要原創文章可咨詢客服老師,歡迎參考。

鏈表屬性改進研究論文

1引言

粗糙集(RoughSet,RS)理論是Z.Pawlak提出的一種處理不一致、不完整數據和不精確知識表達等各種不完備信息的數學理論[1]。其中屬性約簡是粗糙集理論中核心內容之一,現已證明是典型的NP難題[2,3]。所謂屬性約簡是指在保證信息系統分類能力或決策能力不變的條件下,刪除屬性集中的冗余屬性。屬性約簡在分類學習及分類數據挖掘中具有重要的作用,目前國內外學術界在屬性約簡方面已經做了大量研究,并得到了許多有效的算法[4~6]。文獻[4]深入分析了算法低效性的根源,給出了高效的約簡算法;文獻[5]給出了基于信息論的方法;文獻[6]利用正區域的啟發式信息給出了兩種屬性相對約簡算法;其中應用較多的是基于華沙大學數學家Skowron提出差別矩陣[7]以及在此基礎上的一些改進[9~11],由于這種基于區分矩陣方法易于解釋和計算核屬性,同時也便于約簡,該方法為屬性約簡算法提供了一種很好的思路。然而,基于區分矩陣的屬性約簡算法對對象數為n的區分矩陣大小為n(n-1)/2,不適用于大數據量的情況,所以本文給出了一種改進算法,將空間復雜度至少壓縮到|U/R|*(|U/R|-1)/2,該算法大大降低了算法的空間復雜度,適用于大數據量的情況。

2基本概念

定義1[2]:設U為一個有限的非空論域,R為U上的等價關系。等價關系R把集合U劃分為多個互不相交的子集,每一個子集稱為一個等價類,用[x]R表示,[x]R={y∈U|xRy},其中x∈U,x∈y稱為關于R的等價關系,論域U上的所有等價類的集合用U/R來表示。

定義2[2]:令R為一族等價關系,rR,如果IND(R)=IND(R-{r}),則稱r為R中不必要的;否則r為R中必要的[2],若R中任意一個等價關系r都是必要的,則稱R是獨立的,否則稱R是依賴的。

定義3[8]:設,若Q是獨立的,且IND(Q)=IND(P),則Q是等價關系族P的一個約簡。

定義4[8]:設P和Q是論域U上的等價關系,Q的P正域記作POSP(Q),定義為:

Q的P正域是U中所有根據U/P的信息準確分類到關系Q的等價關系中去的對象構成的集合。

定義5[8]:設P和Q是論域U上的等價關系,R∈P,若

POSP(Q)=POS(P-{R})(Q)

則稱R為P中Q不必要的,否則稱R為P中Q必要的。

若P中任意一關系R都是Q必要的,則稱P是Q獨立的(相對于Q獨立的)。

定義6[2]:設SP,S為P的Q約簡,當且僅當S是P的Q是獨立的子集,且POSS(Q)=POSP(Q).P的Q約簡稱為相對約簡。

定義7:區分矩陣是華沙大學數學家Skowron[7]提出的,對于系統S=(U,A),其中A=C∪D,a(x)是x在屬性a上的值,區分矩陣M為:

同時分辨矩陣中的核就是組合數為1的屬性。

3基于區分鏈表屬性約簡改進算法

區分矩陣的空間復雜度為n(n-1)/2,保存著論域中兩兩對象的可區分屬性.在論域關于屬性集劃分中,同一個等價類的對象兩兩在區分矩陣中的元素為空,而且與其他等價類的對象所構成的區分矩陣中的元素完全相同,因此從每一個等價類中只取一個對象構造的新的論域,其約簡與原來的相同,而空間復雜度最多為|U/R|*(|U/R|-1)/2.

區分矩陣Matrix的某元素Matrix[i][j],是區分對象U[i]與U[j]的條件屬性集,由于在合取吸取運算中,參數i、j并沒有實際價值,因此改用區分鏈表List來取代區分矩陣。在構造區分鏈表前,先定義存儲核屬性的變量core,可區分兩對象的條件屬性集若只有一個屬性Ri,則屬性Ri是核屬性,那么Ri存儲到變量core,在接下來的區分鏈表的構造過程中,若區分屬性集包括已經提取出來的核屬性,直接約去,不插入到區分鏈表中;否則,插入到區分鏈表的表尾。為減少區分鏈表的大小,可以在每產生一個核屬性Rj,進入變量core后,化簡區分鏈表List,若List中的元素List[k]包含屬性Rj則直接刪除元素List[k]。對應算法如下:

for(p=U;p->next!=NULL;p=p->next)

for(q=p->next;q!=NULL;q=q->next)

{

x=對象p、q的可區分屬性集;

if(|x|==1)則x進入核變量core;

elseif(x不包含核變量core中已有的任何一個核屬性)

List.Add(x);

}

在得到了核和區分鏈表后,首先,將核加入到候選約簡中;然后,統計區分鏈表中各屬性出現的次數,將出現次數最多的屬性R加入到侯選約簡中,刪除區分鏈表中出現R的所有節點,依次循環,直到區分鏈表為空,此時侯選約簡就是所求約簡。對應算法如下:

C_reduce=core;

While(1)

{

if(List=Null)break;

else

{

遍歷List,統計各條件屬性出現的次數;

選擇出現次數最多的那個屬性R;

C_reduce=C_reduce{R};

刪除List中所有出現R的的節點;4實例分析

設如下表1[12]給定的決策表,求所有約簡及核。

而應用本文給出的算法,區分線性表只有{b,c}一個元素,計算過程如下:首先得到區分屬性集{a},a進入核變量,在隨后生成的區分屬性集中只要含有a,則直接約掉,{b,c}進入區分線性表,采用啟發式算法,可得到約簡{a,b}。而基于區分矩陣的屬性約簡算法構造的區分矩陣如下:

本算法相對于傳統方法,大大減少了區分矩陣所需要的存儲空間。

5結論

近年來Rough集理論以其獨特的優勢正贏得越來越多的專家學者關注,在理論研究方面日趨成熟,并在許多領域取得了較為成功的應用,屬性約簡算法是粗糙集理論的核心內容之一,其中,區分矩陣作為屬性約簡的主要方法之一已經受到越來越多的學者關注,因此,本文深入研究分析了區分矩陣算法,基于區分線性表,提出一種改進的屬性約簡算法。