Trong mục này chúng ta sẽ xét kiểu dữ liệu trừu tợng hàng u tiên. Hàng u tiên là tập hợp cùng với hai phép toán Insert và DeleteMin. Phép toán Insert có ý nghĩa thông thờng : xen phần tử mới vào tập hợp. Ta cần phải xác định phép toán DeleteMin. Giả sử Pri là hàm u tiên trên tập hợp A nào đó tức Pri là ánh từ từ tập A vào một tập P nào đó
Pri : A → P
trong đó P là tập đợc sắp thứ tự tuyến tính (thông thờng P là tập số nguyên hay tập số thực nào đó). Với mỗi a ∈ A, ta gọi Pri (a) là giá trị u tiên của a.
Phép toán DeleteMin trên tập A là tìm trên tập a phần tử a có Pri (a) nhỏ nhất và loại nó khỏi tập A.
Thuật ngữ : "hàng u tiên" có ý nghĩa nh sau. Từ : "hàng" nói lên rằng, các phần tử thuộc tập hợp (ngời hoặc đối tợng nào đó) chờ đợi đợc "phục vụ". Từ "u tiên" có nghĩa rằng, sự phục vụ ở đây không đợc tiến hành theo chế độ "ai vào hàng trớc đợc phục vụ trớc" nh đối với hàng đã xét trong chơng 3 mà phụ thuộc vào mức u tiên đợc xác định trên các phần tử của hàng.
Chúng ta có thể kể ra rất nhiều ví dụ về hàng u tiên. Chẳng hạn, trong một hệ phân chia thời gian thờng có nhiều nhiệm vụ chờ đợi đợc xử lý, trong đó có những nhiệm vụ cần đợc xử lý trớc các nhiệm vụ khác. Khi đó tập hợp các nhiệm vụ chờ đợi đợc xử lý lập thành một hàng u tiên. Trong thực tế, việc mô phỏng các quá trình gồm các sự kiện độc lập với thời gian cũng dẫn đến việc xét các hàng u tiên.
Cài đặt hàng u tiên.
Chúng ta có thể biểu diễn hàng u tiên bởi danh sách đợc sắp hoặc không đợc sắp. Danh sách này có thể cài đặt bởi mảng hoặc dới dạng danh sách liên kết. Tốt nhất ta biểu diễn hàng u tiên dới dạng danh sách liên kết. Nếu danh sách đợc sắp xếp theo thứ tự tăng dần của giá trị u tiên của các phần tử, thì phần tử cần loại bỏ trong phép toán DeleteMin là phần tử đầu tiên trong danh sách, do đó chỉ cần thời gian không đổi để thực hiện phép toán này. Song để xen vào danh sách một phần tử mới, ta phải tìm vị trí thích hợp để đặt nó vào , do đó phép toán Insert đòi hỏi phải có thời gian 0 (n), với danh sách có n phần tử. Nếu ta cài đặt hàng u tiên bởi danh sách liên kết không đợc sắp, thì khi xen phần tử mới vào hàng, ta chỉ cần đa nó vào đầu danh sách. Nhng việc thực hiện phép toán DeleteMin lại chậm.
Bạn đọc hãy viết (xem nh bài tập) các thủ tục thực hiện các phép toán Insert và DeleteMin trong cách cài đặt hàng u tiên bởi danh sách liên kết đợc sắp và không đợc sắp.
Ta có nhận xét rằng, bảng băm không thích hợp để biểu diễn hàng u tiên. Lý do là, bảng băm không cho ta cách nào thuận tiện để tìm ra phần tử có giá trị u tiên nhỏ nhất.
Trong phần sau ta sẽ đa ra một phơng pháp mới để biểu diễn hàng u tiên.