BÀI TẬP LỚN TOÁN RỜI RẠC Trường Đại học Bách Khoa Hà Nội Khoa Công nghệ thông tin ®å ¸n m«n häc Môn Toán Rời Rạc Đề tài Các thuật toán đa thức tìm luồng cực đại trong mạng Giáo viên hướng dẫn PGS TS N[.]
Trường Đại học Bách Khoa Hà Nội Khoa Công nghệ thụng tin đồ án môn học Mụn :Toỏn Ri Rc Đề tài: Các thuật tốn đa thức tìm luồng cực đại mạng Giáo viên hướng dẫn: PGS TS Nguyễn Đức Nghĩa Nhóm sinh viên thực hiện: 1.Nguyễn Thị Việt Phương 2.Nguyễn Xuân Quý 3.Trần Đức Quý 4.Nguyễn Đức Quỳnh Lớp Tin2-K46 ĐH BK HN Hµ Néi, 11 - 2003 7.1 LỜI GIỚI THIỆU Thuận toán đường dẫn tăng cường loại thảo luận chương công cụ để giải vấn đề luồng cực đại mạng Nó khơng đảm bảo để giải vấn đề luồng cực đại với dung lượng liệu đầy đủ mà cịn cung cấp cho công cụ để thiết lập nên định lý luồng cực đại,phân đoạn cực tiểu.Và giúp cho việc phát triển ứng dụng kết hợp cách hữu ích lí thuyết luồng mạng Tuy nhiên chúng tơi ghi chương 6,thuật toán đường dẫn tăng cường loại có hạn chế lớn tính tốn: (1) Ước tính phức tạp tính tốn tình xấu 0(nmU) khơng phù hợp với vấn đề liên quan tới dung lượng lớn (2) từ khía cạnh lý thuyết,trước vấn đề có dung lượng liệu khơng hợp lý,thuật tốn dẫn tới giải pháp không tối ưu Những hạn chế cho thấy thuật tốn khơng hồn tồn ưu việt lý thuyết Khơng may mắn thực tế Trước vấn đề rộng cần nhiều thời gian để giải Được thúc đẩy mong mỏi phát triển phương thức lối kinh nghiệm phức tạp tính tốn tình tồi tệ đã cải tiến,trong chqoqng nghiên cứu vài điểm chọn lọc từ thuật toán đường dẫn tăng cường cực đại.Chúng giới thiệu nghiên cứu lớp khác thuật toán,được biết đến giải thuật “preflow-push algorithms’ mà gần lên phương pháp có sức mạnh lý thuyết tính tốn để giải vấn đề luồng cực đại Trước mơ tả thuật tốn phân tích chúng mọt cách chi tiết,chúng ta để ý tới hạn chế lý thuyết đa thức luồng cực đại giớ thiệu giải pháp chung thuật toán đường dẫn tăng cường dược sử dụng mà xem xét chương này.Lý thuyết luồng phân huỷ (deccompression) chí nguyên tắc thiết kế thuật tốn đường dẫn tăng cường có khả tìm luồng cực đại không m tăng cường.Giả sử x luồng tối ưu x luồng khởi tạo đó.(Có thể luồng Khơng).Theo tính chất tối ưu(Xem phần 3.5),chúng ta thu x từ x theo trình tự (1) với tối đa m tăng cường dường dẫn tăng cường từ điểm S tới điểm T cộng thêm luồng (2)xung quanh cung tăng cường.Nếu ta định nghĩa x’ véctơ luồng có từ x0 việc chuyển luồng dọc theo đường dẫn tăng cường,x’ mọt luồng cực đại(bởi luồng bao quanh cung không chuyển giá trị luồng tới diểm đích nữa.Sự quan sát thể khả lý thuyết tìm luồng cực đại mà sử dụng nhiều m tăng cường.Không may,để ứng dụng lý lẽ tối ưu hoá luồng này,chúng ta cần phải biết luồng cực đại.Kết khơng có thuật toán phát triển giấy tờ đạt phạm vi lý thuyết m tăng cường.Tuy nhiên cải thiện cách đáng kể giới hạn số lần tăng cường mà thuật toán đường dẫn tăng cường địi hỏi Bằng cách giảm số lần tăng cường hay chí loại bỏ tất chúng?Trong chương xem xét cách tiếp cận bản: Sự gia tăng theo chiều rộng cửa luồng Kết hợp chứng minh để hạn chế đường dẫn tăng cườngmà sử dụng bước Chúng ta giảm nhẹ cân bước cụ thể thuật tốn,và khơng địi hỏi thay đổi luồng phải tăng cương điểm nguồn kết thúc điểm đích Chúng ta xem xét cách tiếp cận.Như dã thấy chương 6,thuật toán đường dẫn tăng cường chậm thực khối lượng lớn tăng cường,mỗi tăng cường lại chứa nhiều luồng nhỏ.Sự quan sát cho thấy cách tự nhiên để cải thiện thuật toán đường dẫn tăng cường:Làm tăng luồng theo đường dẫn với dung lượng dư lớn tối đa.Trong phần 7.3 rằng:thuật toán thực thi 0(m logm) tăng cường.Một thay đổi thuật toán làm tăng luồng theo đường đãn với dung lượng đủ lớn (nhưng không cần thiết phải dung lượng dư toói đa) thực 0(m logU) tăng cường dễ dàng thực hơn.Chúng ta gọi thuật toán Thuật tốn tỷ lệ dung lượng(Capacity Scaling) đựoc mô tả chit iết phần 7.3 Một cách khác để thực phát triển thuật toán đường dẫn tăng cường phát triển hướng tiếp cận có cách thực hoàn toàn tách rời liệu dung lượng cung dựa vào lí lẽ cho kết hợp nó.Một hương tiếp cận cách hạn chế việc lựa chọn đường dẫn tăng cường xét theo khía cạnh đó.Theo hướng tiếp cận cúng ta ln làm tăng lồng theo đường dẫn ngắn từ điểm nguồn tới điểm đích.,định nghĩa mơt đường truyền ngắn đường truyền trực tiếp mạng dư bao gồm số lượng cung.Nếu làm tăng luồng theo đường truyền ngắn nhất,thì độ dài đường dẫn ngắn giữ nguyên tăng thêm.Hơn vòng m tăng cường,chiều dài đường dẫn ngắn đảm bảo tăng lên(Chúng ta chứng minh xác nhận phần 7.4) Thuật toán “Preflow-Push” dùng cách thử thứ mà xác định:Chúng ta tìm đường dẫn ngắn thuật toán đường dẫn tăng cường ngắn không đưa luồng theo đường ẫn từ điểm nguồn điểm đích.Thay vào chúng đưa luồng theo cung đơn lẻ.Chiến lược “nội địa hoá” với qui tắc khéo léo khác cho phép thuật toán đạt việc nâng cao tốc độ,điều mà không phép toán đường dẫn tăng cường đạt được.Chúng ta nghiên cứu thuật toán phần 7.6 tới phần 7.9 Khái niệm Nhãn khoảng cách khái niệm quan trọng dùng để tiến hành thuật toán đường dẫn tăng cường ngắn thuật toán “PreflowPush”mà xem xét chương này.Do trước miêu tả thuật toán này,chúng ta bắt đầu xem xét chủ đề 7.2NHÃN KHOẢNG CÁCH Một hàm khoảng cách d N->Z U{0} với dung tích cịn dư rij hàm ssó từ tập nút tới tập hợp số ngun khơng âm.Ta nói hàm khoảng cách có giá trị với luồng x thoả mãn điều kiện sau: d(t)=0; (7.1) d(i)=n mạng dư khơng có đường dẫn trực tiếp từ điểm nguồn đến điểm kết thúc(điểm đích) Tính đắn quan sát dựa thực tế d(s) giớ hạn thấp chiều dài đường dẫn ngắn từ s tới t mạng dư;do khơng đường dẫn trực tiếp có nhiều (n-1) cung.Vì d(s)>=n khơng có đường dẫn trực tiếp từ nút s tới nút t mạng dư Sau đay chúng tơi giớ thiệu thêm kí hiệu.Với nút i ,d(i) chiều dài đường dẫn ngắn từ nút i tới nút t mạng dư ta nói nhãn khoảng cách xác.Ví dụ hình 7.1 nút nút nguồn ,nút nút đích d(0,0,0,0) véctơ hợp lý biểu diễn nhãn khoảng cách d(3,1,2,0) vactơ nhãn khoảng cách chuẩn.Chúng ta xác định nhãn khoảng cách chuẩn cho tất nút 0(m) thời gian cách thực phép kiểm tra ngược độ rộng mạng ,bắt đầu từ nút đích(Xem phần 3.4) 1 2 Cung chấp nhận đường dẫn chấp nhận Nếu cung ( i, j ) mạng dư thoả mãn điều kiện d(i)=d(j)+1 ta nói cung chấp nhận được.Từ suy cung khơng chấp nhận đường dẫn từ nút s tới nút t chứa tất cung chấp nhận đường dẫn chấp nhận Tính chất 7.3:Một đường dẫn chấp nhận ;là đường tăng thêm ngắn từ điểm nguồn tới điểm đích Vì cung (i,j) thuộc đường dẫn chấp nhận P cung chấp nhận được,dung lượng dư cung nhãn khoảng cách nút cuối thoả mãn điều kiện (1) rij>0 d(i) =d(j)+1 Điều kiện (1) P đường dẫn tăng cường ,điều kiện(2) P chứa k cung,vì d(s) =k.Vì d(s) giớ hạn ngắn độ dài đường dẫn từ nút nguồn tới nút đích nên đường dẫn P đường dẫn tăng cường ngắn 7.3 THUẬT TOÁN TỈ LỆ DUNG LƯỢNG(Capacity Scaling) Chúng ta bắt đầu với việc mô tả thuật toán đường dẫn mở rộng lớn ý tới độ phức tạp tính tốn nó.Thuật tốn ln làm tăng thêm luồng dọc theo đường dẫn với dung lượng dư lớn nhất.Gọi x luồng bất kì,v giá trị luồng đó.Giống trên:v* giá trị luồng cưc đại.Theo tính chất phân li luồng mạng dư G(x) tìm m đường dẫn trực tiếp từ nút nguồn tới nút đích.Với tổng dung lượng dư (v*-v).Do đường dẫn mở rộng đạt dung luợng cực đại có lượng dư (v*-v)/m.Bây ta xét chuỗi phép mở rộng dung lượng cực đại liên tiếp bắt đầu với luồng x Nếu phép mở rộng làm tăng nhất(v*-v)/2m đơn vị luồng từ véc tơ luồng x chúng giảm luồng dư đường dẫn mở rộng có dung lượng cực đại thừa số 2.Điều cho thấy 2m phép toán lặp liên tiếp, phép toán tạo luồng cực đại làm giảm dung lượng dư đường dẫn mở rộng có giá trị cực đại với thừa số 2.Vì dung lượng dư dường dẫn tăng cường lớn 2U bé 1,sau 0(mlogU) lặp lại ,luồng đạt giá trị cực đại Như thấy, thuật toán dung lượng mở rộng lớn làm giảm số lượng lần mở rộng thuật toán nhãn loại từ 0(nU) tới 0(mlogU).Tuy nhiên thuật toán cần thực nhiều tính tốn cho lần lặp lại cần xác định đường dẫn mở rộng với dung lượng dư cực đại đường dẫn mở rộng bất kì.Chúng tơi xin giới thiệu thuật tốn khác giảm số lần tính tốn tạo luồng cực đại thời gian 0(mlgU) ,bởi thuật toán thu hẹp cách tối đa dung lương cung.Chúng tơi gọi thuật tốn thu hẹp dung lượng cung Thuật toán dựa sở đơn giản là:Chúng ta tăng luồng dọc đường dẫn với dung lượng dư lớn vừa phải thay đường dẫn có dung lượng dư cực đại.Vì có đường dẫn với dung lượng dư lớn vừa phải dễ dàng-trong thời gian 0(m).Để xác định thuật tốn này,ta đưa tham số có quan hệ với luồng x cho -mạng dư mạng chứa cung mà dung lượng dư Gọi G(x, ) biểu thị -mạng dư.Chú ý G(x,1)= G(x) G(x, ) đồ thị phụ x(Hình 7.2 mơ tả điều này) Sau bước thuật tốn,trong =const bước thu hẹp với giá trị cụ thể ,gọi là:Bước thu hẹp Chú ý bước thu hẹp ,mỗi phép mở rộng chứa đơn vị luồng.Bắt đầu phép toán với =2 giảm giá trị bước thu hẹp =1.Cuối ta có 1+ [logU]=0(logU) bước thu hẹp thuật tốn.Trong bước thu hẹp cuối cùng, =1 G(x, ) =G(x) Kết cho thấy ta có luồng cực đại Thuật tốn có hiệu hay khơng dựa vào việc thự tối đa 2m phép mở rộng với bước thu hẹp.Để có kết này,xét luồng kết thúc giai đoạn thu hẹp Gọi x’ luồng cuối v’ giá trị luồng,S tập hợp nút đạt từ nút S thuộc G(x’, ).Do G(x’, ) không chứa đường dẫn tăng cường từ nguồn tới nơi kết thúc,t S;[S,S] tạo thành đoạn cắt S-t.S cho biết dung lượng dư cung thuộc [S, ] nhỏ ,do dung lượng dư đoạn [S, ] tối đa m( ).Kết (v*-v’)=1 begin while G(x, ) contains a path from node s to node t begin identify a path P in G(x, ); :=min(rij,(i,j) P); augment units of flow along P and update G(x, ); end; := /2; end; end Có thể giảm tính phức tạp phép tốn dựa vào thuật toán đường dẫn tăng cường ngắn sau đây: 7.4THUẬT TOÁN ĐƯỜNG DẪN TĂNG CƯỜNG NGẮN NHẤT Phép tốn ln làm tăng luồng dọc theo đường dẫn ngắn từ điểm xuất phát tới điểm cuối mạng dư.Tìm kiếm đương dẫn ngắn cách thực tìm kiếm trước độ rộng mạng dư.Nếu phép toán Dán nhãn chứa tập hợp L nút đánh dấu thành hàng dựa vào việc xét nút đánh dấu theo thứ tự có đường dẫn ngắn mạng dư (Bài tập 3.30).Mỗi lần lặp lại cần 0(m) bước trường hợp khó (dựa vào quan sát liền kề nhau) thời gian tính 0(n ),có thể cịn lớn hơn.Có thể khắc phục điều cách dựa vào luận điểm khoảng cách ngắn từ nút i tới nút t ln khơng giảm tất phép mở rộng.Dựa vào tính chất làm giảm thời gian trung bình pháp mở rộng xuống cịn 0(n) Thuật tốn đường dẫn tăng cường ngắn tiếp tục thực việc tăng luồng dọc đường dẫn xét đến Nó tạo đường dẫn chấp nhận việc thêm lúc cung.Phép toán chứa dường dẫn chấp nhận phần(mọt đường dẫn từ t tới nút i chứa cung chấp nhận được) thực lặp lại bước Hoặc từ nút cuối đường dẫn chấp nhân phần gọi nút tại.Nếu nút icó cung chấp nhận (i,j),chúng ta thực việc khai triển thêm cộng thêm cung (i,j) vào đường dẫn chấp nhận phần ,nếu không triển khai lại xem xét lại cung đó.Chúng ta lặp lại ường dẫn chấp nhận phần đến nút kết thúc,lúc ta thực phép mở rộng.Lặp lại luồng đạt cực đại(Mơ tả hình 7.4a) Trước tiên ta tính tốn nhãn khoảng cách khởi tạo việc thực bước kiểm tra trước tiên ngược lại đọ rộng mạng dư,bắt đầu từ nút kết thúc Các số kề nút hình 7.4a xác định giá trị nhãn khoảng cách Trong ví dụ này,chúng ta qui ước chọn cung (i,j) với giá trị nhỏ j,với diều kiện nút i có vài cung chấp nhận được.Chúng ta bắt đầu với nút nguồn với đường dẫn chấp nhận được.Nút nguồn có số cung chấp nhận được,do ta thực thi mức độ cao hơn.Ở ta thêm cung (1,2) vào đường dẫn phần chấp nhận được.Ta lưu lại đường dẫn sử dụng số mũ trước đó,do đặt pred(2)=1.Bây nút nút phép toán thực bước kiểm tra cao nút 2.Từ thêm cung (2,7) vào đường dẫn chấp nhận phần,bây thành 1-2-7.Ta đặt pred(7) =2.Ở bước lặp tới,thêm cung (7,12) vào đường dẫn này,thành 1-2-712,là đường dẫn chấp nhận tới nút đích.Ta thực phép mở rộng giá trị {r12, r27, r7,12}=min{2,1,2}=1 làm đầy cung(2,7).Hình 7.4b rõ mơ hình mạng dư khía cạnh Chúng ta lại bắt đầu điểm nguồn với đường dẫn chấp nhận phần.Giải thuật thực việc thêm cung (1,2) nút trở thành nút mới.Ta nhận thấy nút không chứa cung chấp nhận được.Để tạo cung chấp nhận ,chúng ta phải tăng Nhãn khoảng cách nút 2.Ta tăng d(2) tới giá trị min{d(j)-1 : i,j thuộc A(i) ri,j>0}=min {d(1)-1}=4 Ta gọi trình dán lại Nhãn.Bước giữ điều kiện áp dụng nhãn khoảng cách.Chú ý d(2) tăng làm cung (1,2)trở thành cung khơng chấp nhận được.Do loại cung (1,2) khỏi đường dẫn phầnchấp nhận lại trở thành đường dẫn vô hiệu lực.Sau bước triển khai kế tiếp,phép toán xác định đường dẫn chấp nhân 1-3-8-12,1-4-9-12, 1-5-10-12 1-6-11-12 tăng luồng đơn vị đường dẫn Sự đắn thuật tốn Trong phân tích giải thuật Đường dẫn tăng cường ngắn nhất,trước tiên giải cách đắn vấn đề luồng cực đại Bổ đề 7.5:Thuật toán đường dẫn tăng cường ngắn trì đắn nhãn khoảng cách bước.Hơn nữa,mỗi hành động dán lại nhãn làm tăng nhãn khoảng cách nút cách khó khăn Giải thuật đường dẫn tăng cường ngắn begin end; x:=0; obtain the exact distance labels d(i); i:=s; while d(s)0}; if is then i:=pred(i); end; procedure augment; begin using predecessor identify an augmenting path P from the suorce to sink; :=min {rij: ( i,j ) P}; augment units of flow along path P; end; Chứng minh:Ta thuật toán giữ nhãn khoảng cách bước việc đưa vào sốcủa hành động Tăng dán lại Nhãn.(Các thao tác nâng cao khơng ảnh hưởng tới khả chấp nhận cung khơng thay đổi dung lượng dư hay nhãn khoảng cách).Ban đầu,thuật tốn xây dựng nhãn khoảng cách hợp lí.Giả sử Nhãn khoảng cách có giá trị trước (VD chúng thoả mãn điều kiện có giá trị đấy).Chúng ta cần kiểm tra xem liệu điều kiện có giữ giá trị (a) sau hành động làm tăng,và giá trị (b) sau hành động dán lại Nhãn Mặc dù luồng tăng cung (i,j) di chuyển cung khỏi mạng dư, diều chỉnh tới mạng dư không ảnh hưởng tới giá trị Nhãn khoảng cách cung này.Tuy nhiên , tăng lên với cung (I,j) tạo nên cung phụ (j,i) với rj,i>0 tạo thêm bất đẳng thức mà nhãn khoảng cách phải thoả mãn: d(j)0.Điều kết hợp với điều kiện di