Các ký hiệu và định nghĩa:
F(s, D): là tập các cây multicast (rừng –forest) cho một yêu cầu kết nối
multicast với nút nguồn s và tập các nút đích D.
V: Là tập các nút được dùng cho việc mở rộng (phát triển) cây. V’: Là tập các nút không được dùng cho việc mở rộng cây. Z: Tập các nút nguồn ảo VS.
UV: Tập các nút đích chưa được thêm vào cây F(s, D)
T: Tập các nút trong cây multicast.
P (x, y): là đường đi ngắn nhất giữa nút x và y.
d(x, y): là giá của đường đi P (x, y) được tính dựa trên số hop.
Hơn nữa, các nút trong mạng được ấn định các độ ưu tiên khác nhau như sau: Nút VS có độ ưu tiên cao nhất, theo sau là các nút MC và mức thấp nhất là các nút MI.
Với các ký hiệu và định nghĩa như trên, mã giả của thuật tốn Member-Only có thể tóm tắt như sau:
{
1: F (s, D) = ø, UV = D; UV được sắp xếp theo thứ tự không giảm theo khoảng cách của chúng đến nguồn s.
2: V = s, V’ = ø, Z = ø, T = ø
3: Xét các nút đích trong UV lần lượt. Giả sử rằng, chúng ta đang xét nút u. 4: Tìm P (v, u): v ∈V, x ∈ P (v, u): x V’
5: If tồn tại một tập các nút v: lựa chọn nút v với độ ưu tiên cao nhất 6: duv = d(u, v); dus = d (u, s)
7: IF ( P (v, u)) {
8: if (dus ≥duv )
9: Thêm mọi link e ∈ P (v, u) tới T 10: else {
11: Tìm P (w, u):w ∈Z; 12: duw = d (u, w)
13: if (dus ≥duw )
14: Thêm mọi link e ∈ P (w, u) to T; 15: else
16: Thêm mọi link e ∈ P (s, u) to T;
}
17: if (v = MI node) chuyển v từ V sang V’ 18: for x ∈ P (v, u) or P(s, u) or P (w, u):
19: if (x ≠ v (or x ≠ s or x ≠ w) && x ≠ u){ 20: if (x = MI node) chuyển x tới V’;
21: if (x = MC node) chuyển x tới V;
22: if (x = VS node) chuyển x tới Z; } 23: Chuyển u từ UV sang V 24: if (UV = ø) 26: STOP. 27: else 28: Go to (3) } 29:ELSE (! P (v, u))
30: Chuyển các nhánh từ T tới F (s, D) và chuyển về bước (2)
}
Mặc dù thuật tốn này có thể tìm được light-forest trong phần lớn các trường hợp, nhưng nó vẫn có lỗi trong một số trường hợp được mơ tả dưới đây.