Thuật toán Karger

Trong khoa học máy tính và lý thuyết đồ thị, thuật toán Karger là một thuật toán Monte Carlo để tìm lát cắt nhỏ nhất của một đồ thị vô hướng. Bài toán lát cắt nhỏ nhất yêu cầu tìm cách chia đồ thị làm hai phần sao cho số cạnh nối các đỉnh ở hai phần khác nhau là nhỏ nhất. Thuật toán được tìm ra bởi David Karger.

Thuật toán
Ý tưởng chính của thuật toán là sử dụng phép hợp nhất hai đầu của một cạnh  trong đồ thị . Sau mỗi lần hợp nhất, số đỉnh của đồ thị giảm đi 1. Thuật toán sử dụng một chuỗi các phép hợp nhất các cạnh ngẫu nhiên của đồ thị. Xác suất chọn mỗi cạnh tỉ lệ với trọng số của nó. Thuật toán này là một thuật toán đệ quy. Trong mỗi tầng đệ quy, thuật toán hoạt động như sau. Thử hai lần độc lập nhau việc lặp đi lặp lại phép hợp nhất để giảm số đỉnh của  xuống  và gọi đệ quy để tính lát cắt nhỏ nhất trong đồ thị thu được. Sau đó, chọn kết quả tốt hơn trong hai lần gọi đệ quy và trả về giá trị đó.

Phép hợp nhất
Trong mỗi lần thực hiện, phép toán này hợp nhất hai đỉnh x và y của một cung e thành một đỉnh mới  kề với tất cả các đỉnh kề của x và y. Định nghĩa cụ thể là như sau.

Cho một đồ thị  và , kết quả phép hợp nhất hai đỉnh kề với cạnh  (ký hiệu ) là một đa đồ thị định nghĩa như sau:

và:

 hoặc 

Có thể chứng minh phép toán này không làm giảm nhưng có thể làm tăng giá trị lát cắt nhỏ nhất.

Thời gian thực hiện
Thuật toán Karger là thuật toán ngẫu nhiên nhanh nhất hiện nay cho việc tìm lát cắt nhỏ nhất, với thời gian chạy O(|V|2 log3|V|). Để chứng minh điều này, tác giả chỉ ra cách thực hiện chuỗi các phép hợp nhất để giảm kích thước  xuống  đỉnh trong thời gian . Do đó thời gian chạy của thuật toán là . Phương trình này cho kết quả . Sau mỗi lần thực hiện thuật toán, xác suất tìm ra lát cắt nhỏ nhất là . Nếu thực hiện thuật toán  lần thì xác suất không tìm ra lát cắt nhỏ nhất giảm xuống .

Tham khảo




Thể loại:Giải thuật lý thuyết đồ thị