Ta giả sử có m thành viên muốn gia nhập vào nhóm G1. m thành viên này lập thành một nhóm TGDH là G2 (bằng cách sử dụng thuật toán khởi tạo khóa TGDH ban đầu). Sau đó G2 sẽ hợp nhất với G1. Nếu có nhiều hơn 2 nhóm k>2 thì đơn giản ta chỉ cần thực hiện quá trình hợp nhất 2 nhóm k-1 lần.
Với hai nhóm G1 và G2, đầu tiên ta giả sử hai cây của hai nhóm là T1 và T2. T2 sẽ tham gia vào T1. Việc của chúng ta là tìm điểm chèn cây T2. Nếu hai cây có cùng chiều cao thì chúng ta đơn giản chỉ cần nối T2 với nút gốc của T1. Ngƣợc lại khi hai cây không cùng chiều cao ta sẽ tìm nút ngoài cùng bên phải của T1, nút mà khi T2 tham gia vào T1 sẽ không làm tăng chiều cao của cây T1. Nếu không có nút nhƣ thế tồn tại thì điểm chèn sẽ là nút gốc.
Hình 2.22: Quá trình hợp nhất giữa hai nhóm của giao thức TGDH Quá trình tính toán lại khóa sẽ theo thuật toán sau:
[+] Đối với các nút “bảo đảm” của các cây Msi , i=1...m:
Chọn lại khóa và tính bkeys của mình.
Tính lại toàn bộ khóa trên đƣờng dẫn từ nó đến nút gốc (0,0)
Gửi broadcasts cho toàn bộ các thành viên của cây mới toàn bộ các khóa bkeys trên đƣờng dẫn từ nút “bảo đảm” đến nút gốc (0,0) bao gồm cả bk(0,0).
Đối với các thành viên trong nhóm:
Cập nhật lại cây và xác định nút “bảo đảm” mới.
Loại bỏ toàn bộ khóa trên đƣờng dẫn từ nút “bảo đảm” đến nút gốc (0,0).
[+] Ta lặp lại quá trình tính nhƣ sau cho đến khi tất cả các nút bảo đảm tính đƣợc khóa của nhóm:
Mỗi nút “bảo đảm” Msi với 1≤i≤t :
Tính toàn bộ khóa trên đƣờng dẫn khóa xa nhất có thể.
Gửi broadcasts cho toàn bộ các thành viên trong nhóm giá trị bkeys của các nút trên đƣờng dẫn từ nút “bảo đảm” đến nút gốc (0,0).
[+] Tất cả các thành viên sau khi nhận đƣợc giá trị bkeys ở bƣớc trên sẽ tính lại khóa của nhóm.
Ví dụ : Giả sử có hai nhóm nhƣ hình trên.
[+] Cả hai nút “bảo đảm” M5 và M7 sẽ chọn lại khóa và tính bkeys của chúng. Sau đó M5 sẽ tính k(1,1), bk(1,1), k(0,0) và bk(0,0) trong cây cũ của M5. Còn M7
sẽ tính k(0,0) và bk(0,0) trong cây cũ của M7.
Tiếp theo M5 và M7 sẽ gửi broadcast cho toàn bộ thành viên của cây mới giá trị bkeys mà cả hai vừa tính toán. Tất cả các thành viên sẽ cập nhật cây mới và chọn M2 làm nút “bảo đảm” mới.
[+] Tiếp theo tất cả các thành viên sẽ loại bỏ lƣu trữ khóa của các nút trên đƣờng dẫn từ nút M2 đến nút gốc (0,0) của cây mới.
M2 sẽ tính k(2,1), bk(2,1), k(1,0), bk(1,0) và k(0,0). Sau đó M2 sẽ gửi broadcast cho toàn bộ thành viên giá trị bkeys mà nó vừa tính toán.
[+] Với các giá trị bkeys nhận đƣợc M1 sẽ tính k(2,0), k(1,0), và k(0,0). M6 và M7 sẽ tính k(1,0) và k(0,0). Còn các thành viên M3, M4, M5 chỉ cần tính k(0,0).
Bảng 2.18: Bảng tính độ phức tạp tính toán quá trình hợp nhất các nhóm trong TGDH