Khóa kéo là gì và nó liên quan đến cấu trúc giống như cây như thế nào?


15

Tôi đã đọc một chương trong LYAH không thực sự có ý nghĩa với tôi. Tôi hiểu rằng dây kéo có thể tùy ý đi qua một cấu trúc giống như cây, nhưng tôi cần một số giải thích rõ ràng về nó. Ngoài ra, dây kéo có thể được khái quát cho bất kỳ cấu trúc dữ liệu?


3
Điều này có lẽ phù hợp hơn với Khoa học Máy tính , mặc dù các khóa kéo tổng quát hóa công việc liên quan đến khá nhiều máy móc kỹ thuật.
Dave Clarke

6
Khóa kéo là thứ mà bạn phải luôn giữ kín, đặc biệt là khi đi ngang qua cây.
Andrej Bauer

Câu trả lời:


14

Một dây kéo, nói chung, là một cấu trúc dữ liệu với một lỗ hổng trong đó. Khóa kéo được sử dụng để truyền tải / thao tác cấu trúc dữ liệu và lỗ tương ứng với trọng tâm hiện tại của đường truyền. Thông thường, cũng có một yếu tố của cấu trúc dữ liệu đang được xem xét, để người ta có một (danh sách) dây kéo và một danh sách hoặc một dây kéo (cây) và một cây. Khóa kéo cho phép lập trình viên di chuyển hiệu quả xung quanh cấu trúc dữ liệu, thậm chí thay thế phần tử ở tiêu điểm. Cặp khóa kéo và phần tử trong tiêu điểm thỏa mãn các ràng buộc đặt phần tử vào tiêu điểm trong lỗ cho cấu trúc dữ liệu gốc.

Khóa kéo có thể được tổng quát thành các loại dữ liệu quy nạp tùy ý. Khái niệm này có thể được định nghĩa theo kiểu chỉ mục kiểu (Xem kiểu dữ liệu được lập chỉ mục kiểu ). Chúng cũng liên quan đến ý tưởng về đạo hàm của cấu trúc dữ liệu và đã được nghiên cứu từ góc độ Lý thuyết loại .


2

Khóa kéo nói chung là một cặp : đó là một cấu trúc có lỗ, một tiêu điểm , đại diện cho vị trí trong cấu trúc của bạn, cùng với một đường dẫn , ghi lại cách bạn có được tiêu điểm đó. (Con đường này là vệt bánh mì của LYAH.)

Đường dẫn là cách bạn thực sự áp dụng các thay đổi cho cấu trúc: "đi xuống, sang trái, tăng giá trị". Bằng cách liên tục áp dụng "đi lên" ( go_uptrong bài báo của Huet ) tại thời điểm này, bạn có thể truy xuất các bước của mình và kết thúc với một bản sao mới, đột biến, của cấu trúc ban đầu.

Chúng thực sự có thể được khái quát cho các cấu trúc khác:

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.