Giáo trình Cấu trúc dữ liệu và giải thuật (Nghề: Lập trình viên máy tính - Cao đẳng) - Trường CĐ Nghề Kỹ thuật Công nghệ

65 41 0
Giáo trình Cấu trúc dữ liệu và giải thuật (Nghề: Lập trình viên máy tính - Cao đẳng) - Trường CĐ Nghề Kỹ thuật Công nghệ

Đ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

(NB) Giáo trình Cấu trúc dữ liệu và giải thuật cung cấp cho sinh viên các kiến thức cơ bản về cấu trúc dữ liệu và giải thuật để làm nền tản cho việc lập trình giải quyết các vấn đề cần thiết.

BỘ LAO ĐỘNG -THƯƠNG BINH VÀ XÃ HỘI TRƯỜNG CAO ĐẲNG NGHỀ KỸ THUẬT CÔNG NGHỆ -š› & š› - GIÁO TRÌNH MƠN HỌC: CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT NGHỀ: LẬP TRÌNH VIÊN MÁY TÍNH TRÌNH ĐỘ: CAO ĐẲNG Ban hành kèm theo Quyết định số: 13A/QĐ-CĐNKTCN ngày 10 tháng 01 năm 2019 Hiệu trưởng Trường Cao đẳng nghề Kỹ thuật Công nghệ Hà Nội, năm 2021 (Lưu hành nội bộ) TUYÊN BỐ BẢN QUYỀN: Tài liệu thuộc loại sách giáo trình nên nguồn thơng tin phép dùng ngun trích dùng cho mục đích đào tạo tham khảo Mọi mục đích khác mang tính lệch lạc sử dụng với mục đích kinh doanh thiếu lành mạnh bị nghiêm cấm MÃ TÀI LIỆU: MĐLTV 10 LỜI GIỚI THIỆU Kiến thức môn học Cấu trúc liệu giải thuật tản người muốn tìm hiểu sâu Công nghệ thông tin đặc biệt việc lập trình để giải tốn máy tính điện tử Các cấu trúc liệu giải thuật xem yếu tố quan trọng lập trình, câu nói tiếng Niklaus Wirth: Chương trình = Cấu trúc liệu + Giải thuật (Programs = Data Structures + Algorithms) Nắm vững cấu trúc liệu giải thuật sở để sinh viên tiếp cận với việc thiết kế xây dựng phần mềm sử dụng cơng cụ lập trình đại Cấu trúc liệu xem phương pháp lưu trữ liệu máy tính nhằm sử dụng cách có hiệu liệu Và để sử dụng liệu cách hiệu cần phải có thuật tốn áp dụng liệu Do vậy, cấu trúc liệu giải thuật yếu tố khơng thể tách rời có liên quan chặt chẽ với Việc lựa chọn cấu trúc liệu ảnh hưởng lớn tới việc lựa chọn áp dụng giải thuật Về nguyên tắc, cấu trúc liệu giải thuật biểu diễn cài đặt ngôn ngữ lập trình đại Tuy nhiên, để có phân tích sâu sắc mơ phạm, có kết thực tế hơn, chúng tơi sử dụng ngôn ngữ tựa Pascal để minh hoạ cho cấu trúc liệu thuật tốn Mặc dầu có nhiều cố gắng, không tránh khỏi khiếm khuyết, mong nhận đóng góp ý kiến độc giả để giáo trình hồn thiện Hà Nội, ngày 23 tháng 04 năm 2021 Tham gia biên soạn Chủ biên Nguyễn Thị Kim Dung Tập thể Giảng viên Khoa CNTT Mọi thơng tin đóng góp chia sẻ xin gửi hịm thư kimdunghd2009@gmail.com, liên hệ số điện thoại 0977881209 MỤC LỤC CHƯƠNG 1: TỔNG QUAN VỀ CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT 1.Khái niệm giải thuật đánh giá độ phức tạp giải thuật 1.1 Khái niệm giải thuật 1.2 Ngôn ngữ diễn đạt giải thuật 1.3 Thiết kế giải thuật 13 1.4 Đánh giá giải thuật 15 2.Các kiểu liệu 17 3.Kiểu ghi, kiểu trỏ 17 3.1 Kiểu ghi 18 3.2 Kiểu trỏ 18 4.Các kiểu liệu trừu tượng 18 5.Mối quan hệ CTDL giải thuật 19 Bài tập thực hành 21 CHƯƠNG 2: ĐỆ QUY VÀ GIẢI THUẬT ĐỆ QUY 22 1.Khái niệm đệ quy 22 2.Giải thuật đệ quy chương trình đệ quy 22 2.1 Giải thuật đệ qui 22 2.2 Chương trình đệ qui 22 3.Các toán đệ quy 22 3.1 Bài tốn tính n giai thừa 22 3.2 Bài toán dãy số FIBONACCI 23 Bài tập thực hành 23 CHƯƠNG 3: DANH SÁCH 26 1.Danh sách phép toán danh sách 26 1.1 Khái niệm danh dách 26 1.2 Các phép toán danh dách 26 2.Cài đặt danh sách theo cấu trúc mảng 26 2.1 Khởi tạo danh sách rỗng 27 2.2 Kiểm tra danh sách rỗng 27 2.3 Chèn phần tử vào danh sách 27 2.4 Xóa phần tử khỏi danh sách 28 3.Cài đặt danh sách theo cấu trúc danh sách liên kết (đơn, kép) 28 3.1 Khởi tạo danh sách rỗng 29 3.2 Kiểm tra danh sách rỗng 29 3.3 Chèn phần tử vào danh sách 30 3.4 Xóa phần tử khỏi danh sách 30 3.5 Danh sách liên kết vòng 31 3.6 Danh sách liên kết đôi 32 4.Cài đặt danh sách theo cấu trúc đặc biệt 32 4.1 Ngăn xếp 32 4.2 Hàng đợi 35 Bài tập thực hành 39 CHƯƠNG 4: CÁC PHƯƠNG PHÁP SẮP XẾP CƠ BẢN 40 1.Định nghĩa toán xếp 40 Phương pháp chọn (Selection sort) 40 2.1.Giới thiệu phương pháp 40 2.2.Giải thuật 40 2.3.Ví dụ minh họa 41 Phương pháp chèn (Insertion sort) 41 3.1.Giới thiệu phương pháp 41 3.2.Giải thuật 42 3.3.Ví dụ minh họa 42 Phương pháp đổi chỗ (Interchange sort) 43 4.1.Giới thiệu phương pháp 43 4.2.Giải thuật 43 4.3.Ví dụ minh họa 43 5.Phương pháp bọt (Bubble sort) 44 5.1.Giới thiệu phương pháp 44 5.2.Giải thuật 44 5.3.Ví dụ minh họa 44 6.Phương pháp xếp nhanh (Quick sort) 45 6.1.Giới thiệu phương pháp 45 6.2.Giải thuật 45 6.3.Ví dụ minh họa 46 Bài tập thực hành 47 CHƯƠNG 5: TÌM KIẾM 48 1.Tìm kiếm tuyến tính 48 1.1.Giới thiệu phương pháp 48 1.2.Giải thuật 48 1.3.Ví dụ minh họa 49 2.Tìm kiếm nhị phân 49 2.1.Giới thiệu phương pháp 49 2.2.Giải thuật 49 2.3.Ví dụ minh họa 50 Bài tập thực hành 50 CHƯƠNG 6: CÂY 51 Khái niệm nhị phân 51 1.1 Các khái niệm 51 1.2 Khái niệm nhị phân 52 Biểu diễn nhị phân tổng quát 52 2.1 Biểu diễn nhị phân 52 2.2 Biểu diễn tổng quát 55 Bài toán duyệt nhị phân 56 3.1 Duyệt theo thứ tự trước (gốc – trái – phải) 57 3.2 Duyệt theo thứ tự (trái – gốc – phải) 57 3.3 Duyệt theo thứ tự sau (trái – phải – gốc) 57 Bài tập thực hành 58 CHƯƠNG 7: ĐỒ THỊ 59 1.Các định nghĩa 59 Biểu diễn đồ thị 60 2.1 Biểu diễn đồ thị ma trận kề 60 2.2 Biểu diễn đồ thị danh sách đỉnh kề: 60 Bài tốn tìm đường đồ thị 61 Bài tập thực hành 63 GIÁO TRÌNH MƠN HỌC Tên môn học: Cấu trúc liệu giải thuật Mã mơn học: MHLTV 10 Vị trí, tính chất, ý nghĩa vai trị mơn học: Vị trí: Mơn học bố trí sau sinh viên học xong mơn học, mơ đun: Lập trình bản, Cơ sở liệu Tính chất: Là mơn học Cơ sở Ý nghĩa vai trị mơn học: Đây mơn học sở ngành ngành liên quan đến công nghệ thông tin, cung cấp cho sinh viên kiến thức cấu trúc liệu giải thuật để làm tản cho việc lập trình giải vấn đề cần thiết Mục tiêu môn học: -Về kiến thức: + Mô tả khái niệm kiểu liệu trừu tương, kiểu liệu, cấu trúc liệu giải thuật + Biết phép toán tương ứng với cấu trúc liệu giải thuật + Biết cách tổ chức liệu hợp lý, khoa học cho chương trình đơn giản -Về kỹ + Áp dụng thuật toán hợp lý cấu trúc liệu tương ứng để giải toán máy tính + Áp dụng phương pháp xếp, tìm kiếm -Về lực tự chủ trách nhiệm: +Bố trí làm việc khoa học đảm bảo an toàn cho người phương tiện học tập Nội dung môn học: Thời gian Số TT Tên chương, mục Tổng số Lý thuyết Thực hành Chương 1: Tổng quan Cấu trúc liệu giải thuật Khái niệm giải thuật đánh giá độ phức tạp giải thuật Các kiểu liệu Kiểu liệu ghi, trỏ Các kiểu liệu trừu tượng Mối quan hệ CTDL giải thuật Chương : Đệ qui giải thuật đệ qui 1.Khái niệm đệ qui 2.Giải thuật đệ qui chương trình đệ qui 3.Các toán đệ qui Chương 3: Danh sách 1.Danh sách phép toán danh sách 5 Kiểm tra* (LT hoặcTH) 2.Cài đặt danh sách theo cấu trúc mảng 3.Cài đặt danh sách theo cấu trúc danh sách liên kết (đơn, kép) 4.Cài đặt danh sách theo cấu trúc đặc biệt (ngăn xếp, hàng đợi) Chương 4: Các phương pháp xếp 1.Định nghĩa toán xếp 2.Phương pháp chọn (Selection sort) 3.Phương pháp chèn (Insertion sort) 4.Phương pháp đổi chỗ (Interchange sort) 5.Phương pháp bọt (Bubble sort) 6.Phương pháp xếp nhanh (Quick sort) Chương 5: Tìm kiếm 1.Tìm kiếm tuyến tính 2.Tìm kiếm nhị phân Chương 6: Cây 1.Khái niệm nhị phân 2.Biểu diễn nhị phân tổng quát Bài toán duyệt nhị phân Chương 7: Đồ thị 1.Khái niệm đồ thị 2.Biểu diễn đồ thị 3.Bài tốn tìm đường đồ thị Thi kết thúc môn học 18 12 1 2 1 Cộng 45 1 27 15 CHƯƠNG 1: TỔNG QUAN VỀ CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT Mã chương: MHLTV 10-01 Giới thiệu: Tổng quan giải thuật Đầu tiên cách phân tích vấn đề, từ thực tiễn chương trình, cách thiết kế giải pháp cho vấn đề theo cách giải máy tính Tiếp theo, phương pháp phân tích, đánh giá độ phức tạp thời gian thực giải thuật xem xét chương Mục tiêu: - Mô tả khái niệm giải thuật, mối quan hệ cấu trúc liệu giải thuật Trình bày tiêu chuẩn để đánh giá độ phức tạp giải thuật - Ghi nhớ kiểu liệu bản, kiểu liệu trừu tượng cấu trúc liệu - Thực thao tác an tồn với máy tính 1.Khái niệm giải thuật đánh giá độ phức tạp giải thuật Mục tiêu: Mô tả khái niệm giải thuật, mối quan hệ cấu trúc liệu giải thuật Trình bày tiêu chuẩn để đánh giá độ phức tạp giải thuật 1.1 Khái niệm giải thuật Giải thuật, cịn gọi thuật tốn (algorithm) khái niệm quan trọng tin học Thuật ngữ thuật toán xuất phát từ nhà toán học Arập Abu Ja'far Mohammed ibn Musa al Khowarizmi (khoảng năm 825) Giải thuật thể giải pháp cụ thể, thực bước để đưa tới lời giải cho tốn Nói cách khác, giải thuật tập hữu hạn phép toán sở, đặt theo quy tắc xác, nhằm giải toán, qui tắc hay qui trình cụ thể nhằm giải vấn đề số bước hữu hạn, nhằm cung cấp kết từ tập hợp kiện đưa vào Các phép toán sở phép tốn đơn giãn mà thời gian thực hữu hạn khơng phụ thuộc vào kích thước liệu Các phép toán giải thuật phải xác định rỏ ràng, dễ hiểu, không mập mờ Với liệu vào thoả mãn điều kiện toán, thuật toán phải dừng lại sau số hữu hạn bước cần thực 1.2 Ngôn ngữ diễn đạt giải thuật - Ngôn ngữ tự nhiên - Sơ đồ khối - Giả ngữ, ngôn ngữ ”tựa ngơn ngữ lập trình” - Ngơn ngữ lập trình (Pascal, C, ) Trong tài liệu sử dụng ngơn ngữ tựa Pascal để trình bày Sau số qui tắt bản: 1.2.1 Quy cách cấu trúc chương trình Mỗi chương trình gán tên để phân biệt, tên viết chữ in hoa, có thêm dấu gạch nối khố Program Ví dụ : Prorgram NHAN-MA-TRAN Độ dài tên không hạn chế Sau tên kèm theo lời thuyết minh (ở ta quy ước dùng Tiếng Việt) để giới thiệu tóm tắt nhiệm vụ giải thuật số chi tiết cần thiết Phần thuyết minh đặt hai dấu { } Chương trình bao gồm nhiều bước, bước phân biệt số thứ tự, kèm theo lời thuyết minh 1.2.2 Kí tự biểu thức Kí tự dùng giống ngôn ngữ chuẩn, nghĩa gồm : 26 chữ Latinh in hoa in thường 10 chữ số thập phân Các dấu phép toán số học: +, - , *, /, (lũy thừa) Các dấu phép toán quan hệ: , , , # Giá trị logic: true, false Dấu phép toán logic: and, or, not Tên biến dãy chữ chữ số, bắt đầu chữ Biến số có dạng : A[i], B[ij] v.v Còn biểu thức thứ tự ưu tiên phép toán biểu thức theo quy tắc PASCAL hay ngôn ngữ chuẩn khác 1.2.3 Các câu lệnh Các câu lệnh chương trình viết cách dấu chấm phảy chúng bao gổm : Câu lệnh gán Có dạng Tên biến/ Tên hàm : = Biểu thức Ở cho phép dùng phép gán chung Ví dụ : X : = Y : = Câu lệnh ghép Có dạng : begin Câu lệnh ; Câu lệnh ; ; Câu lệnhn end Nó cho phép ghép nhiều câu lệnh lại để coi câu lệnh Câu lệnh điều kiện Có dạng : if < Điều kiện > then < Câu lệnh > Có thể diễn tả sơ đồ : Điều kiện false true Câu lệnh1 Câu lệnh2 Hoặc if < Điều kiện > then < Câu lệnh1 > else < Câu lệnh2 > 10 CHƯƠNG 6: CÂY Mã chương: MHLTV 10-06 Giới thiệu: Cây cấu trúc gần gũi có nhiều ứng dụng thực tế Cây cấu trúc phân cấp tập hợp đối tượng Một ví dụ quen thuộc cây, thư mục mục lục sách Cây sử dụng rộng rãi nhiều vấn đề khác Mục tiêu: - Trình bày khái niệm cây, nhị phân; - Cài đặt máy tính cấu trúc mảng cấu trúc danh sách liên kết; - Giải toán duyệt nhị phân - Thực thao tác an toàn với máy tính Nội dung gồm: Khái niệm nhị phân Mục tiêu: Trình bày khái niệm cây, nhị phân; 1.1 Các khái niệm - Một tập hợp hữu hạn nút có nút đặc biệt gọi gốc (root) Giữa nút có quan hệ phân cấp gọi "quan hệ cha con" - Cây định nghĩa đệ qui sau: Một nút nút gỗc Giả sử T1, T2, …,Tn (n ³ 1) có gốc tương ứng r1, r2,…, rn Khi T với gốc r hình thành cách cho r trở thành nút cha nút r1, r2,…, rn Bậc nút: số nút Bậc cây: bậc lớn nút có (số tối đa nút thuộc cây) Cây có bậc n gọi n - phân Nút gốc: nút có khơng có nút cha Nút lá: nút có bậc Nút nhánh: nút có bậc khác khơng phải nút gốc Mức nút Mức (gốc (T0)) =1 Gọi T1, T2, , Tn T0 Khi Mức (T1) = Mức (T2) = = Mức (Tn) = Mức (T0) +1 Chiều cao cây: số mức lớn có Đường đi: Dãy đỉnh n1, n2, ,nk gọi đường ni cha ni+1 (1 £ i £ k-1 Độ dài đường đi: số nút đường -1 Cây : Trong cây, đỉnh theo thứ định, gọi (cây có thứ tự) Chẳng hạn, hình minh hoạ hai khác A B A C C B Hình 6.1 Hai khác 51 Rừng: tập hợp hữu hạn phân biệt A B O G C D M N E Hình 6.2 Rừng gồm ba 1.2 Khái niệm nhị phân Cây nhị phân mà nút có tối đa hai Đối với nút người ta phân biệt trái phải Như nhị phân có thứ tự A A B C A B D C E B D C C E D E Hình 6.3 Một số nhị phân Đối với nhị phân cần ý tới số tính chất sau i) Số lượng tối đa nút có mức i nhị phân 2i -1 (i ³ 1) ii) Số lượng nút tối đa nhị phân có chiều cao h 2h-1(h ³ ) Biểu diễn nhị phân tổng quát Mục tiêu: Cài đặt máy tính cấu trúc mảng cấu trúc danh sách liên kết; 2.1 Biểu diễn nhị phân Lưu trữ Phương pháp tự nhiên để biểu diễn nhị phân đỉnh trái đỉnh phải đỉnh Ta sử dụng mảng để lưu trữ đỉnh nhị phân Mỗi đỉnh biểu diễn ghi gồm ba trường: trường infor: mô tả thông tin gắn với đỉnh letf : đỉnh trái right: đỉnh phải Giả sử đỉnh được đánh số từ đến max Khi cấu trúc liệu biểu diễn nhị phân khai báo sau: const max = ; {số thứ tự lớn nút cây} type item = ; {kiểu liệu nút cây} Node = record A infor : item; letf :0 max; B C 52 D E F G right :0 max; end; Tree = array[1 max] of Node; Hình 6.5 Minh hoạ cấu trúc liệu biểu diễn nhị phân hình 6.4 infor left right A B C D E 10 F 0 G 11 H 0 I 0 J 0 K 0 Hình 6.5 Cấu trúc liệu biểu diễn Nếu có nhị phân hồn chỉnh đầy đủ, ta dễ dàng đánh số cho nút theo thứ tự từ mức trở lên, hết mức đến mức khác từ trái qua phải nút mức Ví dụ với hình 5.6 đánh số sau: A B D C E F G Hình 6.6 Cây nhị phân đánh số Ta có nhận xét sau: nút thứ i nút thứ 2i 2i + cha nút thứ j ëj/2û Nếu ta lưu trữ vectơ V, theo nguyên tắc: nút thứ i lưu trữ V[i] Đó cách lưu trữ nhị phân Với cách lưu trữ biết địa nút tính địa nút cha ngược lại Như với đầy đủ nêu hình ảnh lưu trữ sau A B C D E F G v[1] v[2] v[3] v[4] v[5] v[6] v[7] Nhận xét Nếu nhị phân khơng đầy đủ cách lưu trữ khơng thích hợp gây lãng phí nhớ có nhiều phần tử bỏ trống (ứng với rỗng) Ta xét hình 5.7 Để lưu trữ ta phải dùng mảng gồm 31 phần tử mà có phần tử khác rỗng; hình ảnh lưu trữ miền nhớ sau: 53 A B C D Hình 6.7.Cây nhị phân đặcbiệt A B Ỉ C Ỉ Ỉ Ỉ D Æ Æ Æ Æ Æ Æ Æ E Æ ( Ỉ : chỗ trống) Nếu nhị phân ln biến động nghĩa có phép bổ sung, loại bỏ nút thường xuyên tác động cách lưu trữ gặp phải số nhược điểm tốn thời gian phải thực thao tác này, độ cao phụ thuộc vào kích thước mảng Lưu trữ móc nối Cách lưu trữ khắc phục nhược điểm cách lưu trữ đồng thời phản ánh dạng tự nhiên Trong cách lưu trữ nút tương ứng với phần tử nhớ có qui cách sau: letf info Trường info ứng với thông tin (dữ liệu) nút Trường left ứng với trỏ, trỏ tới trái nút Trường right ứng với trỏ, trỏ tới phải nút right A B D C E G Hình 6.8 Ta khai báo sau: Type item = ;{kiểu liệu nút } Tree = ^Node; Node = record info : item; left, right: Tree; end; var Root :Tree; Ví dụ: nhị phân hình 5.8 có dạng lưu trữ móc nối hình 5.9 A B D Root C E G Hình 6.9 Cấu trúc liệu biểu diễn 54 Để truy nhập vào nút cần có trỏ Root, trỏ tới nút gốc 2.2 Biểu diễn tổng quát Biểu diễn tổng quát nhị phân gọi nhị phân tương đương Với cách biểu diễn gán số thứ tự cho nút Giả sử hình vẽ ta đánh số thứ tự từ trái sang phải Chẳng hạn với nút có sau đây,thì đánh số A B C D E F HÌNH 6.10 Chúng ta xem: nút “con cả“ nút A, nút “em kề nút 1”.,nút “em kề nút 2” v.v… Với nút cần ý tới hai quan hệ đủ Từ quy cách nút nhị phân tương đương, có dạng : LCC Với INFO REK LCC trường trỏ, chứa địa nút “con cả” 55 REK trường trỏ, chứa địa nút “em kề nó” Như với có nhị phân tương đương với Điều có nghĩa : với tổng quát cho, biểu diễn máy nhị phân tương đương Các phép xử lí tổng quát thực qua nhị phân tương đương kết sau chuyển đổi lại phải khớp với ý đồ xử lí tổng quát.Sau ví dụ minh họa vài nhị phân tương đương ứng với tổng quát cho: T T’ HÌNH 6.11 A B A C E F B D G H I J K E T C F H A C B E H B F I D T’ A D G I D G C E J F H K J K G I J K T trỏ,Trỏ tới gốc tổng quát T’ la trỏ, trỏ tới gốc nhị phân tương đương Ta thấy : - Gốc nhị phân tương đương T’ khơng có phải - Cây nhị phân tương đương T’ nhị phân T thường khác Bài tốn duyệt nhị phân Mục tiêu: Mơ thuật tốn duyệt nhị phân Phép xử lý nút - mà ta gọi chung phép thăm nút cách hệ thống, cho nút thăm lần, gọi phép duyệt Chúng ta 56 thường duyệt nhị phân theo ba thứ tự: duyệt trước, duyệt duyệt sau, phép định nghĩa đệ qui sau: 3.1 Duyệt theo thứ tự trước (gốc – trái – phải) - Thăm gốc A - Duyệt trái theo thứ trước - Duyệt phải theo thư tự trước Cài đặt: B C procedure Truoc(Root : Tree); Begin if Root nil then D E F Begin write(Root^.info); Truoc(Root^.left); G Truoc(Root^.right); end; H end; Ví dụ: Chúng ta duyệt trước với hình 5.12, có kết sau: AB DCEGHF HÌNH 6.12 3.2 Duyệt theo thứ tự (trái – gốc – phải) - Duyệt trái theo thứ - Thăm gốc - Duyệt phải theo thư tự Cài đặt: procedure Giua(Root : Tree); Begin if Root^.left nil then Begin Preorder(Root^.left); write(Root^.info); Preorder(Root^.right); end; end; Ví dụ: Chúng ta duyệt trước với hình 5.12, có kết sau: DBAGHECF 3.3 Duyệt theo thứ tự sau (trái – phải – gốc) - Duyệt câycon trái theo thứ sau - Duyệt phải theo thư tự sau - Thăm gốc Cài đặt: procedure Sau(Root : Tree); Begin if Root^.right nil then Begin Preorder(Root^.left); Preorder(Root^.right); write(Root^.info); end; end; 57 Ví dụ: Chúng ta duyệt trước với hình 5.12, có kết sau: DBHGEFCA Bài tập thực hành 6.1 Trình bày biểu thức theo thứ tự duyệt trước, duyệt sau, duyệt sau: A J B I D K H F Y L 6.2 Dựng nhị phân biết thứ tự đỉnh duyệt theo a Thứ tự trước: A D F G H K L P Q R W Z Thứ tự : G F H K D L A W R Q P Z b Theo thứ tự sau: F G H D A L P Q R Z W K Thứ tự : G F H K D L A W R Q P Z 58 CHƯƠNG 7: ĐỒ THỊ Mã chương: MHLTV 10-07 Giới thiệu: Đồ thị có vai trị quan trọng thực tế Đồ thị dùng để giải toán nhiều lĩnh vực khác Ví dụ, dùng đồ thị để biểu diễn mạch điện, biểu diễn cơng thức phân tử hóa học, biểu diễn mạng máy tính Đồ thị với trọng số gán cho cạnh dùng để giải toán toán tìm đường ngắn hai thành phố mạng giao thơng Chúng ta dùng đồ thị để lập lịch thi phân chia kênh cho đài truyền hình Mục tiêu: - Trình bày khái niệm đồ thị; - Cài đặt đồ thị máy tính cấu trúc mảng cấu trúc danh sách liên kết; - Giải tốn tìm đường đồ thị - Thực thao tác an tồn với máy tính Nội dung gồm: 1.Các định nghĩa Mục tiêu: Trình bày khái niệm đồ thị Một đồ thị G bao gồm tập hợp V đỉnh tập hợp E cung, ký hiệu G=(V,E) Các đỉnh gọi nút (node) Các cung nối hai đỉnh, hai đỉnh trùng Hai đỉnh có cung nối gọi hai đỉnh kề (adjacency) Một cung nối hai đỉnh v, w coi cặp điểm (v,w) Nếu cặp có thứ tự ta có cung có thứ tự, ngược lại cung khơng có thứ tự Nếu cung đồ thị G có thứ tự G gọi đồ thị có hướng (directed graph) Nếu cung đồ thị G khơng có thứ tự đồ thị G đồ thị vô hướng (undirected graph) Trong phần sau ta dùng từ đồ thị (graph) để nói đến đồ thị nói chung, cần phân biệt rõ ta dùng đồ thị có hướng, đồ thị vô hướng Thông thường đồ thị, đỉnh biểu diễn cho đối tượng cung biểu diễn mối quan hệ (relationship) đối tượng Chẳng hạn đỉnh biểu diễn cho thành phố cung biểu diễn cho đường giao thông nối hai thành phố Một đường (path) đồ thị dãy đỉnh v1, v2, , cho (vi,vi+1) cung đồ thị (i=1, ,n-1) Đường đường từ v1 đến qua đỉnh v2, ,vn-1 Đỉnh v1 gọi đỉnh đầu, gọi đỉnh cuối Độ dài đường (n-1) Trường hợp đặc biệt dãy có đỉnh v ta coi đường từ v đến có độ dài không Đường gọi đơn (simple) đỉnh đường khác nhau, ngoại trừ đỉnh đầu đỉnh cuối trùng Một đường có đỉnh đầu đỉnh cuối trùng gọi chu trình (cycle) Một chu trình đơn đường đơn có đỉnh đầu đỉnh cuối trùng có độ dài Trong nhiều ứng dụng ta thường gắn giá trị (value) vào cung thể thông tin liên quan tới cung đó, giá trị gọi trọng số, lúc ta nói đồ thị có trọng số Đồ thị đồ thị G=(V,E) đồ thị G'=(V',E') đó: V’⊆V 59 E’ gồm tất cạnh (v,w) ∈ E cho v,w ∈ V’ Biểu diễn đồ thị Mục tiêu: Cài đặt đồ thị máy tính cấu trúc mảng cấu trúc danh sách liên kết 2.1 Biểu diễn đồ thị ma trận kề Ta dùng mảng hai chiều, chẳng hạn mảng A, kiểu boolean để biểu diễn đỉnh kề Nếu đồ thị có n đỉnh ta dùng mảng A có kích thước nxn Giả sử đỉnh đánh số n A[i,j] = true, có cung nối đỉnh thứ i đỉnh thứ j, ngược lại A[i,j] = false Rõ ràng, G đồ thị vơ hướng ma trận kề ma trận đối xứng Ví dụ 11: Ma trận liền kề với thứ tự đỉnh v1, v2, v3, v4 là: æ1 ç ç0 ç0 ç ç0 è V1 1 ö ÷ 1÷ 1 0÷ ÷ 0 1÷ø V2 V3 V4 Do ma trận lưu trữ kế tiếp, nên việc truy cập đến phần tử ma trận kề thực trực tiếp, với tốc độ nhanh, cách lưu trữ rỏ rang tốn không gian nhớ n lớn 2.2 Biểu diễn đồ thị danh sách đỉnh kề: Trong cách biểu diễn này, ta lưu trữ đỉnh kề với đỉnh i danh sách liên kết theo thứ tự đó, gọi danh sách kề Mỗi nút danh sách có qui cách: INFO LINK Trường INFO chứa số j ứng với đỉnh j kề i(1

Ngày đăng: 29/12/2021, 09:57

Hình ảnh liên quan

Có thể minh họa danh sách móc nối này bằng hình ảnh như sau: - Giáo trình Cấu trúc dữ liệu và giải thuật (Nghề: Lập trình viên máy tính - Cao đẳng) - Trường CĐ Nghề Kỹ thuật Công nghệ

th.

ể minh họa danh sách móc nối này bằng hình ảnh như sau: Xem tại trang 29 của tài liệu.
Có thể mô tả thao tác bổ sung trên bằng hình sau. - Giáo trình Cấu trúc dữ liệu và giải thuật (Nghề: Lập trình viên máy tính - Cao đẳng) - Trường CĐ Nghề Kỹ thuật Công nghệ

th.

ể mô tả thao tác bổ sung trên bằng hình sau Xem tại trang 30 của tài liệu.
Phép toán loại bỏ được mô tả bởi hình sau: - Giáo trình Cấu trúc dữ liệu và giải thuật (Nghề: Lập trình viên máy tính - Cao đẳng) - Trường CĐ Nghề Kỹ thuật Công nghệ

h.

ép toán loại bỏ được mô tả bởi hình sau: Xem tại trang 31 của tài liệu.
Hình 3.3 - Giáo trình Cấu trúc dữ liệu và giải thuật (Nghề: Lập trình viên máy tính - Cao đẳng) - Trường CĐ Nghề Kỹ thuật Công nghệ

Hình 3.3.

Xem tại trang 31 của tài liệu.
Sau đây là hình ảnh cài đặt của stack với 3 phần tử. S[1] S[2] S[3] - Giáo trình Cấu trúc dữ liệu và giải thuật (Nghề: Lập trình viên máy tính - Cao đẳng) - Trường CĐ Nghề Kỹ thuật Công nghệ

au.

đây là hình ảnh cài đặt của stack với 3 phần tử. S[1] S[2] S[3] Xem tại trang 33 của tài liệu.
Sau đây là hình ảnh minh họa queue: - Giáo trình Cấu trúc dữ liệu và giải thuật (Nghề: Lập trình viên máy tính - Cao đẳng) - Trường CĐ Nghề Kỹ thuật Công nghệ

au.

đây là hình ảnh minh họa queue: Xem tại trang 36 của tài liệu.
Hình 3.9: Mảng biểu diễn queue - Giáo trình Cấu trúc dữ liệu và giải thuật (Nghề: Lập trình viên máy tính - Cao đẳng) - Trường CĐ Nghề Kỹ thuật Công nghệ

Hình 3.9.

Mảng biểu diễn queue Xem tại trang 36 của tài liệu.
Sau đây là hình ảnh minh họa queue: - Giáo trình Cấu trúc dữ liệu và giải thuật (Nghề: Lập trình viên máy tính - Cao đẳng) - Trường CĐ Nghề Kỹ thuật Công nghệ

au.

đây là hình ảnh minh họa queue: Xem tại trang 37 của tài liệu.
Bảng sau ghi lại các giá trị khoá tương ứng với từng bước. - Giáo trình Cấu trúc dữ liệu và giải thuật (Nghề: Lập trình viên máy tính - Cao đẳng) - Trường CĐ Nghề Kỹ thuật Công nghệ

Bảng sau.

ghi lại các giá trị khoá tương ứng với từng bước Xem tại trang 41 của tài liệu.
Bảng sau ghi lại các giá trị khoá tương ứng với từng bước. - Giáo trình Cấu trúc dữ liệu và giải thuật (Nghề: Lập trình viên máy tính - Cao đẳng) - Trường CĐ Nghề Kỹ thuật Công nghệ

Bảng sau.

ghi lại các giá trị khoá tương ứng với từng bước Xem tại trang 42 của tài liệu.
Bảng sau ghi lại các giá trị khoá tương ứng với từng bước. - Giáo trình Cấu trúc dữ liệu và giải thuật (Nghề: Lập trình viên máy tính - Cao đẳng) - Trường CĐ Nghề Kỹ thuật Công nghệ

Bảng sau.

ghi lại các giá trị khoá tương ứng với từng bước Xem tại trang 43 của tài liệu.
Bảng sau ghi lại các giá trị khoá tương ứng với từng bước. - Giáo trình Cấu trúc dữ liệu và giải thuật (Nghề: Lập trình viên máy tính - Cao đẳng) - Trường CĐ Nghề Kỹ thuật Công nghệ

Bảng sau.

ghi lại các giá trị khoá tương ứng với từng bước Xem tại trang 45 của tài liệu.
Hình 6.2. Rừng gồm ba cây - Giáo trình Cấu trúc dữ liệu và giải thuật (Nghề: Lập trình viên máy tính - Cao đẳng) - Trường CĐ Nghề Kỹ thuật Công nghệ

Hình 6.2..

Rừng gồm ba cây Xem tại trang 52 của tài liệu.
Hình 6.5. Minh hoạc ấu trúc dữ liệu biểu diễn cây nhị phân trong hình 6.4 - Giáo trình Cấu trúc dữ liệu và giải thuật (Nghề: Lập trình viên máy tính - Cao đẳng) - Trường CĐ Nghề Kỹ thuật Công nghệ

Hình 6.5..

Minh hoạc ấu trúc dữ liệu biểu diễn cây nhị phân trong hình 6.4 Xem tại trang 53 của tài liệu.
Hình 6.7.Cây nhị phân đặcbiệt - Giáo trình Cấu trúc dữ liệu và giải thuật (Nghề: Lập trình viên máy tính - Cao đẳng) - Trường CĐ Nghề Kỹ thuật Công nghệ

Hình 6.7..

Cây nhị phân đặcbiệt Xem tại trang 54 của tài liệu.
Hình 6.8 Ta có th ể  khai báo nh ư  sau: - Giáo trình Cấu trúc dữ liệu và giải thuật (Nghề: Lập trình viên máy tính - Cao đẳng) - Trường CĐ Nghề Kỹ thuật Công nghệ

Hình 6.8.

Ta có th ể khai báo nh ư sau: Xem tại trang 54 của tài liệu.
HÌNH 6.10 - Giáo trình Cấu trúc dữ liệu và giải thuật (Nghề: Lập trình viên máy tính - Cao đẳng) - Trường CĐ Nghề Kỹ thuật Công nghệ

HÌNH 6.10.

Xem tại trang 55 của tài liệu.
HÌNH 6.11 - Giáo trình Cấu trúc dữ liệu và giải thuật (Nghề: Lập trình viên máy tính - Cao đẳng) - Trường CĐ Nghề Kỹ thuật Công nghệ

HÌNH 6.11.

Xem tại trang 56 của tài liệu.
Ví dụ: Chúng ta duyệt trước với cây ở hình 5.12, có kết quả như sau:   A B  D C E G H F - Giáo trình Cấu trúc dữ liệu và giải thuật (Nghề: Lập trình viên máy tính - Cao đẳng) - Trường CĐ Nghề Kỹ thuật Công nghệ

d.

ụ: Chúng ta duyệt trước với cây ở hình 5.12, có kết quả như sau: A B D C E G H F Xem tại trang 57 của tài liệu.
Ví dụ: Chúng ta duyệt trước với cây ở hình 5.12, có kết quả như sau: D B H G E F C A - Giáo trình Cấu trúc dữ liệu và giải thuật (Nghề: Lập trình viên máy tính - Cao đẳng) - Trường CĐ Nghề Kỹ thuật Công nghệ

d.

ụ: Chúng ta duyệt trước với cây ở hình 5.12, có kết quả như sau: D B H G E F C A Xem tại trang 58 của tài liệu.
Ví dụ 11: Hình ảnh danh sách kề biểu diễn đồ thị sau là: - Giáo trình Cấu trúc dữ liệu và giải thuật (Nghề: Lập trình viên máy tính - Cao đẳng) - Trường CĐ Nghề Kỹ thuật Công nghệ

d.

ụ 11: Hình ảnh danh sách kề biểu diễn đồ thị sau là: Xem tại trang 60 của tài liệu.

Từ khóa liên quan

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

Tài liệu liên quan