Giải quyết mối quan hệ lặp lại với hai cuộc gọi đệ quy


10

Tôi đang nghiên cứu về thời gian chạy trường hợp xấu nhất của quicksort dưới điều kiện là nó sẽ không bao giờ làm một rất phân vùng không cân bằng cho các định nghĩa khác nhau về rất .

Để thực hiện điều này, tôi tự hỏi mình câu hỏi thời gian chạy trong trường hợp quicksort luôn xảy ra với phân vùng trong một số phân số sao cho phần tử nằm trong phân vùng bên trái và nằm trong phân vùng bên phải (để lại phần tử, trục, ở giữa).T(n,p)0<p12p(n1)(1p)(n1)1

Không khó để thấy rằng đưa ra giới hạn trên cho trường hợp xấu nhất trong đó là phân vùng được phép không cân bằng tối đa, vì bất kỳ phân vùng nào có phân số sẽ cân bằng hơn và có thời gian chạy nhỏ hơn và bất kỳ phần nào đều không được phép.T(n,p)p>p<p

Rõ ràng là là trường hợp tốt nhất và là trường hợp xấu nhất của quicksort. Cả hai đều có quan hệ tái phát dễ dàng được tìm thấy trong bất kỳ tài nguyên giáo dục. Nhưng tôi không biết làm thế nào để học nói chung. Mối quan hệ rõ ràng sẽ là:T(n,12)T(n,0)T(n,p)

T(n,p)=n+T(p(n1),p)+T((1p)(n1),p)

Ở đây tôi bị kẹt. Tôi đã thử tìm kiếm xung quanh, nhưng tất cả các tài liệu mà tôi có thể hiểu về thuật toán phân chia và chinh phục đã lấy "phân chia" theo nghĩa đen và "lừa" phân tích bằng cách sử dụng các phân vùng luôn có kích thước bằng nhau, hợp nhất các thuật ngữ thành một lần không thay đổi.

Tôi không biết làm thế nào để xử lý hai cuộc gọi đệ quy và tôi không biết có an toàn để xóa vòng không. Điều này có thể giải quyết một cách phân tích, và nếu có, làm thế nào?

PS: Tôi không quan tâm đến tiệm cận (dễ dàng hiển thị cho bất kỳ không đổi ). Tôi quan tâm đến việc quicksort trở nên chậm hơn bao nhiêu khi trở nên nhỏ hơn, ví dụ tôi quan tâm đến tỷ lệ .p p T ( n , 0,25 )Θ(nlogn)ppT(n,0.25)T(n,0.5)

PPS: Là một sinh viên đại học, tôi xin lỗi nếu tôi đã làm những điều rõ ràng quá dài dòng hoặc không thể giải thích được. Và trong khi tôi không biết liệu nó có bị coi thường ở đây nhiều như các trang SE khác hay không, tôi sẽ lưu ý rằng đây là sở thích cá nhân, không phải bài tập về nhà.

Câu trả lời:


9

Như bạn đã đề cập, định lý AkraTHER Bazzi cho thấy giải pháp cho sự tái phát O ( n log n ) cho tất cả p ( 0 , 1 ) . Tuy nhiên, điều này không tiết lộ bản chất của sự phụ thuộc vào p . Để xác định cái sau, chúng ta có thể sử dụng cách tiếp cận cây đệ quy.T(n,p)O(nlogn)p(0,1)p

Tại thư mục gốc của cây đệ quy là khoảng . Hai đứa con của nó là các khoảng { 1 , Vay , p n }{ p n + 1 , Hoài , n } , có tổng chiều dài lại là n . Mỗi nút này có hai con (giả sử n đủ lớn), v.v. Để đơn giản, chúng tôi bỏ qua các lỗi làm tròn, nghĩa là chúng tôi giả sử rằng p n{1,n}{1,,pn}{pn+1,,n}nnpnlà một số nguyên; Đây chỉ là một kỹ thuật, và tôi sẽ không lo lắng về nó. Chúng tôi dừng quá trình bất cứ khi nào một nút có độ dài tối đa . Độ phức tạp của thuật toán tỷ lệ thuận với tổng độ dài của các khoảng trong cây. Khi p 1 / 2 , các (nút mà tại đó chúng tôi ngăn chặn quá trình) có chiều sâu khác nhau, và điều đó làm cho nó khó khăn hơn để xác định mức độ phức tạp tổng thể.1p1/2

Chúng ta có thể có được một giới hạn trên đơn giản bằng cách lưu ý rằng cây có nhiều mức : mỗi nút ít nhất là nhỏ hơn 1 - p so với cha mẹ của nó. Cũng giống như trong phân tích cho p = 1 / 2 , tổng chiều dài khoảng ở bất kỳ cấp độ tối đa là n , và chúng tôi có được một trên ràng buộc của O ( n log 1 - p ( 1 / n ) ) vào thời gian chạy. Kể từ khi đăng nhập 1 -log1p(1/n)1pp=1/2nO(nlog1p(1/n))log(1-p ) - 1 =-log(1-p)=p±O( p 2 )chopnhỏ, chúng ta có thể viết đây làO(nlogn / p).log1p(1/n)=logn/log(1p)1log(1p)1=log(1p)=p±O(p2)pO(nlogn/p)

Đây là một tính toán chính xác hơn. Xem xét mức độ . Giả sử chúng ta không dừng quá trình khi đạt đến một khoảng nhỏ. Chúng ta có thể tạo một đỉnh ngẫu nhiên bằng cách thực hiện các bước t , trong đó mỗi bước chúng ta đi bên trái (nói) với xác suất p và phải (nói) với xác suất 1 - p . Mỗi lần chúng ta thực hiện một bước bên trái, nhật ký về độ dài của khoảng thời gian sẽ giảm theo - log p và mỗi lần chúng ta thực hiện một bước bên phải, nó sẽ giảm theo - log ( 1 - p ) . Một đỉnh là trong cây thực tế của các bản ghi của chiều dài giảm ở hầu hết các log nttp1plogplog(1p)logn. Tổng trọng số của các khoảng trên cấp độ của cây chính xác là xác suất mà một đỉnh được tạo ra theo quy trình này tương ứng với mức giảm tối đa của log n . Nghĩa là, nếu D là sự phân bố tương đương với - log p với xác suất p- log ( 1 - p ) với xác suất 1 - p , và X 1 , ... , X t ~ D là độc lập, sau đó tổng trọng lượng của cấp độ ttlognDlogpplog(1p)1pX1,,XtDt . Đối với siêu không đổi, biến ngẫu nhiênthường được phân phối bình thường với giá trị trung bìnhvà phương sai tuyến tính theo, vì vậy đối vớiPr[X1++Xtlogn]X 1 + + X t [ - p log p - ( 1 - p ) log ( 1 - p ) ] t ttX1++Xt[plogp(1p)log(1p)]tt thỏa mãn [ - p log p - ( 1 - p ) log ( 1 - p ) ] t ( log n ) /t , giả sử, xác suất sẽ rất gần với 1 , trong khi với t thỏa mãn [ - p log p - ( 1 - p ) log ( 1 - p ) ] t 2 log n , giả sử, nó sẽ rất gần với 0 . Xác định h ( p ) = - p log p - ( 1 - p ) log ( 1 - p )[plogp(1p)log(1p)]t(logn)/21t[plogp(1p)log(1p)]t2lognh(p)=plogp(1p)log(1p)(gọi là hàm entropy nhị phân), chúng tôi kết luận rằng thời gian chạy là (thống nhất trong p , như n ). Khi p 0, chúng ta có h ( p ) - p log p , và vì vậy ước tính trước đó của chúng tôi không chặt chẽ.Θ(nlogn/h(p))pnp0h(p)plogp

Một cách khác để nhìn vào phân tích tương tự là do có một dãy vô hạn các biến ngẫu nhiên độc lập như trước đây, và xác định một thời gian dừng T là lần đầu tiên tX 1 + + X tlog n . Thời gian chạy sau đó tỷ lệ thuận với n E [ T ] . Định lý đổi mới tiểu học sau đó khẳng định rằng lim n E [ T ] /X1,X2,TtX1++XtlognnE[T] , ngụ ý rằng tổng kích thước của các khoảng bằng ( 1 + o ( 1 ) ) n log n / h ( p ) . Chính xác hơn, với mỗi p không đổi, tổng kích thước của các khoảng là ( 1 + α p ( n ) ) n log n / h ( plimnE[T]/logn=1/E[D]=1/h(p)(1+o(1))nlogn/h(p)p , trong đó α p ( n ) = o ( n ) . Sự hội tụ trong công cuộc đổi mới tiểu lý là mũ trong tham số thời gian - log n trong trường hợp của chúng tôi - vì vậy nên đa thức trong n , nghĩa là α p ( n ) = O ( n - C p ) . Sự hội tụ cũng có lẽ là thống nhất cho p ( δ , 1 - δ ) cho bất kỳ δ > 0 .(1+αp(n))nlogn/h(p)αp(n)=o(n)lognnαp(n)=O(nCp)p(δ,1δ)δ>0


Tóm tắt, tổng chiều dài của các khoảng trong cây đệ quy, tỷ lệ thuận với thời gian chạy, có dạng sau cho mọi : T ( n , p ) = ( 1 + o ( 1 ) ) n log nptrong đólognh(p)=-plogp-(1-p)log(1-p)được đưa đến cùng một cơ sở vào(1)là một hàm phụ thuộc vàopvà có xu hướng về0vớin.

T(n,p)=(1+o(1))nlognh(p),
lognh(p)=plogp(1p)log(1p)o(1)p0n

Hơn nữa, nó có lẽ là sự thật rằng đối với bất kỳ và bất kỳ p ( δ , 1 - δ ) đúng là tổng chiều dài khoảng có dạng T ( n , p ) = ( 1 + O ( n - C δ ) ) n log nδ>0p(δ,1δ)nơiCδ>0và ẩn O liên tục lớn chỉ phụ thuộc vàoδ. Đặc biệt, nó phải là trường hợp cho tất cả các hằng sốp1,p2, limnT(n,p1)

T(n,p)=(1+O(nCδ))nlognh(p),
Cδ>0δp1,p2 và sự hội tụ là đa thức nhanh.
limnT(n,p1)T(n,p2)=h(p2)h(p1),

Θh(p)Θn=100000000000000T(n,0.1)/T(n,0.5)

Θpc,CpNpnNpcnlogn/h(p)T(n,p)Cnlogn/h(p)T(n,p)=(1+o(1))Cnlogn/h(p)pnpCp

lognlognnp1/h(p)

T(n,p)p1/h(p)T(1011,0.05)h(0.05)T(1011,0.4)h(0.4)

1
nω(1)
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.