Đầu tiên, chúng ta hãy đưa ra hai giả định có thể rõ ràng, nhưng quan trọng:
_.random_item
Có thể chọn vị trí cuối cùng.
_.random_item
chọn mọi vị trí có xác suất .1n + 1
Để chứng minh tính chính xác của thuật toán của bạn, bạn cần một đối số quy nạp tương tự như đối số được sử dụng ở đây :
- Đối với danh sách đơn lẻ chỉ có một khả năng, vì vậy nó được lựa chọn thống nhất.
- Giả sử rằng danh sách có phần tử được chọn thống nhất (từ tất cả các hoán vị), cho thấy rằng phần tử có phần tử thu được bằng kỹ thuật của bạn được chọn thống nhất.n + 1nn + 1
Từ đây trở đi, bằng chứng là sai. Vui lòng xem bên dưới để có bằng chứng chính xác; Tôi để điều này ở đây vì cả lỗi và các bước sau (có âm thanh) có thể mang tính giáo dục.
Nó rất hữu ích để lấy được một thuộc tính cục bộ (tức là yếu tố khôn ngoan) phải nắm giữ, bởi vì tranh luận về toàn bộ hoán vị là đau đớn. Quan sát rằng một hoán vị được chọn thống nhất nếu mọi phần tử có xác suất bằng nhau ở mỗi vị trí, nghĩa là
∀π∈ P e r mnPr( L = π) = 1n !⟺∀i = 1n ∀j = 1nPr( Ltôi= j ) = 1n( 1 )
trong đó và chúng tôi giả sử vì đơn giản hóa công chứng mà chúng tôi chèn { 1 , Lọ , n } vào danh sách.n = | L |{ 1 , ... , n }
Bây giờ, hãy cho chúng tôi xem kỹ thuật của bạn làm gì khi chèn phần tử thứ . Chúng tôi phải xem xét ba trường hợp (sau khi trao đổi):n + 1
- Một trong các phần tử trong danh sách, không được hoán đổi, tức là và j ∈ { 1 , Lỗi , n }i ∈ { 1 , ... , n }j ∈ { 1 , ... , n }
- Một trong các phần tử trong danh sách, được hoán đổi, tức là và j ∈ { 1 , Lỗi , n }i = n + 1j ∈ { 1 , ... , n }
- Yếu tố mới, tức là và j = n + 1i ∈ { 1 , ... , n + 1 }j = n + 1
Đối với mỗi trường hợp, chúng tôi tính xác suất của phần tử ở vị trí i ; tất cả phải trở thành 1jtôi (là đủ vì(1)). Đặtpn=11n + 1( 1 ) là xác suất của một trongnphần tửđầu tiênở bất kỳ vị trí nào trong danh sách cũ (giả thuyết cảm ứng) vàps=1pn= 1nn xác suất của bất kỳ vị trí nào được chọn bởi(giả định 1, 2). Lưu ý rằng coice của danh sách cónphần tử và chọn vị trí hoán đổi làcác sự kiện độc lập, do đó xác suất của yếu tố sự kiện chung, ví dụ:pS= 1n + 1random_item
n
Pr( Ltôi= j , tôi đổi chỗ ) = Pr( Ltôi= j ) ⋅ Pr( tôi đã tráo đổi ) = pnpS
cho . Bây giờ cho các tính toán.i , j ∈ { 1 , Mạnh , n }
Chúng tôi chỉ xem xét các yếu tố cũ . Một phần tử j như vậy ở vị trí i khi và chỉ khi nó ở đó trước lần chèn cuối cùng và tôi không được chọn làm vị trí hoán đổi, đó là njtôitôi
.Pr( Ltôi= j ) = pn( 1 - pS) = 1n⋅ nn+ 1= 1n + 1
Ở đây chúng tôi xem xét rằng một trong những yếu tố cũ được hoán đổi đến vị trí cuối cùng. Phần tử có thể đã ở bất kỳ vị trí cũ nào, vì vậy chúng tôi tổng hợp tất cả các xác suất mà j ở vị trí i và tôi được chọn làm vị trí hoán đổi, đó làjjtôitôi
.Pr(Ln+ 1= j ) = ∑tôi= 1npnpS= ∑i = 1n1n⋅ 1n + 1= 1n + 1
Phần tử mới kết thúc tại vị trí khi và chỉ khi tôi được chọn làm vị trí hoán đổi, đó làtôitôi
.Pr( Ltôi= j ) = pS= 1n + 1
Tất cả hóa ra tốt, chiến lược chèn của bạn thực sự bảo tồn tính đồng nhất. Bằng sức mạnh của cảm ứng, điều đó chứng tỏ rằng thuật toán của bạn tạo ra các hoán vị phân bố đồng đều.
Một lời cảnh báo: bằng chứng này bị phá vỡ nếu các yếu tố được chèn không theo cặp khác nhau. phân biệt, bởi vì sau đó phương trình đầu tiên không còn hiệu lực. Nhưng thuật toán của bạn vẫn hợp lệ; mọi hoán vị với các bản sao được tạo bởi cùng một số lần thực hiện ngẫu nhiên. Bạn có thể chứng minh điều này bằng cách đánh dấu các bản sao (nghĩa là làm cho chúng có thể phân biệt được), thực hiện các bằng chứng trên và loại bỏ các đánh dấu (hầu như); bước cuối cùng thu gọn các bộ hoán vị có kích thước bằng nhau.
Như Steven đã nhận xét chính xác trong các ý kiến, bằng chứng trên về cơ bản là thiếu sót vì không giữ được; bạn có thể xây dựng các bản phân phối trên tập hợp hoán vị hoàn thành bên tay phải, nhưng không phải bên trái.( 1 )
random_item
L( k ){ 1 , ... , k }
π'∈ P e r mn + 1{ 1 , ... , n + 1 }
π'= ( π( 1 ) , π( 2 ) , ... , π( i - 1 ) , n + 1 , π( I + 1 ) , ... , π( n ) , π( I ) )
π∈ P e r mntôi ∈ { 1 , ... , n + 1 }Pr( L( n )= π) = 1n !random_item
tôi1n + 1πtôi
Pr( L( n + 1 )= π') = Pr( L( n )= π) ⋅ Pr( tôi đã tráo đổi ) = 1( n + 1 ) !
mà chúng tôi đã phải thể hiện. Bằng sức mạnh của cảm ứng, điều đó chứng tỏ rằng thuật toán của bạn tạo ra các hoán vị phân bố đồng đều.
- { ( 1 , 2 , 3 , 4 ) , ( 2 , 3 , 4 , 1 ) , ( 3 , 4 , 1 , 2 ) , ( 4 , 1 , 2 , 3 ) }140