2011-01-17 27 views
6

Tôi đang sử dụng BGL để lưu trữ DAG của mình. Đỉnh có trạng thái. Với sự thay đổi trạng thái ở một trong các đỉnh tôi muốn cập nhật các đỉnh phụ thuộc. Điều này tôi có thể làm bằng cách sử dụng tăng :: depth_first_search và một khách truy cập tùy chỉnh.Dừng tăng :: depth_first_search dọc theo độ sâu cụ thể nếu đáp ứng các tiêu chí nhất định

Bây giờ logic là tôi không muốn cập nhật một đỉnh được tìm kiếm và phụ thuộc của nó nếu đỉnh nằm trong một trạng thái cụ thể. Về cơ bản tôi muốn kiểm soát en-xếp hàng của đỉnh trong một trong hai dfs hoặc bfs. Cách tốt nhất để đạt được điều này trong BGL là gì.

Cảm ơn.

Trả lời

9

Có vẻ như tăng :: depth_first_search không hỗ trợ điều này, nhưng tăng cơ bản :: depth_first_visit, thông qua quá tải thứ 2 của nó cho phép cho một "hàm terminator" (TerminatorFunc).

Vì vậy, bạn có thể sao chép việc triển khai tăng :: depth_first_search và thay thế thông số chi tiết :: nontruth2() được truyền để tăng :: depth_first_visit bằng chức năng terminator (không tầm thường) của riêng bạn.

+0

Cảm ơn, nó hoạt động. – Vikas

0

Thiếu chấm dứt trong tìm kiếm theo chiều sâu - là điều ngu xuẩn nhất trong thư viện biểu đồ mà tôi từng thấy.

Có thể, đây có thể là cách thoát: depth_first_search trên filter_graph. Bạn có thể đánh dấu stop-vertex bằng cách nào đó, và trong chức năng lọc-cạnh của filter_graph chỉ cần ẩn các cạnh sự cố

Các vấn đề liên quan