Tôi đang phân tích một thuật toán và tôi chỉ muốn biết liệu tôi có đi đúng hướng hay không.Phân tích các thuật toán cho độ phức tạp thời gian
Đối với thuật toán này, tôi chỉ tính các phép nhân trên dòng có *** trong chúng.
Dưới đây là các thuật toán:
- Vì vậy, tôi bắt đầu từ dòng hầu hết bên trong, tôi có thể thấy có 2 hoạt động ở đó (hai phép nhân).
- Bây giờ tôi đang xem xét 2 vòng bên trong nhất, vì vậy tôi có thể nói rằng
p=p*20*z
được thực thi chính xác(j) + (j-1)+(j-2)+(j-3)...1
lần. Điều này xảy ra bằngj(j+1)/2
. - Vì vậy, trong tổng số, vì có hai phép nhân, nó xảy ra
2 * (j(j+1)/2)
. - Sau đó, vòng lặp "i" xảy ra chính xác n lần, vì vậy, tổng cộng, đó là
n(2 * (n(n+1)/2))
.
Đó là quá trình suy nghĩ của tôi sau này. Tôi có đúng không? Cảm ơn.
Không bạn thì không. Kết quả cuối cùng chỉ nên chứa 'n'. Bạn có 'j' ở đó. –
cảm ơn phản hồi nhanh. Nó sẽ là n (2 * (n (n + 1)/2))? – 0xSina
Thực ra, tôi nghĩ đó chỉ là một lỗi đánh máy khi thay thế j cho n là đúng cho đạo hàm mà anh ta đi qua đó, bởi vì n là j lớn nhất. @ PragmaOnce có, mặc dù rõ ràng là có thể được đơn giản hóa khá một chút. –