30/09/2018, 18:17

Cách tính độ phức tạp của thuật toán?

Cho mình hỏi bạn nào biết cách tính độ phức tạp của các thuật toán có thể giải thích ngắn gọn cho mình cách tính hoặc có tài liệu nào dễ hiểu chút cho mình xin để tìm hiểu. Kỳ này mình học môn Trí Tuệ Nhân Tạo có liên quan khá nhiều đến thuật toán mà lại không biết gì về cách tính độ phức tạp thuật toán. Mình cảm ơn.

17XGOD viết 20:17 ngày 30/09/2018

Mình cũng hóng Hồi trước làm mấy đề thi hsg có ghi độ phức tạp mà mình không hiểu lắm

HK boy viết 20:22 ngày 30/09/2018
Em mới viết 1 bài viết về độ phức tạp thuật toán (có tham khảo và có rút tỉa những ý chính). Mong mọi người nhận xét (về nội dung, về độ dễ hiểu,...) để em sửa ạ. Rất hoan nghênh những đóng góp ý kiến của mọi người! Có link github ở bên cạnh tag algorithm ạ, mong là ai cũng thấy để không có cmt "Bạn ơi mình không thấy link" https://github.com/neihousaigaai/diễn đànWiki/blob/master/Algorithm/Others/complexity-of-algorithms.md

P/s: Vẫn biết là đào mộ, nhưng mình vẫn cmt.

NhatTa viết 20:26 ngày 30/09/2018

ví dụ đơn giản:
int n = b + c;
Có độ phức tạp là O(1)

int n = b + c; // Độ phức tạp là 1
for(int index = 0; index < n; index++)
{
}
có độ phức tạp là 1 + n => O(n) vì 1 quá nhỏ nên bỏ qua

int n = b + c;
for(int index = 0; index < n; index++)
{
for(;n;)
}
Có độ phức tạp là 1 + n mũ 2 ==> O(n mũ 2)

Còn mấy cái phức tạp như O(log(n)) thì lên mạng search sẽ có chỉ cách tính =))

rogp10 viết 20:23 ngày 30/09/2018

Khi tính phải cẩn trọng với độ phức tạp của các câu lệnh thành phần. Ngoài ra nếu có break; thì chuyện nó không đơn giản đâu.

HelloWorld viết 20:26 ngày 30/09/2018

Cách tính độ phức tập của thuật toán có 2 dạng. Hồi mới học mình cũng loay hoay phân vân khó hiểu.
1 là tính độ phức táp trên code đã có sắn hoặc đã có giả mã. ( thường lập trình viên làm cách này. Nghĩ ra thuật toán thì code r mới đánh giá)
2 là tính độ phức tạp khi chưa có giải mã hay code. Mà tính khi mới hình thành ý tưởng, khi phân tích trên cơ sở toán học. Cái này kiến thức toán phải vững (thường mấy người học chuyên toán hoặc khmt. Theo hướng nghiên cứu. Phân tích thiết kế thuật toán hay làm cách này)

Bài liên quan
0