TẠP CHÍ KHOA HỌC, Đại học Huế, Số 58, 2010 SIÊU ĐỒ THỊ KẾT NỐI ĐỐI TƯỢNG – MỘT CÁCH TIẾP CẬN TRONG TỐI ƯU HOÁ CÂU TRUY VẤN ĐỐI TƯỢNG LỒNG NHAU Lê Mạnh Thạnh Đại học Huế Hoàng Bảo Hùng
Trang 1TẠP CHÍ KHOA HỌC, Đại học Huế, Số 58, 2010
SIÊU ĐỒ THỊ KẾT NỐI ĐỐI TƯỢNG – MỘT CÁCH TIẾP CẬN
TRONG TỐI ƯU HOÁ CÂU TRUY VẤN ĐỐI TƯỢNG LỒNG NHAU
Lê Mạnh Thạnh Đại học Huế Hoàng Bảo Hùng
Sở Thông tin và Truyền thông tỉnh Thừa Thiên Huế
TÓM TẮT
Trong cơ sở dữ liệu hướng đối tượng, truy vấn đối tượng lồng được sử dụng khá thường xuyên Các cấu trúc lồng được biểu diễn ở biểu thức điều kiện của truy vấn dưới hai dạng: các truy vấn con lồng hoặc biểu thức đường dẫn có chứa các kết nối ẩn là các tân từ lồng nhau trong mệnh đề Đối với truy vấn lồng, khi phân tích ước lượng chi phí của biểu thức đại
số lồng nhau, thì việc định giá sẽ cho kết quả chi phí không hiệu quả Vì vậy, phương pháp của chúng tôi đưa ra trong bài báo này là làm phẳng các truy vấn con trong các truy vấn có cấu trúc lồng nhau sử dụng siêu đồ thị kết nối đối tượng, phương pháp này sẽ làm tăng tính hiệu quả cho việc thực thi xử lý truy vấn trên cơ sở dữ liệu hướng đối tượng
1 Mở đầu
Để xử lý các tân từ lặp (lồng), Cho W [3] đưa ra phương pháp ước lượng chi phí phụ thuộc tỷ số giữa số các đối tượng của lớp bắt đầu trong biểu thức đường dẫn và tổng số các đối tượng của lớp, dựa trên mối quan hệ nhiều @ nhiều giữa các lớp Tỷ số này là một trong những tham số lựa chọn trong quá trình thiết kế CSDL vật lý
Đối với là các truy vấn con lồng, Cluet S [4] đề xuất phương pháp tối ưu theo hai bước Đầu tiên, biến đổi các truy vấn ở mức ngôn ngữ nhằm xử lý một cách hiệu quả các biểu thức con chung và các truy vấn con độc lập Sau đó, các truy vấn được biên dịch thành các biểu thức đại số lồng nhau và áp dụng phương pháp biến đổi đại số Tuy nhiên, khi phân tích sự ước lượng đối với các vòng lặp lồng nhau trong các biểu thức đại số, chúng ta nhận thấy biểu thức kết quả có chi phí là không hiệu quả Do đó, phương pháp chúng tôi đề xuất trong phần sau sẽ giải quyết vấn đề xử lý cho các truy vấn con lồng trong giai đoạn “làm phẳng” các truy vấn lồng nhau bằng phương pháp rút gọn siêu đồ thị kết nối đối tượng, giúp cho phép định giá hiệu quả hơn
Trong bài báo này, xuất phát từ ý tưởng biểu diễn và tối ưu hóa các truy vấn bằng siêu đồ thị của Ullman J.D [9] và Han [5], chúng tôi đưa ra khái niệm siêu đồ thị kết nối đối tượng để biểu diễn các truy vấn đối tượng trong OQL, đặc biệt là xử lý các truy vấn lồng Từ đó, đề xuất các thuật toán ước lượng các siêu cạnh và thuật toán thu gọn siêu đồ thị kết nối đối tượng
Trang 22 Biểu diễn truy vấn đối tượng bằng ký pháp siêu đồ thị
Trước hết, một cách hình thức chúng ta xét định nghĩa của khái niệm siêu đồ thị kết nối đối tượng như sau [6]:
Định nghĩa Siêu đồ thị kết nối đối tượng là một bộ sáu = (CH, VH, EH, LH,
sH, lbH), trong đó:
(i) CH là tập hữu hạn các lớp tham gia trong truy vấn
(ii) VH là tập hữu hạn các nút
(iii) LH là tập hữu hạn các nhãn
(iv) EH = EC ∪ EQ @ tập các siêu cạnh (hữu hạn), trong đó EC, EQ là tập các siêu cạnh biểu diễn các lớp đối tượng và các thành phần của truy vấn
(v) sH: VH → EH là ánh xạ khởi tạo các siêu cạnh từ tập các nút
(vi) lbH: EH → LH là hàm gán nhãn cho siêu cạnh, sao cho ∀ e ∈ EH lbH(e) ∈
LH
Ví dụ 2.1 Xét siêu đồ thị kết nối đối tượng biểu diễn truy vấn sau:
select A from c 1 , c 2 , c 3 where c 1 A = c 2 F and (c 1 A + c 1 B > c 3 D) and (c 3 E ≤ c 2 G)
B
D
Hình 1 Siêu đồ thị kết nối đối tượng của ví dụ 2.1
Trong đó, ta có:
CH = {c 1 , c 2 , c 3 }, c 1 = (A, B, C), c 2 = (G, H) và c 3 = (D, E, F) là các lớp đối tượng
VH = {A, B, C, D, E, F, G, H}: tập các nút, LH = {e 1 , e 2 , f 1 , f 2 , “head”}: các nhãn
EH = EC ∪ EQ, với EC gồm tập các siêu cạnh được gán nhãn {e 1 , e 2 , e 3} biểu
diễn các lớp c 1 , c 2 , c 3 Và EQ có các siêu cạnh biểu diễn lần lượt là kết quả của truy vấn,
biểu thức điều kiện truy vấn tương ứng có nhãn là {f 1 , f 2 , “head”} Đối với điều kiện
“c1.A = c2.F” chúng ta thực hiện “trộn” hai nút đặt nhãn là “A”
Từ định nghĩa (trong các phần sau, siêu đồ thị kết nối đối tượng được gọi tắt là
Trang 3siêu đồ thị), chúng ta sử dụng ký pháp siêu đồ thị để biểu diễn cho truy vấn OQL như sau:
@ Tập các nút của siêu đồ thị là tập các thuộc tính thuộc các lớp tham gia truy
vấn Mỗi thuộc tính của lớp c i được biểu thị bằng một nút Nếu hai lớp c i và c j đều có
cùng một số các thuộc tính kế thừa từ một siêu lớp nào đó, hoặc chúng cùng kế thừa tất
cả các thuộc tính từ một siêu lớp, chúng ta vẫn tạo riêng cho các thuộc tính này các nút khác nhau
@ Các siêu cạnh của siêu đồ thị được tạo thành từ các biểu thức điều kiện và
các lớp c i:
Xét biểu thức điều kiện trong mệnh đề where, các biểu thức điều kiện được chia
ra các dạng sau:
A θ B, θ ∈ { < , ≤ , ≠ , > , ≥}, (1.3)
A θ B, θ ∈ {⊂ , ⊆ , ≠ , ⊃ , ⊇} (1.4)
trong đó, A, B là thuộc tính của các lớp và a là hằng
Các siêu cạnh là các tập với số lượng nút hữu hạn, biểu diễn lớp, ta gọi là
siêu cạnh đối tượng và được vẽ bằng một đường khép kín bao quanh các
nút của siêu cạnh Gán nhãn là tên của lớp
Đối với mỗi biểu thức điều kiện dạng (1.3) hoặc (1.4), chúng ta sẽ tạo ra một siêu cạnh chứa các thuộc tính có mặt trong biểu thức Những siêu
cạnh này được gọi là siêu cạnh điều kiện và chúng được biểu thị bằng
đường nét chấm khép kín
Điều kiện có dạng (1.1) sẽ trở thành nhãn “A = a”của nút biểu diễn thuộc
tính tương ứng
Biểu thức điều kiện có dạng A = B (1.2), với A, B là các thuộc tính trong hai lớp (có thể cùng là những thuộc tính được kế thừa từ một siêu lớp nào đó), thì chọn một thuộc tính đại diện và đặt nhãn chung là tên của một trong hai thuộc tính
@ Nếu có hai điều kiện trên cùng một tập thuộc tính, chúng ta phải đặt nhãn riêng cho mỗi siêu cạnh để có thể phân biệt được chúng
@ Các thuộc tính trong mệnh đề select được bao trong một đường liền khép kín và
gán nhãn là “head”, gọi là siêu cạnh đỉnh Siêu cạnh đỉnh tương ứng với một lớp @ kết quả
của truy vấn
Trang 4@ Siêu cạnh kết nhập chứa các thuộc tính tham gia trong các biểu thức chứa các
phép toán {IS, IN, UNION, FORALL, EXIST, } của các truy vấn con lồng nhau, được vẽ bằng đường nét rời khép kín Các siêu cạnh kết nhập được gán nhãn tương ứng với tên các phép toán
Truy vấn đơn chỉ có một khối select from where (SFW); Truy vấn lồng trong
OQL có nhiều hơn một khối SFW Truy vấn lồng biểu diễn bằng một siêu đồ thị được xây dựng từ các siêu đồ thị của các khối SFW đơn và liên kết với nhau qua các siêu cạnh kết nhập
Chúng ta biểu diễn hình thức lược đồ đối tượng S = (s 1 , …, s n ), s i là các lớp
trong S và truy vấn đối tượng QE = (s 1 , …, s m , R, p 1 , …, p k ), với s i (i = 1,…, m) là các lớp tham gia truy vấn, R là lớp/kiểu kết quả của truy vấn và p j (j = 1, …, k) là các biểu
thức điều kiện ở mệnh đề where
Thuật toán 2.1: Khởi tạo siêu đồ thị của truy vấn đối tượng (không chứa truy
vấn lồng)
Vào: Lược đồ đối tượng S = (s 1 , …, s n)
Truy vấn đối tượng QE = (s 1 , …, s m , R, p 1 , …, p k)
Ra: Siêu đồ thị
Phương pháp:
(1) SC := ∅ //tập chứa các siêu cạnh đối tượng của siêu đồ thị
(2) V := (s 1 , …, s m)
(3) for s i ∈ V do
(4) if (s i là siêu lớp gốc) then //không kế thừa từ các siêu lớp khác
(5) Khởi tạo siêu cạnh đối tượng e = sH({s i}) và nhãn lbH(e)
(6) else if (s i là lớp kế thừa đơn hoặc kế thừa bội) then
(7) Xử lý trường hợp xung đột về tên với các thuộc tính kế thừa
(8) Khởi tạo lớp s i ’ chứa các thuộc tính của lớp và thuộc tính
kế thừa
(9) Khởi tạo siêu cạnh đối tượng e = sH({s i ’}) và gán nhãn
lbH(e)
(10) SC := SC ∪ e
(11) Khởi tạo siêu cạnh đỉnh h = sH({R}) và lbH(h) = “head”
(12) SC := SC ∪ h
Trang 5(13) SD := ∅ //tập chứa các siêu cạnh điều kiện của siêu đồ thị
(14) for p i ∈ (p 1 , …, p k) do
(15) if (p i có dạng (3.3) và (3.4)) then
(16) Khởi tạo siêu cạnh điều kiện f = sH({p i})
(18) else Gán nhãn cho nút lbH(e) = “= a”
(19) := SC ∪ SD
Từ định nghĩa, chúng ta khẳng định thuật toán 2.1 là đúng đắn và độ phức tạp
tính toán của thuật toán là O(n 2 ), với n là số lớp tham gia trong truy vấn
Trên cơ sở của thuật toán 2.1, chúng ta xây dựng thuật toán khởi tạo siêu đồ thị biểu diễn các truy vấn lồng Với các bước xác lập siêu đồ thị đơn, chúng ta tạo siêu đồ thị kết quả từ các liên kết của các siêu đồ thị đơn với các siêu cạnh kết nhập
Thuật toán 2.2: Khởi tạo siêu đồ thị của truy vấn lồng OQL
Vào: Lược đồ đối tượng S = (s 1 , …, s n)
Truy vấn QE = (s 1 , …, s m , R, p 1 , …, p k ), tập TT ⊆ {is, in, union, diff, forall, exists}
là tập các toán tử tham gia trong mệnh đề where của truy vấn QE.
Ra: Siêu đồ thị
Phương pháp:
(2) for (mỗi truy vấn con QE i trong truy vấn QE) do
(3) Khởi tạo siêu đồ thị i với QE i (Thuật toán 2.1)
(5) for (mỗi toán tử t i ∈ TT) do
(6) Khởi tạo siêu cạnh kết nhập g có nhãn là t i chứa siêu cạnh đỉnh của siêu
đồ thị ở vế phải của t i và thuộc tính ở vế trái của t i
Ví dụ 2.2 Tìm tên của tất cả sinh viên ở cùng thành phố với giảng viên có tên là
“Huế”
define SinhVien as p1
select (p1.name)
from p1, p2 GiangVien
Trang 6where p1.tpho = p2.tpho AND p2.hoten = “Hu4”
Truy vấn trong ví dụ 2.2 chứa các kết nối dựa trên giá trị (p1.tpho = p2.tpho)
và được gán nhãn là “tpho”, trộn2 nút có nhãn là “tpho”.
Hình 2.2 Siêu đồ thị biểu diễn cho ví dụ 2.2
Ví dụ 2.3 Xét truy vấn cho biết tên các cán bộ giảng viên (cbgv) ở khoa có ngân
sách được cấp lớn hơn 250 (đơn vị tính: triệu đồng) và có mức lương lớn hơn hoặc bằng 2.4
select e.hoten from GiangVien as e where e.luong >= 2.4
AND e.makhoa IN ( select s.makhoa
from Khoa as s where s.ngansach > 250) Siêu đồ thị của ví dụ 2.3 được khởi tạo như sau: Các siêu cạnh đối tượng biểu diễn các lớp GiangVien và Khoa Đối với các siêu cạnh đỉnh, chúng ta có hai siêu cạnh đỉnh:
e.hoten @ siêu cạnh đỉnh (kết quả của truy vấn), s.makhoa @ siêu cạnh đỉnh của khối SFW
lồng Hai siêu cạnh điều kiện e.luong >= 2.4, s.ngansach > 250 và siêu cạnh kết nhập
e.makhoa được gán nhãn là IN
Hình 2.2 Biểu diễn siêu đồ thị của ví dụ 2.3
hoten tpho …
… …
hoten
“Huế”
GiangVien
SinhVien
Trang 73 Phương pháp ước lượng siêu đồ thị
3.1 Ước lượng các siêu cạnh [6]
Biểu diễn hình thức cho siêu đồ thị của truy vấn hướng đối tượng là dãy các sự kiện: = (E 1 , E 2 , , E n ), trong đó, các sự kiện E i có thể là siêu cạnh đối tượng, siêu
cạnh điều kiện hoặc siêu cạnh kết nhập
Lớp dẫn xuất thu được sau tác động của một sự kiện E j được ký hiệu là Lớp_dẫn_xuất(E 1 , , E j ), trong đó E 1 phải là siêu cạnh đối tượng (trường hợp siêu đồ
thị chỉ có một siêu cạnh thì nó phải là siêu cạnh đối tượng)
Thủ tục Ướclượngsiêucạnh nhận vào lớp dẫn xuất thu được sau tác động của sự kiện E j@1 và sự kiện E j , kết quả của thủ tục là lớp dẫn xuất với sự kiện E j trong
Procedure Ướclượngsiêucạnh(Lớp_dẫn_xuất(E 1 , , E jd1 ), E j )
Vào: Lớp_dẫn_xuất(E 1 , , E jd1 ) và sự kiện E j
Ra: Lớp_dẫn_xuất(E 1 , , E j)
Phương pháp:
(1) Khởi tạo, Ướclượngsiêucạnh(E 1 ) cho kết quả: Lớp_dẫn_xuất(E 1 ) = c 1,
trong đó, c 1 là lớp tương ứng với siêu cạnh đối tượng E 1
(2) if (E j là một điều kiện hoặc siêu cạnh điều kiện) then
Lớp_dẫn_xuất(E 1 , , E j) = σF (Lớp_dẫn_xuất(E 1 , , E jd1))
với F là biểu thức điều kiện tương ứng với E j
(3) if (E j là siêu cạnh đối tượng của lớp C j có giao với siêu đồ thị) then
Lớp_dẫn_xuất(E 1 , , E j ) = Lớp_dẫn_xuất(E 1 , , E jd1)) C j
(4) if (E j là siêu cạnh đối tượng không giao với siêu đồ thị) then
Lớp_dẫn_xuất(E 1 , , E j ) = Lớp_dẫn_xuất(E 1 , , E jd1 )) × C j
Trong ví dụ 2.2, S = (GiangVien, SinhVien), ta có:
Lớp_dẫn_xuất(GiangVien, SinhVien) = Lớp_dẫn_xuất(GiangVien) SinhVien
Khi tất cả các siêu cạnh trong siêu đồ thị được ước lượng bằng cách tác động
lần lượt các sự kiện để thu được các lớp dẫn xuất Lớp dẫn xuất kết quả sẽ được chiếu lên tập các thuộc tính trong siêu cạnh đỉnh, đây chính là câu trả lời của truy vấn
Thuật toán 3.1: Ước lượng các siêu cạnh của siêu đồ thị
Vào: Siêu đồ thị = (E 1 , E 2 , , E n ), R là siêu cạnh đỉnh
Ra: Lớp kết quả của truy vấn.
Trang 8Phương pháp:
(1) Biểu diễn siêu đồ thị = (E 1 , E 2 , , E n ), với dãy các sự kiện E i
(2) for j = 1 to n do
(3) Call Ướclượngsiêucạnh(Lớp_dẫn_xuất(E 1 , , E jd1 ), E j)
(4) Bổ sung Lớp_dẫn_xuất(E 1 , , E j) vào
(5) = ππR (Lớp_dẫn_xuất(E 1 , , E n))
Mệnh đề Thuật toán 3.1 dừng sau hữu hạn bước và cho câu trả lời đúng
Chứng minh
Rõ ràng số các sự kiện trong là hữu hạn, do đó thuật toán 3.1 sẽ dừng sau n lần tác động các sự kiện E j lên các lớp dẫn xuất, n là số sự kiện trong siêu đồ thị
Để chứng minh rằng thuật toán 3.1 trả về câu trả lời đúng của truy vấn đã cho, chúng ta chứng minh quy nạp như sau:
Trường hợp cơ sở: n = 1, thì = (E 1 ), E 1 là siêu cạnh đối tượng, ta có:
= ππR (E 1) = ππR (C 1) – là câu trả lời của truy vấn
Giả sử lớp dẫn xuất thứ k thu được sau tác động của sự kiện E k là ước lượng của
k siêu cạnh trong siêu đồ thị (Lớp_dẫn_xuất(E 1 , ., E k)) Mặt khác, lớp dẫn xuất thu
được ở bước thứ k lại là đầu vào cho bước ước lượng thứ (k+1), do đó nếu k = n thì sau
n bước ước lượng siêu cạnh, ta có lớp dẫn xuất thu được là:
Ướclượngsiêucạnh(Lớp_dẫn_xuất(E 1 , , E nd1 ), E n ) = Lớp_dẫn_xuất(E 1 , ,
E n)
Sau đó chiếu lên siêu cạnh đỉnh ta có kết quả của truy vấn:
= ππR (Lớp_dẫn_xuất(E 1 , , E n)) – kết quả của truy vấn
Ví dụ, xét truy vấn trong ví dụ 2.2, chúng ta có dãy sự kiện trong siêu đồ thị = (GiangVien, hoten = “Hu4”, SinhVien)
Áp dụng thuật toán 3.1, ta có các bước ước lượng như sau: (1) Khởi tạo lớp dẫn xuất tương ứng với siêu cạnh đối tượng GiangVien, (2) Áp dụng điều kiện chọn “hoten
= “Hu4” trên siêu cạnh đối tượng GiangVien, (3) Ước lượng siêu cạnh đối tượng SinhVien, là kết nối truyền thống dựa trên giá trị, (4) Chiếu lớp dẫn xuất thu được sau phép kết nối lên siêu cạnh đỉnh (hoten)
Chúng ta có thể nhận thấy từ ví dụ 2.4, trật tự sắp xếp các siêu cạnh trong sẽ cho dãy các bước ước lượng khác nhau, tương ứng với sự sắp thứ tự các phép toán được thực thi Đây sẽ là một trong các tham số xác định không gian tìm kiếm các phương án thực thi truy vấn
Trang 9Trong thuật toán 3.1, chúng ta chưa xử lý cho trường hợp các siêu cạnh kết nhập, tức là, xét các siêu đồ thị biểu diễn các truy vấn đối tượng lồng Các truy vấn lồng có thứ tự thực hiện các truy vấn con theo trật tự từ “trong ra ngoài”, nghĩa là, các truy vấn
ở cấp sâu nhất sẽ được thực hiện trước Giả sử siêu đồ thị biểu diễn các truy vấn đối tượng lồng được mô tả môt cách hình thức là một dãy các sự kiện chúng ta xây dựng thuật toán thu gọn siêu đồ thị = (E 1 , E 2 , …E i , EA j , E i+1 , …, E k , …), trong đó E i là
các siêu cạnh đối tượng hoặc siêu cạnh điều kiện, EA j là các siêu cạnh kết nhập
Chúng ta mở rộng thuật toán 3.1 bằng việc xử lý các siêu cạnh kết nhập như sau:
Trước hết, chúng ta ước lượng tất cả các siêu cạnh E l (l = i + 1, …, k) sau siêu cạnh kết nhập EA j , và không mất tính tổng quát chúng ta giả sử E k là siêu cạnh cuối cùng được
ước lượng (trước khi ước lượng siêu cạnh kết hợp EA j ) Sau đó, tác động sự kiện EA k
đối với lớp dẫn xuất thu được sau khi tác động sự kiện thứ E k (EA j’) Như vậy, được viết lại là = (E 1 , E 2 , …E i , EA j’, E i+1 , …, E k , EA j , …), EA j là lớp dẫn xuất kết quả sau khi ước lượng siêu cạnh kết nhập
Thuật toán 3.2: Thu gọn siêu đồ thị
Vào: Siêu đồ thị = (E 1 , E 2 , …E i , EA j , E i+1 , …, E k , …), R là siêu cạnh đỉnh
Ra: Lớp kết quả của truy vấn.
Phương pháp:
(1) Biểu diễn siêu đồ thị = (E 1 , E 2 , …E i , EA j , E i+1 , …, E k, …)
(2) i := 1
(3) repeat
(4) if (EA j là siêu cạnh kết nhập) then
(7) Bổ sung Lớp_dẫn_xuất(E l , , E k) vào trước EA j
(8) else Call Ướclượngsiêucạnh(Lớp_dẫn_xuất(E 1 , , E id1 ), E i) (9) Bổ sung Lớp_dẫn_xuất(E 1 , , E i) vào
(10) inc(i)
(11) until (ước lượng tất cả các siêu cạnh trong )
(12) = ππR (Lớp_dẫn_xuất(E 1 , , E k, …))
Từ mệnh đề trên, chúng ta suy ra thuật toán 3.2 là dừng và cho kết quả là câu trả lời đúng Độ phức tạp tính toán của thuật toán 3.2 có thời gian đa thức
Trang 103.2 Không gian tìm kiếm của truy vấn
Các phương án thực thi truy vấn trong không gian tìm kiếm được xét trên các khả năng lựa chọn, ước lượng của các lớp và các siêu cạnh thuộc siêu đồ thị Từ đó, với các thuật toán ước lượng và thu gọn siêu đồ thị (thuật toán 3.1 và 3.2), chúng ta sẽ xây dựng không gian tìm kiếm các phương án thực thi truy vấn như sau (thuật toán 3.3)
Chúng ta dùng tập các danh sách với các phần tử chứa các thành phần của siêu
đồ thị, sau đó lần lượt duyệt tập các danh sách tương ứng để xác định các phương án
Thuật toán 3.3 Không gian tìm kiếm của truy vấn
Vào: Siêu đồ thị
Ra: Không gian tìm kiếm với tổng số các phương án thực thi truy vấn
Phương pháp:
(1) Sắp xếp các lớp, các siêu cạnh đối tượng, điều kiện và các siêu cạnh kết
nhập vào tập danh sách {L 1}
// Bước 1: Ước lượng các siêu cạnh điều kiện và siêu cạnh kết nhập
(2) for mỗi danh sách L 1 do
(3) for mỗi siêu cạnh E do
(4) if E là siêu cạnh kết nhập then
(5) Bổ sung EA j vào L 1 sau siêu cạnh cuối cùng E k
//Thuật toán 3.2
(6) else if E là siêu cạnh điều kiện then
toán 3.1
(8) Kết quả thu được là danh sách {L 1 ’}
// Bước 2: Uớc lượng các siêu cạnh đối tượng
(9) for mỗi danh sách L 1 ’ do
(10) for mỗi siêu cạnh đối tượng do
(11) Thực hiện các ước lượng với các siêu cạnh điều kiện tương ứng
(12) Kết quả lưu ở danh sách {L 2}
// Bước 3: Ước lượng các kết nối
(13) for mỗi danh sách L 2 do