Tôi có thể tìm thông tin về Cấu trúc dữ liệu được sử dụng trong phần mềm phổ biến ở đâu?


6

Là một phần của khóa học tôi đang giảng dạy về Cấu trúc dữ liệu, tôi muốn sinh viên nghiên cứu và trình bày việc sử dụng Cấu trúc dữ liệu trong phần mềm / dịch vụ phổ biến. Tuy nhiên, googling cơ bản cho tôi thấy rằng thông tin này không có sẵn như vậy.

Ai đó có thể chỉ cho tôi các tài nguyên phù hợp mà tôi có thể chia sẻ với các sinh viên như một điểm khởi đầu cho nghiên cứu của họ không?

BIÊN TẬP

Đánh giá từ các câu trả lời nhận được, câu hỏi ban đầu không đủ rõ ràng vì vậy tôi đang thêm chi tiết.

Tôi đang tìm kiếm các tài nguyên thuộc loại trạng thái, ví dụ, dịch vụ-x sử dụng cấu trúc dữ liệu-a để thực hiện chức năng-y vì thuộc tính-b . Đây là trường hợp lý tưởng. Các tài nguyên khác cung cấp thông tin tương tự cũng được chào đón.


1
Với rất nhiều phần mềm có nguồn mở và được lưu trữ trên GitHub, bạn có thể thử tìm kiếm một số cấu trúc dữ liệu thường được sử dụng trên GitHub. Bạn sẽ tìm thấy số lượng đáng kinh ngạc của hit ở đó.
Andrew Au

Một tìm kiếm như thế chỉ mang lại việc triển khai trực tiếp cấu trúc dữ liệu, ví dụ ở đây . Tôi đang tìm kiếm trường hợp cấu trúc dữ liệu là một phần của phần mềm lớn hơn. Có lẽ bạn có thể đề xuất một cách hữu ích hơn để tìm kiếm.
wsaleem

Chọn cấu trúc dữ liệu yêu thích của bạn và cuốn sách thuật toán. Mỗi một cấu trúc được mô tả được sử dụng khá thường xuyên. Và các cấu trúc kỳ lạ hơn (văn học là xa xỉ), được sử dụng trong các trường hợp là hiệu suất của anh em buồn tẻ của họ giảm xuống.
vonbrand

1
Chọn bất kỳ thư viện mã nguồn mở - có rất nhiều. Sinh viên có thể học được rất nhiều bằng cách đào qua mã nguồn và tài liệu, tôi đoán vậy.
Raphael

2
@SamM Có lẽ không phải là "phần mềm phổ biến", nhưng các đống Fibonacci thường được sử dụng trong tập hợp genome và transcriptome để giải trình tự thế hệ thứ hai. Các nhà lắp ráp của De novo như Velvet và SOAPdenovo sử dụng thuật toán đường dẫn ngắn nhất của Dijkstra để phát hiện các lỗi đọc tiềm năng.
Bút danh

Câu trả lời:


10

Off đỉnh đầu của tôi:

Mỗi hệ điều hành hiện đại sử dụng các cây tìm kiếm nhị phân cân bằng để thực hiện bản đồ bộ nhớ ảo của một quá trình. Windows sử dụng cây splay, Linux và OS X sử dụng cây đỏ đen và Solaris sử dụng cây AVL. Họ làm điều này bởi vì hệ điều hành cần lưu trữ bản đồ bộ nhớ ảo theo thứ tự (theo địa chỉ ảo), để cho phép chèn và xóa nhanh và tìm kiếm các khu vực không sử dụng nơi có thể phân bổ không gian.

Nhiều trò chơi 3D hiện đại (ví dụ: bất kỳ trò chơi nào sử dụng phiên bản Unreal Engine gần đây) đều sử dụng quãng tám để xác định những vật thể nào có thể nhìn thấy trước máy ảnh. Họ làm điều này bởi vì nó khá hiệu quả để tính toán những nút nào trùng lặp với sự thất vọng của máy ảnh.

Nhiều bộ định tuyến (nếu không phải hầu hết) sử dụng cây cơ số để thực hiện các bảng định tuyến. Họ làm điều này bởi vì nó thường là tiền tố của một địa chỉ mạng (tức là các bit quan trọng nhất) rất quan trọng, không phải là toàn bộ khóa. Hơn nữa, việc tra cứu mất thời gian chỉ phụ thuộc vào kích thước của địa chỉ, chứ không phải số lượng mục nhập bảng định tuyến, giúp việc dự đoán thời gian dễ dàng hơn.

Bảng băm, tất nhiên, được sử dụng ở khắp mọi nơi. Phần mềm chống vi-rút sử dụng phần mềm này để thực hiện tra cứu trong cơ sở dữ liệu về phần mềm độc hại đã biết, bộ xử lý văn bản sử dụng phần mềm này để thực hiện kiểm tra chính tả, v.v.

Cấu trúc dữ liệu đồ thị được sử dụng bởi các bảng tính để thực hiện đánh giá. Hãy nghĩ về mỗi ô bị chiếm đóng như một nút và vẽ một vòng cung giữa các ô nếu giá trị của một ô trực tiếp phụ thuộc vào giá trị của ô kia. Khi một mục thay đổi trong một ô, biểu đồ được duyệt qua để xác định ô nào cần cập nhật dựa trên thay đổi đó.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.