Computer >> Máy Tính >  >> Lập trình >> Lập trình

Loại bỏ phần tử tối thiểu khỏi các đống khoảng cách


  • Trong một đống khoảng thời gian, phần tử nhỏ nhất là phần tử ở bên trái của nút gốc. Phần tử này bị loại bỏ và trả lại.
  • Để lấp đầy chỗ trống được tạo ở phía bên trái của nút gốc, một phần tử từ nút cuối cùng sẽ bị loại bỏ và lại được chèn vào nút gốc.
  • Tiếp theo, phần tử này được so sánh liên tục với tất cả các phần tử bên trái của các nút giảm dần và quá trình kết thúc khi tất cả các điều kiện cho một khoảng thời gian được đáp ứng.
  • Trong trường hợp nếu phần tử bên trái trong nút trở nên cao hơn phần tử bên phải ở bất kỳ giai đoạn nào, thì hai phần tử sẽ được trao đổi và sau đó thực hiện các phép so sánh thêm.
  • Cuối cùng, nút gốc sẽ lại chứa phần tử nhỏ nhất ở phía bên trái.

Quy trình này cũng có thể được giải thích theo những cách sau -

Việc loại bỏ phần tử tối thiểu được xử lý theo một số cách -

  • Khi đống khoảng thời gian trống, hoạt động removeMin không thành công.
  • Khi heap khoảng thời gian chỉ có một phần tử, phần tử này sẽ được trả về. Chúng tôi để lại một đống khoảng thời gian mà không có bất kỳ phần tử nào.
  • Khi có nhiều hơn một phần tử, điểm cuối bên trái của phần tử phải được trả về. Điểm này được loại bỏ tận gốc.
  • Nếu phần gốc chỉ ra nút cuối cùng của đống khoảng thời gian, thì không cần làm gì nữa.
  • Khi nút cuối cùng không phải là nút gốc, chúng ta loại bỏ điểm p bên trái khỏi nút cuối cùng. Nếu điều này khiến nút cuối cùng bị bỏ trống, thì nút cuối cùng không còn là một phần của đống.
  • Điểm p bị loại khỏi nút cuối cùng được đưa lại vào heap tối thiểu được nhúng bằng cách bắt đầu từ gốc.
  • Khi chúng ta di chuyển xuống, có thể cần trao đổi p hiện tại với điểm cuối bên phải r của nút đang được kiểm tra để đảm bảo rằng p ≤r. Việc lắp lại được thực hiện theo cùng một chiến lược như được sử dụng để cắm lại vào một đống thông thường.