1. 程式人生 > 其它 >【C# 資料結構與演算法】邏輯結構的二元組表示方法

【C# 資料結構與演算法】邏輯結構的二元組表示方法

二元組表示法

對於資料的邏輯結構還有一種二元組表示法,下面是二元組表示方法。

邏輯結構二元組表示方法:B = (D , R)
B——資料結構
D——資料元素的集合
R——D上二元關係的集合

  在上面這種二元組表示方法中,B就是一種資料結構, 用上面的二元組來表示B這種資料結構時,就是由資料元素的集合D和D中的二元關係的集合R組成的,通過這句話,我們可以明白:
D=di|1≤i≤n,n≥0
, 資料元素的集合

   表示的是集合D中第i個節點或資料元素,換句話說,資料元素的集合D就是由多個組成的。
這裡寫圖片描述
圖1-學生資訊表

  如圖1所示,每一個同學的資訊(學號,姓名,班號)都是一個數據元素,也就是說,資料元素的結合D包括了圖中的每一位同學,而則表示圖中的第i個同學的資訊。另外,我們知道學號是具有唯一性,且不會重複,因此我們在抽取資料集合時,可以用學號來代表每一位同學的資訊(學號,姓名,班號)。

  n表示了資料元素的集合D中節點或元素的個數,如果n為0則說明D中節點或元素個數為0,D是一個空集。


R=rj|1≤j≤m,m≥0
, D上二元關係的集合

  R代表了D上二元關係的集合,這個二元關係是表示上圖中(資料元素的集合D中)的兩兩元素之間的關係,比如:100和101這兩個資料元素之間的關係就是一個二元關係,101和102也是如此。也就是說,集合R中有多個二元關係。

   表示了集合R中的第j個二元關係,且每個關係用序偶表示。

  序偶表示方法: <script type="math/tex" id="MathJax-Element-69"> </script>, ,括號中的x,y兩個元素之間的關係就是一個二元關係。

  x為第一個元素,y為第二個元素,x為y的前驅元素,y為x的後繼元素

  對於開始元素來說,沒有前驅元素節點;對於終端元素來說,沒有後繼元素節點。

  <script type="math/tex" id="MathJax-Element-71"> </script> 代表有向關係,也就是說x為第一,y為第二;而 代表無向關係,也就是說沒有前後之分,第一和第二之分。因此我們可以知道 就是由若干個這樣的序偶來表達的。

  對於m來說,m表示了集合R中二元關係的個數,如果m = 0,表示二元關係的集合R是一個空集,R是一個空集的話就說明了集合D中元素間是獨立的,不存在任何關係,對這種關係只要瞭解即可。我們在學習資料結構時應該關注有結構的,彼此之間有關係的資料是如何組織的。


  我們根據上面所描述知道了二元組的表示方法,那麼再對於學生表的邏輯結構二元組表示,如下所示:

學生表 = (D,R)
D = {100
101102103} R = {r} r = {<100101>,<101102>,<102103>}

 



  我們從D上二元關係的集合R中可以知道它們的關係是一個有向關係,具體關係如r中的所示:在<100,101>序偶中100為第一個資料元素,101為第二個資料元素,其他以此類推,不難看出元素之間是兩兩相鄰的關係,最終它們形成的結構就是一個線性結構,如下所示:
這裡寫圖片描述
圖2-學生表的邏輯結構

2. 邏輯結構的二元組表示法

  現在我們來看一個例子,根據邏輯結構來畫出其二元組表示法。在圖3中一個矩陣,資料如下:

這裡寫圖片描述
圖3-矩陣的邏輯結構

對應的邏輯結構二元組表示如下:
B = {D,R}
D 
= {263181274510911} R = {r1 ,r2} (r1表示行關係,r2表示列關係) r1 = {<26>,<63>,<31>,<812>,<127>,<714>,<510>,<109>,<911>}(行關係) r2 = {<28>,<85>,<612>,<1210>,<37>,<79>,<14>,<411>}(列關係)

  D表示了資料元素的集合,而D的大括號中的就是資料元素,而R表示了D上二元關係的集合,也就是在二元關係的集合R中有r1和r2這兩個二元關係,其中r1代表行關係,r2代表列關係。
3. 根據二元組畫出邏輯結構

  在應用過程中,當給出二元組這種抽象的表示方法之後,我們應該做到能夠根據這種抽象的二元組表示法中給出的資訊,用邏輯結構圖畫出來,通過邏輯結構更加直觀的判斷具體屬於哪一種資料結構。
3.1 例1

二元組表示法如下:

B1 = (D,R)
D = {a,b,c,d,e,f,g,h,i,j}
R = {r}
r = { <a,b>,<a,c>,<a,d>,<b,e>,<c,f>,<c,g>,<d,h>,<d,i>,<d,j> }
  從它的二元關係的序偶 <script type="math/tex" id="MathJax-Element-11"></script> 中可以看出這是一個有向關係,那麼其二元組關係對應的邏輯結構如下圖所示:

這裡寫圖片描述
圖4-邏輯結構1

3.2 例2

二元組表示如下:

B2 = (D,R)
D = {a,b,c,d,e}
R = {r}
r = { (a,b), (a,c), (b,c), (c,d), (c,e), (d,e) }
  從它的二元組序偶(a,b)可以看出這是一個無向關係,那麼其二元組對應的邏輯結構圖表示如下圖所示:
這裡寫圖片描述
圖5-邏輯結構2

3.3 例3

二元組表示如下:
B3 = (D,R)
D = {48256457823675}
R = {r1 , r2}
r1 = {<4825>,<4864>,<6457>,<6482>,<2536>,<8275>}
r2 = {<2536>,<3648>,<4857>,<5764>,<6457>,<7582>}
  我們從R = {r1 ,r2} 來看,在二元關係的集合R中有r1,r2兩個關係,那麼這兩個二元關係對應的邏輯結構圖如下圖所示:
這裡寫圖片描述
圖6-邏輯結構3

在圖6中r1關係如藍色箭頭所示,r2關係如紅色箭頭所示。