Rõ ràng có chuỗi nhị phân có độ dài . Để duyệt qua nhị phân, thuật toán phải truy cập mỗi nút một lần, tức là nó phải thực hiện
các bước. 2 n 2 n ∑ i = 0 2 i = 2 2 n + 1 - 1 = O ( 4 n )4n2 n
Σi = 02 n2Tôi= 22 n + 1- 1 = O ( 4n)
Chúng ta hãy xem xét một thuật toán đệ quy đi ngang qua cây bạn đã mô tả, nhưng đếm số lượng và số không trên đường đi, tức là nó sẽ chỉ đi qua phần tốt của cây.
Nhưng có bao nhiêu chuỗi nhị phân như vậy với 0 'và 1'? Chúng tôi chọn 1 cho chuỗi có độ dài và sử dụng công thức của Stirling trong bước 2:
n n 2 n ( 2 nnnn2 n
( 2nn) =(2n)!( n ! )2= 4nπn---√( 1 + O ( 1 / n ) )
EDIT
Nhờ nhận xét của Peter Shor, chúng tôi cũng có thể phân tích số bước cần thiết của thuật toán thứ hai, tính cả 1 và 0. Tôi đang trích dẫn bình luận của anh ấy từ bên dưới:
Chúng tôi muốn tìm tất cả các chuỗi nhị phân với chính xác 0 và 1. Chúng tôi đi qua cây nhị phân trong đó mỗi nút là một chuỗi nhiều nhất là 0 và 1. Chúng tôi không cần phải truy cập bất kỳ nút nào có nhiều hơn 0 hoặc hơn 1. Có bao nhiêu nút chúng ta cần phải truy cập? Có các chuỗi với 0's và 1's. Tổng kết điều này trên tất cả cho . Bây giờ, chúng ta cần truy cập từng nút này với chi phí trung bình không đổi trên mỗi nút. Chúng ta có thể làm điều này bằng cách đến thăm từng đứa trẻ bên trái trước, và mỗi đứa trẻ bên phải thứ hai.n 2 n n n ( i + jnn2 nnn iji,j≤nΣ n i = 0 Σ n j = 0 ( i + j( tôi+jTôi)Tôiji , j ≤ nΣni = 0Σnj = 0( tôi+jTôi) = ( 2n+2n + 1) -1
Sử dụng lại công thức của Stirling, chúng tôi thu được
là thời gian chạy của thuật toán mới.
( 2 n + 2n + 1) -1=4n + 11n + 1-----√( 1 + O ( 1 / n ) ) - 1 = O ( 4nn--√)