Chuyển đến nội dung chính

Bài đăng

Đang hiển thị bài đăng từ Tháng 10, 2020

GIẢI THÍCH MỘT SỐ DẠNG BIG O: O(LOGN)

GIẢI THÍCH MỘT SỐ DẠNG BIG O: O(LOGN) Đây là một độ phức tạp điển hình, có rất nhiều trong các dạng cấu trúc dữ liệu và giải thuật cơ bản. Nắm được cách tính độ phức tạp O(logn) của các thuật toán sẽ giúp bạn tự tin hơn được 50% trong hầu hết các dạng big O. Trước khi bắt đầu bài viết, mình muốn các bạn cần tìm hiểu qua về hai bài viết cũ của mình về Big O là gì và cách tính độ phức tạp của Big O cho hàm đệ quy. Bạn tham khảo qua hai bài viết sau:

Tìm hiểu về vector một cách dễ hiểu và chi tiết

  Tìm hiểu về vector một cách dễ hiểu và chi tiết Bạn đã từng học và nghe qua về Vector, nhưng bạn đã thực sự hiểu chúng chưa. Hãy cùng mình tìm hiểu nhé! Trước khi định nghĩa Vector là gì thì chúng ta hãy nhớ thử xem khi người ta nhắc về Vector, bạn liên tưởng về cái gì: -         Là một mũi tên với con số thể hiện trên đó -         Hay đôi khi nó còn là 1 ma trận 1 cột è Thực ra thì vector bao gồm cả hai cái đó, nó có chung một định nghĩa, nhưng sẽ có những cách biểu diễn khác nhau. Cho một điểm A(4, 3) như hình Ta muốn di chuyển A đến tọa độ (6,5). Trong lúc này, ta muốn có một phép toán nào đó đại loại A(4, 3) + alpha = A(6,5). Alpha này gọi là Vector.   Bạn để ý rằng nó giống như một hướng dẫn di chuyển cho điểm vậy. Để hướng dẫn một gì đó di chuyển tới vị trí nào đó, ta thường sẽ xác định 2 thông tin, thứ nhất đó là hướng, và thứ hai đó là độ lớn (số bước đi). Theo như định...

ĐỘ PHỨC TẠP THỜI GIAN CỦA BFS ĐỐI VỚI CÂY ĐỒ THỊ

  ĐỘ PHỨC TẠP THỜI GIAN CỦA BFS ĐỐI VỚI CÂY ĐỒ THỊ Ở đây chúng ta không nói đến cách thuật toán hoạt động ra sao, chỉ xét đến độ phức tạp của thuật toán. (Các bạn nên xem các bài trước về cách tính big O trước khi xem bài này nhé) Ta sẽ tóm lại các bước của quá trình duyệt BFS rồi tiến hành phân tích: B1: Khởi tạo một danh sách là một queue B2: Truyền vào danh sách node bắt đầu B3: Lặp B3.1: Nếu danh sách hết thì sẽ kết thúc (false) B3.2: Lấy một phần tử ra khỏi danh sách, đặt là current B3.3: Nếu current là goal thì kết thúc (true) B3.4: Duyệt từng con của nó và thêm vào danh sách Tiếp theo ta tiến hành đặt ký hiệu: Gọi b là độ sâu tối đa của cây và d là số nhánh tối đa của nó như hình. Vì sao ta lại chọn là tối đa? Vì một cây thông thường thì số nhánh cũng như độ sâu từng node lá sẽ không cố định, nên ta sẽ xét trường hợp xấu nhất để thuận tiện tính toán cũng như là biết được giới hạn của nó. Trong thuật toán ta để ý rằng vòng lặp ở bước ba số lần lặp ...