第四章 Advanced Regional Diagonal Tuple Space Search
4.5 流程的說明
4.5.1 Marker 生成的流程
由於單方向的衝突情形必須生成聯集規則,對我們的演算法來說聯集規則與 一般的規則無異,所以在處理正方形區域外之演算法選擇與 marker 生成之前,我 們必須先將聯集規則的資訊儲存於 hash table 的欄位中。我們將整個生成流程以 下列的步驟來表示:
Step 1:將規則根據 source specified bit 之個數及 destination specified bits 之個 數儲存於相對應的 hash table 之欄位中。
Step 2:生成 marker:先對每各規則所對應的對角線 tuple 生成 marker,並往 左上方亦生成 marker 直至區域之上界為止。此時尚不需對規則所對應之對角線之 marker 填入來源資訊。
Step 3:對每個規則以及對角線上的規則及 marker 檢查是否可能發生單方向 衝突,若是,則生成一個聯集規則,並依據其位置生成 marker。
Step 4:對配置於非對角線 tuple 之規則生成 marker 至相對應的 link-list header tuple,並填入來源資訊,如果已被填入,判斷何者距離對角線位置較近,由較近 者的位置取代來源資訊,而較遠者生成 marker 至較近者位置。
Step 5:對每個對角線 tuple 上的規則或 marker 做檢查已填入來源資訊,判 斷是否為單方向,若是則找出最遠的 link-list header tuple 為其來源資訊。
Step 6:利用遞迴方式動態決定每個小區域之演算法
Step 7:若對角線 tuple 的規則或 marker 之來源資訊為雙方向時,則分別向 右及向下尋找出相對應的兩個規則(包含單方向衝突所產生的聯集規則),並對此 二規則的聯集位置所對應的對角線位置生成 marker,並向左上方生成 marker 直至 造成雙方向衝突的 tuple 為止,並更改來源資訊。
Step 3.1:根據位於 tuple(d,d)且能與封包相符合的規則或 marker 所填入的 來源資訊(x,y),前往 tuple(x,y)檢查是否符合,若是則進行 tuple(x,y)所對應小
區域間的搜尋,並將最終找到的規則或 marker 所記錄的最佳符合規則與目前所記 錄的最佳符合規則做比較選出最高優先權者,若最終找到的規則或 marker 無任何 來源資訊,則回傳此最佳符合規則;若最終找到的規則或 marker 填入來源資訊,
則前往 Step 4。
Step 3.2:若找到最深 tuple(d,d)時 Dim 仍為 Null,再檢察一次 tuple(d+1,
d+1)以記錄 Dim。根據位於 tuple(d,d)且能與封包相符合的規則或 marker 所填入 的來源資訊(k,count),以及 Dim 的紀錄來做判斷:若 Dim 紀錄為 Destination 時,
則由 tuple(k,(32-k)/2)進行搜尋以判定該小區域是否可能存在符合的規則;若 Dim 紀錄為 Source 時,則由 tuple((32-k)/2,k) 進行搜尋以判定該小區域是否可能存在 符合的規則。並將最終找到的規則或 marker 所記錄的最佳符合規則與目前所記錄 的最佳符合規則做比較選出最高優先權者,若最終找到的規則或 marker 無任何來 源資訊,則回傳此最佳符合規則;若最終找到的規則或 marker 填入來源資訊,則 前往 Step 4。
Stpe 4:根據來源資訊型別做判斷,若該位置為 tuple(m,n):
z Case 1:若為二元搜尋型別(l,r)時,則根據 m,n 來做二元搜尋的範圍:
若 n>m,則由 tuple(m,l)至 tuple(m,r)間進行二元搜尋;若 n<m,則由 tuple(l,m)至 tuple(r,m)間進行二元搜尋,最後將最終找到的規則或 marker 所記錄的最佳符合規則與目前所記錄的最佳符合規則做比較選出 最高優先權者,若無填入來源資訊時則回傳之,即可結束整個搜尋流 程,否則重複進行 Step 4 的判斷。
z Case 2:若為線性搜尋型別(m,next)或(next,n)時,則跳往該來源資訊 所指引位置做檢查,將找到的規則或 marker 所記錄的最佳符合規則與目 前所記錄的最佳符合規則做比較選出最高優先權者,再根據所記錄的來 源資訊重複進行 Step 4 的判斷,直至整個 tuple 搜尋失敗或是所搜尋到 的規則或 marker 未填入來源資訊為止,最後將最佳符合規則回傳之,即 可結束整個搜尋流程。