B-tree trong Factorio
(razberry.substack.com)Tìm hiểu về B-tree
-
Cây tìm kiếm nhị phân (Binary Search Trees, BSTs): mỗi nút có một khóa; nút bên trái có giá trị khóa thấp hơn, còn nút bên phải có giá trị khóa cao hơn.
-
BST chỉ hoạt động khi các khóa có thể sắp xếp được; nếu các giá trị chỉ được thêm về một phía thì cây sẽ mất cân bằng và hiệu quả giảm đi.
-
BST bị mất cân bằng có thể được sửa bằng cách xoay trục (pivoting), nhưng không phù hợp với lưu trữ dựa trên đĩa (cần tái cân bằng thường xuyên và các nút kề nhau có thể được lưu ở những trang khác nhau).
-
B-tree: gồm các nút có nhiều khóa và con trỏ hơn so với cây nhị phân.
-
Mỗi nút có nhiều khóa và nhiều con trỏ tương ứng với từng khóa (ví dụ: một nút có khóa 17 và 24 sẽ có con trỏ đến các nút có khóa nhỏ hơn 17, các nút có khóa nằm giữa 17 và 24, và các nút có khóa lớn hơn 24).
Triển khai B-tree trong Factorio
- Cách triển khai cây tìm kiếm nhị phân đơn giản trong Factorio (trò chơi xây dựng nhà máy): mỗi nút gồm một rương gỗ (khóa) và hai tuyến đường (con trỏ).
- Vì không có cách nào để so sánh giá trị của các vật liệu, tác giả gán cho chúng một thứ tự tùy ý và dùng tay máy lọc để so sánh.
- Việc triển khai B-tree phức tạp hơn: mỗi nút có ba khóa và bốn con trỏ tới các nút con.
- B-tree có thể lưu nhiều thông tin hơn; thay vì sắp xếp vật phẩm thủ công, tác giả tạm để cây trống cho đến khi tìm ra cách biểu diễn tốt hơn sau này.
Ý kiến của GN⁺
- Điều quan trọng nhất trong bài viết này là hiểu được khái niệm B-tree và cách tiếp cận sáng tạo khi triển khai nó trong trò chơi Factorio.
- Điểm thú vị với độc giả là bài viết mang đến cơ hội hiểu các cấu trúc dữ liệu phức tạp của khoa học máy tính theo cách trực quan và dễ cảm nhận thông qua trò chơi.
- Cách tiếp cận này khiến việc học trở nên thú vị và hấp dẫn hơn, đồng thời gợi ra một phương thức mới để khám phá các khái niệm nền tảng của kỹ thuật phần mềm thông qua những phương tiện phi truyền thống như trò chơi.
1 bình luận
Ý kiến trên Hacker News