Bạn đã tinh chỉnh vấn đề của bạn một số thêm trong các ý kiến. Để cụ thể hơn, bạn có một DAG với tất cả các cạnh chảy ra từ nguồn và về phía bồn rửa t (nghĩa là tất cả các cạnh đều nằm trên một đường dẫn từ s đến t ). Bạn muốn tìm vết cắt tối thiểu giữa hai phần của DAG, trong đó phần đầu tiên được kết nối với s và phần thứ hai được kết nối với t . Đối với vấn đề này, một biến thể của thuật toán lập trình tuyến tính tiêu chuẩn cho MIN-CUT hoạt động, ngay cả với các trọng số cạnh âm.StStSt
Chúng tôi sử dụng ký hiệu tương tự như trong Wikipedia . Chi phí của cạnh là c i j . Chúng tôi đặt một hàm tiềm năng p i trên mỗi nút và cho d i j = p i - p j . LP là
m i n i m i z e( tôi , j )ctôi jpTôidtôi j= pTôi- pj
m i n i m i z e s u b j e c t t o Σ( i , j ) ∈ Ectôi jdtôi j dtôi j= pTôi- pj ∀ ( i , j ) ∈ E dtôi j≥ 0 ∀ ( i , j ) ∈ E pS= 1 pt= 0
Các phương trình này đảm bảo rằng , vì mọi đỉnh đều nằm trên một số đường s - t . Tương tự, vì d i j = p i - p j không âm, nên tiềm năng trên mọi đường dẫn từ s đến t đều giảm. Chúng ta vẫn cần chỉ ra rằng có một giải pháp tối ưu cho LP với tất cả p i là 0 hoặc 1 . Điều này xuất phát từ thực tế là giá trị cho một giải pháp của LP ở trên là giá trị mong đợi của phần cắt C w , trong đó0 ≤ pTôi≤ 1Stdtôi j= pTôi- pjStpTôi01Cw được chọn ngẫu nhiên trong [ 0 , 1 ] và trong đó cắtw[ 0 , 1 ] thu được bằng cách đặt tất cả các đỉnh i với p i ≥ w trong tập đỉnh đầu tiên và tất cả các đỉnh có p i < w trong tập thứ hai.CwTôipTôi≥ wpTôi< w