Làm thế nào tôi có thể ngẫu nhiên tạo cây bao trùm chiều cao giới hạn?


9

Đối với một dự án mà tôi đang thực hiện, tôi nên tạo các cây bao trùm ngẫu nhiên với chiều cao giới hạn.

Về cơ bản tôi làm như sau: 1) Tạo cây bao trùm 2) Kiểm tra tính khả thi, nếu khả thi hãy giữ nó.

1) Bắt đầu từ một cây bao trùm tối thiểu (Prim's hoặc Kruskal) Tôi thêm một cạnh không tồn tại và điều này tạo ra một chu kỳ, tôi phát hiện chu trình này và loại bỏ một trong các cạnh của chu trình này mang lại cho tôi một cây bao trùm mới và tôi tiếp tục cây bao trùm này bằng cách thêm một cạnh mới ...

2) Giả sử có một đỉnh đặc biệt . Đối với mỗi đỉnh v , chiều dài của đường đi từ v đến V c đ n t e r nên ít sau đó δ , nơi δ là một tham số nhất định.vcentervvVcenterδδ

Có cách nào tốt hơn (thông minh) để làm điều này?

PS Tôi quên chỉ định các ràng buộc khác (lỗi của tôi): mức độ của các đỉnh cũng nên được giới hạn.


Tôi không chắc là tôi có đúng không. Trong bước đầu tiên, bạn có loại bỏ cạnh chỉ một cách ngẫu nhiên hoặc để chiều cao của cây (có thể) giảm?
Sacha

Tôi ngẫu nhiên thêm và loại bỏ các cạnh.
Arman

Bạn có thể lấy mẫu cây ngẫu nhiên ngắn nhất trải dài trên cây? Nó đơn giản hóa mọi thứ
Yaroslav Bulatov

δO(nlogn)O(n)

Vì vậy, vấn đề của bạn có ba đại lượng giới hạn: chiều cao của cây, mức độ của mỗi đỉnh và khoảng cách từ v_center, có đúng không? Chính ràng buộc mức độ giới hạn đã tạo ra vấn đề NP-hard, nhưng tôi cho rằng bạn đang tìm kiếm một phương pháp có khả năng tạo ra một giải pháp nhanh chóng và không phải là một thuật toán chính xác.
Jagadish

Câu trả lời:


7

Tôi đã làm việc trên những cây bao quanh có chiều sâu cách đây vài năm, chúng thực sự rất thú vị. Một số đồng nghiệp của tôi đã đưa ra các thuật toán chuyển thông điệp đã làm rất tốt, nhưng tôi không thể tìm thấy bất kỳ mã nào của họ có sẵn. Chúng tôi đã viết nó theo phong cách vật lý ở đây: http://iopscience.iop.org/1742-5468/2009/12/P12010/ . Họ đã nói với tôi rằng nó cũng hoạt động với giới hạn độ, mặc dù điều đó đã không được đưa vào bài báo.

Cách tiếp cận mà bạn đề xuất, mà tôi sẽ gọi Markov Chain Monte Carlo, thường là đối thủ cạnh tranh với cách tiếp cận thông điệp. Nếu bạn quan tâm đến việc lấy mẫu một cách ngẫu nhiên một cách ngẫu nhiên từ tập hợp các cây bao trùm độ sâu, giới hạn độ sâu của đồ thị đã cho, tôi khuyên bạn nên thay đổi cách tiếp cận của mình để sử dụng giới hạn "mềm". Tức là thay vì từ chối một hoán đổi cạnh làm cho cây vi phạm độ sâu bị ràng buộc, hãy chấp nhận nó, nhưng với xác suất thấp hơn một hoán đổi không vi phạm ràng buộc. Nếu bạn có một tham số kiểm soát xác suất này thấp hơn bao nhiêu, bạn có thể làm cho các ràng buộc vi phạm cấu hình ngày càng ít có thể xảy ra cho đến khi bạn đi đến một giải pháp khả thi gần như ngẫu nhiên.

Câu hỏi lớn là bạn cần bao lâu để chạy chuỗi. Vì một cây bao trùm có độ lớn nhất là 2 là một đường dẫn Hamilton, bạn nên mong đợi bất kỳ ràng buộc chung nào sẽ được tính theo cấp số nhân trong kích thước của biểu đồ. Nhưng có thể các biểu đồ bạn quan tâm là đặc biệt theo một cách nào đó.


2
Thêm chi tiết, cộng với một bộ phim: Healthyalerskyms.wordpress.com/2010/12/23/ từ
Abraham Flaxman

3

SShhh

Tuy nhiên, tôi không chắc liệu thuật toán bạn mô tả có tạo ra một cây bao trùm ngẫu nhiên hay không. Tôi sẽ khuyên bạn nên nhìn vào các thuật toán tiêu chuẩn thay thế. Có hai thuật toán: thuật toán của Wilson và thuật toán của Aldous-Broder. Bạn có thể có một cái nhìn ở đây . Có một thuật toán mới hơn (gần đúng) nhưng nó khá phức tạp.

Ngoài ra, có thể có một cách để tạo cây bao trùm này với độ cao giới hạn trực tiếp. Nhưng tôi chưa bao giờ nghe nói về các thuật toán như vậy.


1

Sử dụng tìm kiếm đầu tiên! Thực hiện BFS từ mọi đỉnh trong biểu đồ, chọn cây kết quả có chiều cao nhỏ nhất. Một BFS luôn tìm thấy đường dẫn từ gốc đến mọi đỉnh khác với số bước nhảy ít nhất.


Bạn chắc chắn đúng. Chúng tôi đã bắt đầu làm với BFS nhưng nó không hoạt động vì giới hạn mức độ trên các đỉnh. Tôi quên đề cập đến ràng buộc này (lỗi của tôi): mức độ của các đỉnh trong cây được tạo ra cũng nên được giới hạn. Câu trả lời của bạn là đúng với câu hỏi hiện tại nhưng tôi nghĩ tôi nên chỉnh sửa câu hỏi của mình.
Arman

Sau đó, vấn đề của bạn gần như chắc chắn là NPC bằng cách giảm từ Cây kéo dài ràng buộc độ - en.wikipedia.org/wiki/Degree-constrained_spanning_tree
Peter Boothe
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.