Tìm những con đường ngắn và mập


10

Động lực: Trong các thuật toán dòng tối đa đường dẫn tăng tiêu chuẩn, vòng lặp bên trong yêu cầu tìm đường dẫn từ nguồn đến chìm trong đồ thị có hướng, có trọng số. Về mặt lý thuyết, người ta biết rằng để thuật toán thậm chí chấm dứt khi có các khả năng cạnh phi lý, chúng ta cần đặt các hạn chế trên các đường dẫn mà chúng ta tìm thấy. Thuật toán Edmonds-Karp, chẳng hạn, cho chúng ta biết tìm những con đường ngắn nhất .

Theo kinh nghiệm, nó đã được quan sát thấy rằng chúng ta cũng có thể muốn tìm chất béo (có một thuật ngữ tốt hơn cho điều này?). Ví dụ: khi sử dụng thang đo dung lượng , chúng tôi tìm thấy các đường dẫn ngắn nhất có thể chịu ít nhất lượng lưu lượng. Không có giới hạn về thời gian con đường có thể. Khi chúng ta không còn có thể tìm thấy bất kỳ con đường, chúng tôi giảm ε và lặp lại.ϵϵ

Tôi quan tâm đến việc tối ưu hóa sự lựa chọn các đường dẫn tăng thêm cho một ứng dụng cực kỳ cụ thể của luồng tối đa và tôi muốn khám phá sự đánh đổi này giữa các đường dẫn ngắn và mập. .

Câu hỏi: Có cách tiêu chuẩn nào để nội suy giữa cách tiếp cận đường dẫn ngắn nhất và phương pháp mở rộng năng lực không? Đó là, có một thuật toán để tìm các đường dẫn vừa ngắn vừa mập, trong đó lý tưởng nhất là một số tham số sẽ kiểm soát độ dài của đường dẫn mà chúng ta sẵn sàng đánh đổi cho độ béo? Ở thái cực, tôi muốn có thể khôi phục các đường dẫn ngắn nhất ở một đầu và các đường dẫn theo kiểu tỷ lệ công suất ở đầu kia.


3
Lưu ý rằng nếu bạn cố gắng tối ưu hóa cả độ ngắn và độ béo cùng một lúc, bạn sẽ nhập các lĩnh vực tối ưu hóa đa tiêu chí, có nghĩa là trong hầu hết các trường hợp độ cứng NP.
Raphael

ϵ

@Daniel Apon - có mã giả cho khả năng mở rộng công suất trên trang 31 của các slide này: cs.princeton.edu/~wayne/kleinberg.../07maxflow.pdf
dan_x

@Raphael - Lưu ý rằng tôi đang tìm kiếm một mục tiêu duy nhất có thể là ví dụ kết hợp tuyến tính giữa chiều dài và độ béo. Điều đó vẫn được coi là tối ưu hóa đa tiêu chí?
dan_x

ϵ

Câu trả lời:


2

Theo tinh thần nhận xét của bạn về "khá tốt nhưng không nhất thiết phải tối ưu", tôi trình bày ý tưởng sau đây hoàn toàn không đảm bảo sự lạc quan!

Để đầy đủ, đây là mã giả mà bạn đã đề cập (Ghi chú: thuật toán được liên kết giả định công suất cạnh là các số nguyên giữa 1 và C và lưu lượng và giá trị dung lượng còn lại là không thể tách rời):

Thu nhỏ quy mô tối đa (G, s, t, C) {
   foreach e ∈ E f (e) ← 0
   Δ ← công suất nhỏ nhất bằng 2 lớn hơn hoặc bằng C
   Biểu đồ dư G_f ←

   trong khi (Δ 1) {
      Đồ thị G_f (Δ) ← resid-dư
      while (tồn tại đường dẫn tăng P trong G_f (Δ)) {
         f ← ​​tăng (f, C, P)
         cập nhật G_f (Δ)
      }
      Δ ← / 2
   }
   trở lại f
}

ϵϵ=Δϵ

0ρ1ρ

ϵρ

ϵ(ρ)ϵ+(1ρ)

ρ=0ρ=10<ρ<1ϵ1


Cảm ơn vì ý tưởng - nó gần với những gì tôi nghĩ. Một mối quan tâm của tôi là đây chỉ là một "lịch trình phân rã" khác nhau để nhân rộng công suất, phải không?
dan_x

Khi bạn phân rã mạnh mẽ hơn, bạn sẽ có được những con đường ngắn hơn và khi bạn phân rã ít tích cực hơn, bạn sẽ có được những con đường béo hơn. Điều tôi có trong đầu là mỗi con đường sẽ có được điểm dựa trên mức độ béo và độ ngắn của nó, sau đó thuật toán sẽ tìm thấy tất cả các đường dẫn có điểm lớn hơn một số ngưỡng.
dan_x

Nhưng nếu không có một cách tiêu chuẩn để làm điều này, tôi có thể ngồi xuống và suy nghĩ để có được một thuật toán làm những gì tôi muốn.
dan_x
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.