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

Tổng quan về Machine Learning

  TỔNG QUAN VỀ MACHINE LEARNING Dưới đây là note của mình về tóm tắt tổng quan về Machine Learning, về một số các mô hình truyền thống. Mọi người có thể tham khảo theo bài viết dưới đây! https://www.facebook.com/share/p/1HsBe8P9Xy/ Người viết: Lê Công Diễn Mang đi nhớ ghi nguồn

ĐỘ 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 của nó chính là số lần duyệt đỉnh current. Và mỗi lần lấy current sẽ duyệt b lần để lấy đỉnh con (B3.4). Các bước khác chỉ là cố định O(1) nên ta không xét.

Giả sử như không tồn tại bước duyệt B3.4, độ phức tạp của thuật toán sẽ chính là số lần duyệt qua tất cả các node của đồ thị. Như thế ta sẽ tính thử số lần duyệt node của đồ thị.

Ta thấy đồ thị có nguyên tắc sau (hình trên): Với b = 3, tại vị trí depth = 0 thì số node sẽ là b0 = 1, depth = 1 thì số node là b1 = 3,... Như vậy tại vị trí k bất kỳ thì số node sẽ là bk. Đặt k = d => vị trí tối đa sẽ duyệt bd node. Tổng số node ta có thể duyệt qua sẽ là:

f’(b,d) = b0 + b1 + b2 + ... + bd

Nhưng ta nhớ rằng với mỗi node gọi là current ta lấy ra và duyệt, sẽ tồn tại bước B3.4 là duyệt qua b node con để thêm vào danh sách. Như vậy hàm số thực sự sẽ là:

 f(b,d) = (b0 + b1 + b2 + ... + bd - 1)*b + bd

Vì sao tại số lần duyệt bd không được nhân với b? Tại đây là lần duyệt của các nút lá. Ở nút lá không tồn tại nút con để duyệt cho nên không được tính vào.

f(b,d) = b1 + b2 + b3 + ... + bd + bd

f(b,d) = b1 + b2 + b3 + ... + 2bd

Ta nhớ rằng khi xét big O ta chọn hệ số có sự biến đổi lớn nhất. Ở đây là 2bd.

Tiếp theo ta loại bỏ hệ số không cần thiết là 2, vì nó không làm thay đổi bản chất của một đồ thị hàm mũ. (độ biến thiên vẫn không thay đổi)

Như vậy ta có thể kết luận độ phức tạp của thuật toán là O(bd)  

Lời kết: Đây hoàn toàn là bài phân tích của riêng mình thông qua kiến thức mình có được, nếu có sai sót mong các bạn đóng góp thêm!

Nội dung bài viết thuộc về Lê Công Diễn.

 

Người viết: Lê Công Diễn

Mang đi nhớ ghi nguồn

 

Nhận xét

Bài đăng phổ biến từ blog này

TÂN SINH VIÊN NÊN LỰA CHỌN LAPTOP NHƯ THẾ NÀO? (CỰC CHI TIẾT)

  TÂN SINH VIÊN NÊN LỰA CHỌN LAPTOP NHƯ THẾ NÀO (CỰC CHI TIẾT)? Mùa tựu trường cũng đã đến gần, và đây cũng là lúc các bạn sinh viên nhập học chuẩn bị sắm sửa cho mình một chiếc laptop cá nhân, phục vụ cho quãng thời gian học đại học của bạn. Tuy nhiên, vì là tân sinh viên nên bạn chưa hề có bất kỳ kinh nghiệm gì trong việc lựa chọn chiếc laptop phù hợp. Bản thân mình không phải là một tay chơi laptop, tuy nhiên mình có đủ kiến thức cơ bản để tìm kiếm và lựa chọn chiếc laptop phù hợp với bản thân mình. Hy vọng bài viết này sẽ phần nào giúp bạn, có thể là một tân sinh viên, hoặc có thể là một ai đó bất kỳ, tìm ra cho mình một chiếc laptop ưng ý nhất. Trước khi đi thẳng vào việc lựa chọn laptop, mình sẽ đưa ra rõ từ bối cảnh bản thân cho đến thông tin về thị trường laptop. Từ bối cảnh này bạn sẽ có cơ sở lựa chọn và đưa ra quyết định đúng đắn, phù hợp với bản thân hơn. Tiểu sử mua laptop của bản thân mình (tâm lý sinh viên khi mới mua) Vào khoảng thời gian này tầm 7 năm về trước (ngh...

Tổng quan về Machine Learning

  TỔNG QUAN VỀ MACHINE LEARNING Dưới đây là note của mình về tóm tắt tổng quan về Machine Learning, về một số các mô hình truyền thống. Mọi người có thể tham khảo theo bài viết dưới đây! https://www.facebook.com/share/p/1HsBe8P9Xy/ Người viết: Lê Công Diễn Mang đi nhớ ghi nguồn

Tìm hiểu Linear Regression [Machine Learning cho người ngố]

  Machine Learning cho người ngố Phần 1: Linear Regression Mình đang dự định làm một series về Machine Learning. Không hẳn là sẽ có nhiều thời gian làm về cái này, nhưng sự hứng thú của mình về nó sẽ là động lực lớn để mình cố gắng thêm. Bạn có thấy tiêu đề bài viết của mình có gì khác lạ không? Cho người ngố? Cụm từ tiếng Anh của nó là “for dummies”. Bạn sẽ phát hiện ra rằng cụm từ này xuất hiện nhiều trong các tựa đề cuốn sách “Design Pattern for Dummies”, “ English Grammar for Dummies”,… cụm từ này có nghĩa là ngay cả khi bạn ngu ngốc thì vẫn có thể đọc được. Và đó cũng chính là mục tiêu của mình khi viết bài blog, làm sao để mọi người có thể đọc được. Các bài viết trên mạng đều sử dụng khá nhiều thuật ngữ và được viết một cách bài bản, vì họ là người chuyên đi nghiên cứu. Còn mình khi viết bài sẽ cố gắng đứng trên góc độ của các bạn, và giải thích rõ những thuật ngữ, cũng như dùng lời văn gần gũi nhất. Nào cùng bắt đầu nhé! Phần đầu tiên chúng ta sẽ tìm hiểu về Linear...