Chu trình trung bình nhỏ nhất

Từ testwiki
Bước tới điều hướng Bước tới tìm kiếm

Trong lý thuyết đồ thị, bài toán chu trình trung bình nhỏ nhất yêu cầu tìm trong một đồ thị có hướng cho trước một chu trình có trọng số trung bình nhỏ nhất. Trọng số trung bình của một chu trình là tỉ số giữa tổng trọng số các cung của chu trình và số cung của nó. Bài toán này có nhiều ứng dụng trong lý thuyết đồ thị, và phân tích hệ thống sự kiện rời rạc[1].

Định nghĩa

Xét đồ thị có hướng G=(V,E) và một hàm trọng số w:E. Trọng số của một chu trình C, ký hiệu là w(C), là tổng trọng số các cung của C,

w(C)=eCw(e)

Trọng số trung bình của C được định nghĩa là tỉ số w(C)|C|.

Thuật toán

Cho đơn giản, mở rộng G bằng cách thêm vào một đỉnh gốc s có cung độ dài 0 tới tất cả các đỉnh khác. Do G không có thêm chu trình nào nên chu trình trung bình nhỏ nhất là không đổi.[2]

Thuật toán Karp

Có rất nhiều thuật toán cho bài toán tìm chu trình trung bình nhỏ nhất. Thuật toán đầu tiên cho bài toán này là của Karp.[3] Định nghĩa dt(s,u) là độ dài đường đi ngắn nhất từ s tới u gồm đúng t cung. Nếu không có đường đi nào gồm đúng t cung thì dt(s,u)=. Định nghĩa,

μ*=minvVmax0kn1dn(s,v)dk(s,v)nk

Có thể chứng minh rằng μ* chính là trung bình nhỏ nhất của các chu trình trong G. Để tính μ*, thuật toán tính tất cả các giá trị dt(s,u)uV,0tn theo công thức sau:

dt+1(s,v)=minuVdt(s,u)+w(u,v)

Thời gian thực thi của thuật toán là O(VE).

Ghi chú

Bản mẫu:Tham khảo

Xem thêm

Tham khảo