Cấu trúc đống và ứng dụng

30 428 0
Cấu trúc đống và ứng dụng

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Cấu trúc đống và ứng dụng

Báo cáo nghiên cứu khoa học Cấu trúc đống ứng dụng Nguyễn Thị Ngọc Anh_lớp K54A-CNTT 1 Mục Lục Phần 1:MỞ ĐẦU . 3 I. Lí do chọn đề tài. 3 Phần 2:Nội Dung . 3 Chương 1 : Cơ sở lý thuyết về cây nhị phân. . 3 I. Định nghĩa các ví dụ 3 1. Định nghĩa. 4 2.Ví dụ 4 II. Cây nhị phân. 5 1. Định nghĩa các tính chất. 5 2. Biểu diễn cây nhị phân 5 Chương 2. Cấu trúc đống. . 8 I. Định nghĩa . 8 1.Định nghĩa. . 8 2. Heap có các tính chất sau : . 9 3. Ví dụ : . 9 4) Thuật giải. . 10 II. Các phép tốn của Heap. 10 1. Thêm một phần tử vào Heap. 10 2. Xố một phần tử nhỏ nhất khỏi Heap. 12 Chương 3: Các ứng dụng của Đống . 13 I. Ứng dụng của Heap trong giải thuật Heap_sort. 13 1.Giải thuật. . 13 II.Ứng dụng đống tổ chức hàng đợi có ưu tiên . 19 1.Ứng dụng của đống trong giải thuật Hufman. 19 2.Ứng dụng của đống trong giải thuật xây dựng cây bao trùm nhỏ nhất của đồ thị liên thơng : . 23 THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN Báo cáo nghiên cứu khoa học Cấu trúc đống ứng dụng Nguyễn Thị Ngọc Anh_lớp K54A-CNTT 2 Chương 4: Mơ phỏng cài đặt cấu trúc đống ứng dụng. 26 I.Mơ phỏng thuật tốn. 26 1.Khái niệm chung về mơ phỏng thuật tốn. 26 2.Mục đích của mơ phỏng thuật tốn. . 26 3.Cấu trúc tổng quan của mơ phỏng thuật tốn: . 27 4. Quy trình thiết kế nhiệm vụ của mơ phỏng thuật tốn. . 27 THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN Báo cáo nghiên cứu khoa học Cấu trúc đống ứng dụng Nguyễn Thị Ngọc Anh_lớp K54A-CNTT 3 Phần 1:MỞ ĐẦU I. Lí do chọn đề tài. Hiện nay, cơng nghệ thơng tin với tốc độ phát triển rất nhanh. Các nhà khoa học khẳng định rằng chưa có một ngành khoa học - cơng nghệ nào lại có nhiều ứng dụng như cơng nghệ thơng tin. Việc ứng dụng cơng nghệ thơng tin vào trong giáo dục đã trở thành mối ưu tiên hàng đầu của nhiều quốc gia trong đó có Việt Nam. Trong q trình học các giải thuật nói chung mơn cấu trúc dữ liệu nói riêng, chúng ta rút ra một nhận định chung là: nhiều giải thuật phức tạp trừu tượng, khó hiểu, khó hình dung vấn đề. Do đó chúng ta ln mong muốn trong q trình học giải thuật nên có những mơ phỏng trực quan để chúng ta có thể tiếp thu giải thuật một cách dễ dàng hơn. Tuy nhiên, việc học tốt giải thuật có rất nhiều thận lợi dó là giúp cho q trình tư duy giải thật tốt hơn, phát hiện vấn đề nhanh hơn, đặc biệt giúp cho việc học các mơn học khác có tính logic cao được thuận lợi hơn. Nhưng để học tốt giải thuật thì khơng dễ dàng với nhiều người. Vậy để giúp người học tiếp thu một cách dễ dàng các giải thuật thì phải xây dựng các phần mền mơ phỏng thuật tốn. Cấu trúc đống có rất nhiều ứng vào các giải thuật nhưgiả thuật sắp xếp đống, vào hàng đợi ưu tiên. Nghiên cứu cấu trúc đống để hiểu thêm về nó phục vụ trong việc giải quyết các bài tốn Phần 2:Nội Dung Chương 1 : Cơ sở lý thuyết về cây nhị phân. I. Định nghĩa các ví dụ THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN Báo cáo nghiên cứu khoa học Cấu trúc đống ứng dụng Nguyễn Thị Ngọc Anh_lớp K54A-CNTT 4 1. Định nghĩa . Cây là một cấu trúc phi tuyến tính. Một cây (tree) là một tập hữu hạn các nút trong đó có một nút đặc biệt gọi là nút gốc (root), giữa các nút có một mối quan hệ phân cấp gọi là quan hệ “cha - con”. Có thể định nghĩa cây một cách đệ quy như sau: 1. Một nút là một cây. Nút đó cũng là gốc của cây ấy. 2. Nếu T 1 , T 2 , ., T n là các cây, với n 1 , n 2 , . n k lần lượt là các gốc, n là một nút n có quan hệ cha - con với n 1 , n 2 , . n k thì lúc đó một cây mới T sẽ được tạo lập, với n là gốc của nó. n được gọi là cha của n 1 , n 2 , . n k ; ngược lại n 1 , n 2 , . n k được gọi là con của n. Các cây T 1 , T 2 , ., T n được gọi là các cây con (substrees) của n. Ta quy ước : Một cây khơng có nút nào được gọi là cây rỗng (null tree). Có nhiều đối tượng có cấu trúc cây. 2.Ví dụ . a) Mục lục của một cuốn sách, hoặc một chương trong sách, có cấu trúc cây. b) Biểu thhức số học x + y * (z – t) + u/v, ta có thể biểu diến dưới dạng cây như hình 1. THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN Báo cáo nghiên cứu khoa học Cấu trúc đống ứng dụng Nguyễn Thị Ngọc Anh_lớp K54A-CNTT 5 Hình 1 II. Cây nhị phân. 1. Định nghĩa các tính chất. Cây nhị phân là một dạng quan trọng của cấu trúc cây. Cây nhị phân có các đặc điểm là: Mọi nút trên cây chỉ có tối đa là 2 con. Đối với cây con của một nút người ta cũng phân biệt cây con trái (left subtree) cây con phải (right subtree). Như vậy cây nhị phân là cây có thứ tự. Ví dụ : Cây ở hình 1 là cây nhị phân với tốn tử ứng với gốc, tốn hạng 1 ứng với cây con trái, tốn hạng 2 ứng với cây con phải. Các cây nhị phân sau đây là khác nhau, nhưng nếu coi là cây khơng có thứ tự thì chúng chỉ là 1. 2. Biểu diễn cây nhị phân a) Lưu trữ kế tiếp Nếu có một cây nhị phân đầy đủ, ta có thể dễ dàng đánh số cho các nút trên cây đó theo thứ tự lần lượt từ mức 1 trở lên, hết mức này đến mức khác từ trái sang phải đối với các nút ở mỗi mức. Ví dụ : Với hình cây f) có thể đánh số như sau : THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN Báo cáo nghiên cứu khoa học Cấu trúc đống ứng dụng Nguyễn Thị Ngọc Anh_lớp K54A-CNTT 6 Hình 2 Ta thấy ngay một quy luật đệ quy trái như sau : Con của các nút thứ i là các nút thứ 2i 2i + 1 hoặc Cha của nút thứ j là j/2 Nếu như vậy thì ta có thể lưu trữ cây nhị phân đầy đủ bằng một vectơ V, theo ngun tắc: nút thứ i của cây được lưu trữ ở V[i]. Đó chính là cách lưu trữ kế tiếp đối với cây nhị phân. Với cách lưu trữ này nếu biết được địa chỉ nút cha sẽ tính được địa chỉ nút con ngược lại. Như vậy với cây đầy đủ nêu trên thì hình ảnh lưu trữ sẽ như sau : Tất nhiên với cây nhị phân hồn chỉnh, mà các nút ở mức cuối đều đạt về phía trái (để việc đánh số các nút này được liên tục ) thì cách lưu trữ này vẫn thích hợp. Còn với cây nhị phân dạng khác thì cách lưu trữ này có thể gây lãng phí do có nhiều phần tử nhớ bị bỏ trống(ứng với cây con rỗng). Chẳng hạn đối với cây lệch trái thì phải lưu trữ bằng một véc tơ . THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN Báo cáo nghiên cứu khoa học Cấu trúc đống ứng dụng Nguyễn Thị Ngọc Anh_lớp K54A-CNTT 7 Ngồi ra nếu cây ln biến động nghĩa là có phép bổ sung, loại bỏ các nút thường xun tác động, thì cách lưu trữ này tất khơng tránh được các nhược điểm như đã nêu trên. Cách lưu trữ móc nối sau đây vừa khắc phục được nhược điểm này, vừa phản ánh được dạng tự nhiên của cây. b) Lưu trữ móc nối Trong cách lưu trữ này, mỗi nút ứng với một phần tử nhớ có quy cách như sau : LPTR INFO RPTR Trong đó : - Trường INFO ứng với thơng tin (dữ liệu) của nút. - Trường LPTR ứng với con trỏ, trỏ tới cây con trái của nút đó. - Trường RPTR ứng với con trỏ, trỏ tới cây con phải của nút đó. Ví dụ : Cây nhị phân Hình 3 THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN Báo cáo nghiên cứu khoa học Cấu trúc đống ứng dụng Nguyễn Thị Ngọc Anh_lớp K54A-CNTT 8 Cây nhị phân trong hình 3 có dạng lưu trữ móc nối như hình sau : Hình 4 Để có thể truy nhập vào các nút trên cây cần có một con trỏ T, trỏ tới nút gốc của cây đó. Người ta quy ước : Nếu cây nhị phân rỗng thì T = Null. Với cách biểu diễn này từ nút cha có thể truy nhập trực tiếp vào nút con, nhưng ngược lại thì khơng làm được. Chương 2. Cấu trúc đống. I. Định nghĩa . 1.Định nghĩa. Đống (Heap) là một cây nhị phân gắn nhãn với các nhãn là các giá trị thuộc tập hợp được sắp thứ tự tuyến tính, sao cho những điều kiện sau đây được thực hiện: 1.Tất cả các mức của cây đều đầy, trừ mức thấp nhất có thể thiếu một số đỉnh. 2.Ở mức thấp nhất, tất cả các lá đều xuất hiện liên tiếp từ bên trái. 3. Giá trị ở mỗi đỉnh khơng lớn hơn giá trị của các đỉnh con của nó THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN Báo cáo nghiên cứu khoa học Cấu trúc đống ứng dụng Nguyễn Thị Ngọc Anh_lớp K54A-CNTT 9 Với điều kiện này thì khơng đảm bảo Heap là một cây nhị phân tìm kiếm. 2. Heap có các tính chất sau : Tính chất 1 : Nếu ap , a2 , . , aq là một Heap thì khi cắt bỏ một số phần tử ở hai đầu của Heap, dãy con còn lại vẫn là một Heap. Tính chất 2 : Mọi dãy ap , a2 , . , aq, dãy con aj, aj+1,…, ar tạo thành một Heap với j=(q div 2 +1). 3. Ví dụ : Đống được lưu trong máy bởi một mảng a[1 n], với gốc ở phần tử thứ nhất, con bên trái của đỉnh a[i] là a[2*i] con bên phải là a[2*i+1] (với 2*i<=n 2*i+1<=n). Khi đó nếu như a[i] <= a[2*i] a[2*i+1] với mọi i = 1 int(n/2). thì trong đống a[1] (tương ứng là gốc của cây) là phần tử nhỏ nhất. Đây là Heap (Hình 5) THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN Báo cáo nghiên cứu khoa học Cấu trúc đống ứng dụng Nguyễn Thị Ngọc Anh_lớp K54A-CNTT 10 4) Thuật giải. 1.Xem mảng ban đầu là một cây nhị phân. Mỗi nút trên cây lưu trữ một phần tử mảng, trong đó a[1] là nút gốc mỗi nút khơng là nút lá a[i] có con trái là a[2*i] con phải là a[2*i+1]. Với cách tổ chức này thì cây nhị phân thu được sẽ có các nút trong là các nút a[1]…, a[n DIV 2]. Tất cả các nút trong đều có hai con, ngoại trừ nút a[n DIV 2] có thể chỉ có một con trái (trong trường hợp n là một số chẵn). 2.Sắp xếp dãy ban đầu thành Heap căn cứ vào giá trị khố của các nút. 3.Hốn đổi a[1] cho phần tử cuối cùng. 4.Sắp lại cây sau khi đã bỏ đi phần tử cuối cùng để nó trở thành một heap mới. Lặp lại q trình (3) (4) cho tới khi cây chỉ còn một nút ta sẽ được mảng sắp theo thứ tự giảm II. Các phép tốn của Heap. 1. Thêm một phần tử vào Heap. Để xen một phần tử mới vào Heap, đầu tiên ta thêm một lá mới liền kề với các lá ở mức thấp nhất, nếu mức thấp nhất chưa đầy; còn nếu mức thấp nhất đầy, thì ta thêm vào một lá ở mức mới sao cho các điều kiện 1 2 của Heap được bảo tồn.Trong hình 6a dưới sau khi thêm nút lá có giá trị 3 vào mức cuối cùng thì cây khơng còn là Heap. Nếu sau khi thêm vào lá mới cây khơng còn là heap, thì ta theo đường từ lá mới tới gốc cây. Nếu một đỉnh có giá trị nhỏ hơn đỉnh cha của nó, thì ta trao đổi đỉnh đó với cha của nó. Sau q trình biến đổi đó thì ta có một Heap hình 6c. THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN [...]... cứu khoa học (b) (c) Hình 7 Chương 3: Các ứng dụng của Đống I Ứng dụng của Heap trong giải thuật Heap_sort 1.Giải thuật HeapSort là một giải thuật dựa vào cấu trúc đống để sắp xếp theo thứ tự giảm dần của các giá trị khố là số Giải thuật Heapsort trải qua 2 giai đoạn : 13 Nguyễn Thị Ngọc Anh_lớp K54A-CNTT THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN Cấu trúc đống ứng dụng Báo cáo nghiên cứu khoa học Giai đoạn... học Hình 14 Sau khi đổi chỗ cây khơng còn là đống thực hiện phép vun đống ta được đống mới Hình 15 Tiếp tục thực hiện q trình trên ta được một mảng sắp theo thứ tự giảm là 18 Nguyễn Thị Ngọc Anh_lớp K54A-CNTT THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN Cấu trúc đống ứng dụng Báo cáo nghiên cứu khoa học Hình 16 II .Ứng dụng đống tổ chức hàng đợi có ưu tiên 1 .Ứng dụng của đống trong giải thuật Hufman a) Giới thiệu về... Nguyễn Thị Ngọc Anh_lớp K54A-CNTT Báo cáo nghiên cứu khoa học vun lại đống Sau khi tất cả các đỉnh THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN Cấu trúc đốngứng dụng ) đã duyệt qua bằng cách ấy thì thì đỉnh u đã được duyệt xong được đưa vào cây Chương 4: Mơ phỏng cài đặt cấu trúc đốngứng dụng I.Mơ phỏng thuật tốn 1.Khái niệm chung về mơ phỏng thuật tốn a)Khái niệm về thuật tốn Thật tốn được hiểu là tập hợp... tương ứng là W[1 n] + Tạo hàng đợi bằng đống: Ta tạo một đống trên cơ sở sắp xếp lại các chỉ số của A W Ta lưu trữ đống dưới dạng mảng, kí hiệu nó là Heap[1 n] Trước hết đưa chỉ số của các chữ cái theo thứ tự ban đầu vào mảng Heap[1 n] với Heap[i]=i với mọi i=1 n 22 Nguyễn Thị Ngọc Anh_lớp K54A-CNTT Báo cáo nghiên cứu khoa học THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN Cấu trúc đốngứng dụng Ta sẽ lưu trữ cấu trúc. .. VIỆN ĐIỆN TỬ TRỰC TUYẾN Cấu trúc đốngứng dụng Hình 6a Hình 6b 11 Nguyễn Thị Ngọc Anh_lớp K54A-CNTT THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN Cấu trúc đốngứng dụng Báo cáo nghiên cứu khoa học Hình 6c 2 Xố một phần tử nhỏ nhất khỏi Heap Sét một Min Heap thì hiển nhiên gốc của cây sẽ có giá trị nhỏ nhất Tuy nhiên nếu loại bỏ gốc thì cây khơng còn là cây nữa Do đó ta tiến hành như sau: đặt vào gốc phần tử của hàng... TRỰC TUYẾN Cấu trúc đống ứng dụng a)Bài tốn Cho G=(X,E) là một đồ thị liên thơng Ngồi ra, một hàm trọng số W(e) nhận các giá trị thực, xác định trên tập các cạnh E của G Cả hai thuật tốn Prim Kruskal đều dựa trên tư tưởng của các giải thuật tham lam: Ở mỗi bước của thuật tốn ta chọn bổ sung vào cây cạnh có trọng số nhỏ nhất có thể b)Giải thuật Prim Giải thuật Prim dựa trên cấu trúc của giải... TUYẾN Cấu trúc đống ứng dụng Xét nút 5 ta thấy a[5] chỉ có một con trái giá trị khố tương ứng của nó lớn hơn con trái của nó nên ta đổi chỗ hai nút này cho nhau do con trái của a[5] là a[10] là một nút lá nên việc đẩy xuống của a[5] là kết thúc Hình 9 Tiếp theo xét nút a[4] a[3] đã đúng vị trí nên khơng phải thực hiện sự hốn đổi nữa Xét nút a[2], so sánh thấy giá trị a[2] = 6 > a[4] = 2 và. .. việc đổi chỗ cho khố ở đỉnh đống với khố ở đáy đống Cho đến khi cây chỉ còn một nút thì các khố đã được sắp xếp vào đúng vị trí của nó Cụ thể với Heap ở trên 16 Nguyễn Thị Ngọc Anh_lớp K54A-CNTT THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN Cấu trúc đống ứng dụng Báo cáo nghiên cứu khoa học Từ heap ở trên, hốn đổi giá trị của a[1] =2 với a[10] = 12 ta đã có a[10] = 2 là giá trị nhỏ nhất vào đúng vị trí Cắt bỏ nút... a hai đỉnh con của nó tại b c Để xác định, ta giả sử rằng giá trị ưu tiên của ít nhất hơn giá trị ưu tiên của đỉnh c pri(b)

Ngày đăng: 27/04/2013, 21:02

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan