Jika perawatan siapa pun tentang faktor, dengan analisis yang cermat kita dapat membuktikan kompleksitas waktu untuk algoritma Chao adalah O ( n A log ( n A ) ) .catatanO ( n A log( n A ) )
Bukti. Pada lapisan genap dari pohon rekursi, kami mempartisi himpunan menjadi dua himpunan berukuran sama S 1 dan S 2 , yang menghasilkan
T e ( n , A ) = T o ( n / 2 , A ′ ) + T o ( n / 2 , A - A ′ ) + O ( n A log ( n A ) ) ,SS1S2
Te( n , A ) = THai( n / 2 , A′) + THai( n / 2 , A - A′) + O ( n A log( n A ) ) ,
dan pada lapisan ke-3 dari pohon rekursi, kita mempartisi himpunan
menjadi dua "himpunan sama" set
S 1 dan
S 2 . Lebih tepatnya, kita dapat mempartisi himpunan
S dengan jumlah
A menjadi dua himpunan
S 1 dan
S 2 dengan masing-masing jumlah hingga
≤ A / 2 , dengan paling banyak satu elemen tersisa. Kita dapat menangani elemen itu dengan pemrograman dinamis sepele di
O ( A ) . Ini memberi
T o ( n , A ) = T eSS1S2SSEBUAHS1S2≤ A / 2O(A)
mana
n 1 = | S 1 | . Oleh karena itu kami memiliki
T ( n , A ) ≤ 4 Σ i = 1 T ( n i ,To(n,A)=Te(n1,A/2)+Te(n−n1,A/2)+O(nAlog(nA)),
n1=|S1|
mana
∑ 4 i = 1 n i ≤ n ,
∑ 4 i = 1 A i ≤ A , dan
∀ i , n i ≤ n / 2 , A i ≤ A / 2 . Ini akan memberi kita
T ( n , A )T(n,A)≤∑i=14T(ni,Ai)+O(nAlog(nA)),
∑4i=1ni≤n∑4i=1Ai≤A∀i, ni≤n/2, Ai≤A/2 .
T(n,A)=O(nAlog(nA))