Tính chất 6.4 chỉ ra rằng trong một lời giải khả thi của bài toán luồng trên mạng tổng quát, tập hợp các cung A’ có giá trị luồng dương sẽ không là một cây khung. Đểđảm bảo tính khả thi, các cung trong A’ có thể chứa một chu trình. Ví dụ, nếu bản thân đồ thị là một chu trình W với một số nhân µ(W), một đỉnh t có khả năng cầu dương và các đỉnh khác có khả năng cầu bằng 0, bài toán có một lời giải duy nhất và tập hợp A’ các cung có luồng dương sẽ là cả chu trình. Do đó, với bài toán luồng trên mạng tổng quát, mỗi thành phần của A’ có thể chứa một chu trình. Chúng ta sẽ chỉ ra sau: bài toán luồng trên mạng tổng quát luôn có một lời giải tối ưu cho mỗi thành phần của A’ chứa đúng một chu trình (giả sử không thoái hóa). Các loại lời giải này đóng một vai trò trung tâm trong các luồng tổng quát như các lời giải cây khung đối với các luồng chi phí cực tiểu. Trong phần này, chúng ta sẽ mô tả các loại lời giải đặc biệt này và phát triển các điều kiện tối ưu cho chúng.
Gọi Ga = (Na, Ta) là một đồ thị con của G = (N, A) với Na N và T⊆ a A. Chúng ta gọi G
⊆
a là một cây tăng trưởng nếu Ta là một cây khung của tập hợp đỉnh Na cùng với một cung thêm vào (α , β) mà ta gọi là cung thêm. Một cây tăng trưởng có một đỉnh đặc biệt được chỉ rõ, gọi là gốc. Chúng ta xem các cây tăng trưởng được treo bởi gốc của nó. Hình vẽ 6.2(b) và (c) thể hiện hai cây tăng trưởng
KHOA CNTT –
ĐH KHTN
CHƯƠNG 6: LUỒNG TỔNG QUÁT
của đồ thị trên hình vẽ 6.2(a). Trong các hình vẽ này chúng ta vẽ các cung thêm bằng các đường nét đứt.
Một cây tăng trưởng chứa đúng một chu trình được tạo thành bằng cách thêm cung (α , β) vào cây Ta – {(α , β)}; chúng ta gọi chu trình này là chu trình thêm (extra cycle). Chú ý rằng chúng ta có thể xem bất cứ cung nào trong chu trình thêm là một cung thêm. Với lý do sẽ được chứng minh sau, ta gọi một cây tăng trưởng là một cây tăng trưởng tốt nếu chu trình thêm vào của nó là làm giảm hoặc làm tăng (không là một chu trình cân bằng).
Chúng ta định nghĩa một rừng tăng trưởng Gf = (N, F) với F A là tập hợp các cây tăng trưởng trong đồ thị. Chúng ta gọi một rừng tăng trưởng là một rừng tăng trưởng tốt nếu mỗi thành phần của nó là một cây tăng trưởng tốt. Hình vẽ
6.2(d) biểu diễn một rừng tăng trưởng của đồ thị trên hình vẽ 6.2(a). Chúng ta gọi các cung trong một rừng tăng trưởng là các cung thuộc rừng tăng trưởng và các cung còn lại là các cung không thuộc rừng tăng trưởng.
⊆
(a) Đồ thị gốc; (b) và (c) là hai cây tăng trưởng; (d) Rừng tăng trưởng
1 2 3 4 5 6 7 (a) 1 3 4 (b) 4 5 6 7 (c) 1 2 3 4 5 6 7 (d)
Hình 6-2 Ví dụ về cây tăng trưởng và luồng tăng trưởng
Chúng ta lưu trữ một rừng tăng trưởng trong máy tính như là một tập hợp các cây tăng trưởng. Mỗi một cây tăng trưởng là một cây và một cung thêm. Chúng ta có thể lưu trữ một cây bằng cách gắn ba chỉ số của nó với mỗi đỉnh i
KHOA CNTT –
ĐH KHTN
mạch, thread(i). Các chỉ số này cho phép chúng ta thực hiện các thao tác trên cây một cách hiệu quả.