Một cách để tính toán một hàm boolean là phải có một chuỗi các khối mạch boolean b 1 , ... , b n mà b k đọc chỉ x k (của đầu vào) và được kết nối chỉ đến b k - 1 và b k + 1 . Một trong những đầu ra của khối b n cuối cùng là giá trị của f . Định lý M trong TAoCP 4 fascicle 1 nói rằng BDD củaf(x1,…,xn)b1,…,bnbkxkbk−1bk+1bnf phải lớn nếu đối với tất cả các mạch như vậy, bạn cần nhiều liên kết ngược (từ b k đến b k - 1 ).fbkbk−1
Nói cách khác, để BDD nhỏ, phải có cách tóm tắt thông tin trong với 1 ≤ k ≤ n . Độ rộng của BDD tương ứng với k khó nén nhất, bằng trực giác.x1,…,xk1≤k≤nk
(Một ví dụ được đưa ra trong TAoCP là thế này: Hãy tưởng tượng một chu kỳ có độ dài và một hàm boolean f ( x 1 , ... , x n ) nói rằng "không có nút đó có màu giống như cả hai quốc gia láng giềng", nơi x k nói cho dù nút k là màu đen hoặc trắng Sau đó, 'tóm tắt' khi bạn nhìn vào các nút. 1 , 2 , ... , k nên lưu trữ màu sắc của 1 , k - 1 , k , và cho dù bạn đã nhận thấy một sự vi phạm bạn. cần k -nf(x1,…,xn)xkk1,2,…,k1k−1k và k để bạn có thể kiểm tra xem tài sản có bị vi phạm tại k không khi bạn cũng thấy k + 1 . Bạn cần 1 để bạn có thể kiểm tra xem tài sản có bị vi phạm ở n không , khi bạn đã kết thúc.)k−1kkk+11n
Ngoài ra, nếu bạn quan tâm đến các hoạt động giữa các BDD , thì thực hiện thao tác nhị phân giữa và g , trong đó f được đại diện bởi một BDD có m nút và g được đại diện bởi một BDD có n nút mất thời gian O ( m n ) nhưng có xu hướng chỉ mất thời gian O ( m + n ) cho các chức năng bạn thực sự tìm thấy trong thực tế. Tôi không biết về một phiên bản chính xác của những gì tôi vừa nói, nhưng tôi sẽ quan tâm nếu có.fgfmgnO(mn)O(m+n)