✨Đống (cấu trúc dữ liệu)

Đống (cấu trúc dữ liệu)

Trong khoa học máy tính, đống (tiếng Anh: heap) là một cấu trúc dữ liệu dựa trên cây thỏa mãn tính chất đống: nếu B là nút con của A thì khóa(A)≥khóa(B). Một hệ quả của tính chất này là khóa lớn nhất luôn nằm ở nút gốc. Do đó một đống như vậy thường được gọi là max-heap. Nếu mọi phép so sánh bị đảo ngược khiến cho khóa nhỏ nhất luôn nằm ở nút gốc thì đống đó gọi là min-heap. Không có hạn chế nào về số lượng nút con của mỗi nút trong đống nhưng thông thường mỗi nút có không quá hai nút con. Đống là một cách thực hiện kiểu dữ liệu trừu tượng mang tên hàng đợi ưu tiên. Đống có vai trò quan trọng trong nhiều thuật toán cho đồ thị chẳng hạn như thuật toán Dijkstra, hay thuật toán sắp xếp heapsort.

Không nên nhầm lẫn cấu trúc dữ liệu đống với đống thường được dùng cho bộ nhớ cấp phát động. Thuật ngữ này ban đầu chỉ được dùng cho cấu trúc dữ liệu, nhưng sau này cũng được dùng để chỉ các vùng bộ nhớ cấp phát động.

Các thao tác thường gặp trên đống là:

  • tìm-max (tìm-min): tìm khóa lớn nhất trong max-heap (tìm khóa nhỏ nhất trong đống-min).
  • xóa-max (xóa-min): xóa nút gốc của max-heap (min-heap)
  • tăng-khóa (giảm-khóa): thay đổi giá trị một khóa trong max-heap (min-heap)
  • chèn: chèn thêm một khóa mới vào đống
  • hợp: hợp hai đống lại thành một đống mới chứa tất cả các khóa của cả hai

Các biến thể

  • Đống nhị phân
  • Đống nhị thức
  • Đống Fibonacci
  • Đống ghép
  • Đống ghép dùng hạng
  • Đống mềm

So sánh các biến thể

Bảng sau đây thống kê độ phức tạp tính toán của các thao tác trên đống. Tất cả các mục đều là thời gian xấu nhất ngoại trừ các mục được đánh dấu sao là thời gian trả dần. Tên hàm được đặt theo đống-max.

(*)Thời gian trả dần
(**)n là kích thước của đống lớn hơn

Ứng dụng

Cấu trúc dữ liệu đống có rất nhiều ứng dụng.

  • Heapsort: Một trong những phương pháp sắp xếp tại chỗ tốt nhất
  • Thuật toán lựa chọn: có thể sử dụng đống để tìm phần tử lớn nhất, nhỏ nhất, trung vị, phần tử lớn thứ k, trong thời gian tuyến tính.
  • Thuật toán cho đồ thị: nhiều thuật toán cho đồ thị sử dụng cấu trúc dữ liệu đống chẳng hạn như thuật toán Dijkstra, hay thuật toán Prim.
👁️ 1 | 🔗 | 💖 | ✨ | 🌍 | ⌚
Trong khoa học máy tính, **đống** (tiếng Anh: _heap_) là một cấu trúc dữ liệu dựa trên cây thỏa mãn _tính chất đống_: nếu B là nút con của A thì khóa(A)≥khóa(B). Một hệ quả
Đây là danh sách các cấu trúc dữ liệu. Bạn có thể xem danh sách thuật ngữ rộng hơn tại danh sách các thuật ngữ liên quan đến cấu trúc dữ liệu và giải thuật.
nhỏ|Ví dụ về một cây nhị phân Trong khoa học máy tính, **cây** là một cấu trúc dữ liệu được sử dụng rộng rãi gồm một tập hợp các nút (tiếng Anh: _node_) được liên
thumb|Một ví dụ về lấy dữ liệu đầu ra từ truy vấn cơ sở dữ liệu SQL. **Cơ sở dữ liệu** () là một tập hợp các dữ liệu có tổ chức liên quan đến
thumb|Sự tăng trưởng và số hóa các khả năng lưu trữ thông tin trên toàn cầu **Dữ liệu lớn** (Tiếng Anh: **Big data**) là một thuật ngữ cho việc xử lý một tập hợp dữ
nhỏ|Các loại dữ liệu có thể được hình dung thông qua một thiết bị máy tính **Dữ liệu **là chuỗi bất kỳ của một hoặc nhiều ký hiệu có ý nghĩa thông qua việc giải
nhỏ|Cấu trúc của dãy [[ADN|DNA.]] **Cấu trúc** là sự sắp xếp và tổ chức các yếu tố bên trong của một vật hay hệ thống nào đó. Vật liệu cấu trúc bao gồm do con
Trong khoa học máy tính, **kiểu dữ liệu trừu tượng** (tiếng Anh: _abstract data type_, viết tắt: **ADT**) là một mô hình toán học cho kiểu dữ liệu mà ở đó dữ liệu được định
Một **đống nhị phân** là một cấu trúc dữ liệu đống dựa trên cây nhị phân. Đống nhị phân thường được sử dụng để triển khai hàng đợi ưu tiên. Đống nhị phân được giới
nhỏ| Ví dụ về thu thập dữ liệu trong khoa học sinh học: [[Chim cánh cụt Adélie được xác định và được cân mỗi khi chúng đi qua cầu cân tự động trên đường đến
**Mô hình cơ sở dữ liệu phân cấp** (tiếng Anh: hierarchical database model) là một loại mô hình dữ liệu, trong đó dữ liệu được tổ chức thành cấu trúc dạng cây. Dữ liệu được
**Kho dữ liệu** (tiếng Anh: _data warehouse_) là kho lưu trữ dữ liệu lưu trữ bằng thiết bị điện tử của một tổ chức. Các kho dữ liệu được thiết kế để hỗ trợ việc
nhỏ|Mô phỏng thuật toán sắp xếp vun đống|403x403px **Sắp xếp vun đống** (_Heapsort_) dựa trên một cấu trúc dữ liệu được gọi là đống nhị phân (_binary heap_), gọi đơn giản là đống. Trong mục
Trong khoa học máy tính, **treap** và **cây tìm kiếm nhị phân ngẫu nhiên hóa** là hai dạng cấu trúc dữ liệu cây tìm kiếm nhị phân liên quan chặt chẽ đến nhau. Chúng lưu
thumb|Quy trình mô hình hóa dữ liệu. Hình ảnh minh họa cách mô hình dữ liệu được phát triển và sử dụng ngày nay. Một [[sơ đồ khái niệm|mô hình dữ liệu khái niệm được
**Rò rỉ dữ liệu** hay **vi phạm dữ liệu**, **lộ dữ liệu** là "việc tiết lộ, công khai hoặc làm mất thông tin cá nhân một cách trái phép". Kẻ tấn công có nhiều động
**Tái tạo và thu thập dữ liệu 3D** là việc tạo ra các mô hình ba chiều hoặc không gian từ dữ liệu cảm biến. Các kỹ thuật và lý thuyết, nói chung, hoạt động
Trong lĩnh vực điện toán**, Khôi phục dữ liệu** (hay **Phục hồi dữ liệu**) là quá trình sử dụng các thiết bị, phần mềm lấy lại dữ liệu từ bị hư hỏng, lỗi hoặc bị
**Trao đổi dữ liệu điện tử** (Electronic Data Interchange - EDI) là sự truyền thông tin từ máy tính gửi đến máy tính nhận bằng phương tiện điện tử, trong đó có sử dụng một
**Máy truy tìm dữ liệu trực tuyến** hay **máy tìm kiếm** hay **cỗ máy tìm kiếm** (tiếng Anh: _search engine_), hay còn được gọi với nghĩa rộng hơn là **công cụ tìm kiếm** (_search tool_),
Trong khoa học máy tính, **thuật toán dòng dữ liệu** là thuật toán để xử lý các dòng dữ liệu trong đó dữ liệu vào được cung cấp dưới dạng một dãy các phần tử,
thumb|**Cấu trúc protein** từ cấu trúc bậc 1 tới cấu trúc bậc 4. **Protein** (Protid hay Đạm) là những đại phân tử được cấu tạo theo nguyên tắc đa phân mà các đơn phân là
Trong hoạt động tính toán máy tính, **dữ liệu liên kết** mô tả một phương thức tạo ra dữ liệu có cấu trúc để có thể liên kết được với nhau và trở nên có
**Tích hợp dữ liệu** liên quan đến việc kết hợp dữ liệu cư trú trong các nguồn khác nhau và cung cấp cho người dùng một cái nhìn thống nhất về chúng. Quá trình này
phải|khung|Một cây có dán nhãn với 6 đỉnh và 5 cạnh **Cây** là khái niệm quan trọng trong lý thuyết đồ thị, cấu trúc dữ liệu và giải thuật. Cây là một đồ thị mà
nhỏ|315x315px|Một danh bạ điện thoại nhỏ được xem như một bảng băm. Trong khoa học máy tính, **bảng băm** là một cấu trúc dữ liệu sử dụng hàm băm để ánh xạ từ giá trị
**Hệ thống quản lý cơ sở dữ liệu hoạt động** (còn gọi là OLTP Trên cơ sở dữ liệu Transaction Processing Line), được sử dụng để quản lý Dữ liệu động trong thời gian thực.
**Hàng đợi** (tiếng Anh: _queue_) là một cấu trúc dữ liệu dùng để chứa các đối tượng làm việc theo cơ chế **FIFO** (viết tắt từ tiếng Anh: _First In First Out_), nghĩa là "vào
thế=Sơ đồ luồng dữ liệu bao gồm lưu trữ dữ liệu, luồng dữ liệu, chức năng và giao diện.|nhỏ|387x387px|Sơ đồ luồng dữ liệu bao gồm lưu trữ dữ liệu, luồng dữ liệu, chức năng và
**Xử lý dữ liệu điện tử** có thể đề cập đến việc sử dụng các phương pháp tự động để xử lý dữ liệu thương mại. Thông thường, điều này sử dụng các hoạt động
**Phân tích dữ liệu** là một quá trình kiểm tra, làm sạch, chuyển đổi và mô hình hóa dữ liệu với mục tiêu khám phá thông tin hữu ích, thông báo kết luận và hỗ
nhỏ| Trung tâm dữ liệu [[ARSAT (2014) ]] **Trung tâm dữ liệu** (tiếng Anh Mỹ: data center, hoặc tiếng Anh Anh: data centre), là một tòa nhà, không gian dành riêng trong tòa nhà hoặc
nhỏ|phải|300x300|[[Tam giác Sierpinski]] **Đệ quy** (tiếng Anh: _recursion_) là phương pháp dùng trong các chương trình máy tính trong đó có một hàm tự gọi chính nó. ## Khái niệm hình thức về đệ quy
**Truy cập dữ liệu** là một thuật ngữ chung đề cập đến một quy trình có cả ý nghĩa cụ thể về CNTT và các ý nghĩa khác liên quan đến quyền truy cập theo
**Máy chủ cơ sở dữ liệu** (_database server_) là một máy chủ sử dụng ứng dụng cơ sở dữ liệu cung cấp các dịch vụ cơ sở dữ liệu cho các chương trình máy tính
Chuẩn hóa cơ sở dữ liệu là một phương pháp khoa học để phân tách (scientific method of breaking down) một bảng có cấu trúc phức tạp (complex table structures) thành những bảng có cấu
Thông tin và dữ liệu mà con người hiểu được tồn tại dưới nhiều dạng khác nhau, ví dụ như các số, các ký tự văn bản, âm thanh, hình ảnh... nhưng trong máy tính
Lược đồ một ngăn xếp Trong khoa học máy tính, một **ngăn xếp** (còn gọi là **bộ xếp chồng**, tiếng Anh: _stack_) là một cấu trúc dữ liệu trừu tượng hoạt động theo nguyên lý
Trong nhiều ngôn ngữ lập trình bắt nguồn từ C và Algol68, **kiểu void** (tiếng Anh: _void type_) là một kiểu kết quả của hàm nếu hàm này không trả về bất kì kết quả
**Bộ nhớ máy tính** (tiếng Anh: Computer data storage), thường được gọi là ổ nhớ (_storage_) hoặc bộ nhớ (_memory_), là một thiết bị công nghệ bao gồm các phần tử máy tính và lưu
nhỏ|Một ví dụ về cây phân loại CART **Khai phá dữ liệu** (_data mining_) Là quá trình tính toán để tìm ra các mẫu trong các bộ dữ liệu lớn liên quan đến các phương
**Quản lý dữ liệu** bao gồm tất cả các ngành liên quan đến quản lý dữ liệu như một tài nguyên có giá trị. ## Khái niệm Khái niệm quản lý dữ liệu xuất hiện
LabVIEW là một ngôn ngữ lập trình đồ họa đa năng được phát triển bởi National Instrument. có cấu trúc dữ liệu cấp cao mạnh mẽ và hệ thống thư viện lớn giúp phát triển
Sách - Kỹ Thuật Lập Trình LabVIEW Từ Cơ Bản Đến Nâng Cao Tặng Sổ Tay Xương Rồng Sổ tay ngẫu nhiên 1 trong 4 hình LabVIEW là một ngôn ngữ lập trình đồ họa
**Hệ cơ sở dữ liệu nhúng** là một hệ quản trị cơ sở dữ liệu (DBMS) được tích hợp chặt chẽ với một phần mềm ứng dụng yêu cầu quyền truy cập vào dữ liệu
thumb|Các địa tầng nguyên thủy nằm ngang bị biến dạng do ứng suất. **Địa chất cấu trúc** hay **địa chất cấu tạo** là nghiên cứu về sự phân bố ba chiều không gian của các
**Cục Chuyển đổi số và Thông tin dữ liệu tài nguyên môi trường** là cơ quan trực thuộc Bộ Tài nguyên và Môi trường, có chức năng tham mưu, giúp Bộ trưởng thống nhất quản
**Tài liệu Panama** hay **Hồ sơ Panama** () là một bộ 11,5 triệu tài liệu mật được tạo ra bởi nhà cung cấp dịch vụ của công ty Panama Mossack Fonseca cung cấp thông tin
Phân tích dữ liệu kinh doanh không còn là lựa chọn phụ trợ mà đã trở thành yếu tố cốt lõi trong vận hành và ra quyết định của doanh nghiệp hiện đại. Khi thông
[[Cấu trúc tinh thể của họ perovskite ABO3.]] **Perovskite** là tên gọi chung của các vật liệu gốm có cấu trúc tinh thể giống với cấu trúc của vật liệu gốm calci titanat (CaTiO3). Tên