1. Trang chủ
  2. » Cao đẳng - Đại học

17 giao trinh CTDL> nghề QTM

97 186 0

Đ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

BỘ LAO ĐỘNG - THƯƠNG BINH VÀ XÃ HỘI TỔNG CỤC DẠY NGHỀ GIÁO TRÌNH Môn học: Cấu trúc liệu giải thuật NGHỀ: QUẢN TRỊ MẠNG TRÌNH ĐỘ: CAO ĐẲNG NGHỀ ( Ban hành kèm theo Quyết định số: 120/QĐ-TCDN ngày 25 tháng 02 năm 2013 Tổng cục trưởng Tổng cục dạy nghề) Hà Nội, năm 2013 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 nguyên 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: MH17 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 đặt biệt việc lập trình để giải toá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 toán áp dụng liệu Do vậy, cấu trúc liệu giải thuật yếu tố 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, sử dụng ngôn ngữ tựa Pascal để minh hoạ cho cấu trúc liệu thuật toá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 hoàn thiện Hà nội, ngày 25 tháng 02 năm 2013 Tham gia biên soạn Chủ biên: Ths Ngô Thị Thanh Trang Ths.Nguyễn Văn Hưng Trương Văn Hòa MỤC LỤC ĐỀ MỤC TRANG LỜI GIỚI THIỆU MỤC LỤC MÔN HỌC CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT .6 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 chuyên ngành Ý nghĩa vai trò: Đâ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 .6 Mô tả khái niệm kiểu liệu trừu tương(danh sách, cây, đồ thị), 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 Biết á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 Biết áp dụng phương pháp xếp, tìm kiế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 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 .9 1.2 Ngôn ngữ diễn đạt giải thuật 10 1.3 Thiết kế giải thuật .14 1.4 Đánh giá giải thuật .17 2.Các kiểu liệu 20 3.Kiểu ghi, kiểu trỏ .20 3.1 Kiểu ghi .21 3.2 Kiểu trỏ 21 Bài tập thực hành học viên 22 4.Các kiểu liệu trừu tượng 22 5.Các cấu trúc lưu trữ .23 5.1 Mảng 23 5.2 Danh sách liên kết 26 Bài tập thực hành học viên 27 6.Mối quan hệ CTDL giải thuật 27 Bài tập thực hành học viên 30 Gợi ý làm 30 CHƯƠNG 2: ĐỆ QUY VÀ GIẢI THUẬT ĐỆ QUY .32 1.Khái niệm đệ quy 32 2.Giải thuật đệ quy chương trình đệ quy .32 2.1 Giải thuật đệ qui 33 2.2 Chương trình đệ qui 33 3.Các toán đệ quy 33 3.1 Bài toán tính n giai thừa .33 3.2 Bài toán dãy số FIBONACCI .33 Bài tập thực hành học viên 34 Gợi ý làm 35 CHƯƠNG 3: DANH SÁCH .37 1.Danh sách phép toán danh sách .37 1.1 Khái niệm danh dách 37 1.2 Các phép toán danh dách .37 2.Cài đặt danh sách theo cấu trúc mảng 38 2.1 Khởi tạo danh sách rỗng .39 2.2 Kiểm tra danh sách rỗng .39 2.3 Chèn phần tử vào danh sách .39 2.4 Xóa phần tử khỏi danh sách .40 3.Cài đặt danh sách theo cấu trúc danh sách liên kết (đơn, kép) 41 3.1 Khởi tạo danh sách rỗng .42 3.2 Kiểm tra danh sách rỗng .42 3.3 Chèn phần tử vào danh sách .43 3.4 Xóa phần tử khỏi danh sách .44 3.5 Danh sách liên kết vòng .45 3.6 Danh sách liên kết đôi 46 Danh sách đặc biệt 46 4.1 Ngăn xếp .47 4.2 Hàng đợi .51 Bài tập thực hành học viên 56 CHƯƠNG 4: CÁC PHƯƠNG PHÁP SẮP XẾP CƠ BẢN 58 1.Định nghĩa toán xếp 58 Phương pháp chọn (Selection sort) 58 2.1.Giới thiệu phương pháp .59 2.2.Giải thuật .59 2.3.Ví dụ minh họa 60 Phương pháp chèn (Insertion sort) .60 3.1.Giới thiệu phương pháp .60 3.2.Giải thuật .61 3.3.Ví dụ minh họa 62 Phương pháp đổi chỗ (Interchange sort) 62 4.1.Giới thiệu phương pháp .62 4.2.Giải thuật .63 4.3.Ví dụ minh họa 63 5.Phương pháp bọt (Bubble sort) .64 5.1.Giới thiệu phương pháp .64 5.2.Giải thuật .64 5.3.Ví dụ minh họa 65 6.Phương pháp xếp nhanh (Quick sort) .66 6.1.Giới thiệu phương pháp .66 6.2.Giải thuật .66 6.3.Ví dụ minh họa 68 Bài tập thực hành học viên 69 CHƯƠNG 5: TÌM KIẾM 70 1.Tìm kiếm tuyến tính 70 1.1.Giới thiệu phương pháp .70 1.2.Giải thuật .71 1.3.Ví dụ minh họa 71 2.Tìm kiếm nhị phân 72 2.1.Giới thiệu phương pháp .72 2.2.Giải thuật .72 2.3.Ví dụ minh họa 73 Bài tập thực hành học viên 74 CHƯƠNG 6: CÂY 75 Khái niệm nhị phân 75 1.1 Các khái niệm 75 1.2 Khái niệm nhị phân 76 Biểu diễn nhị phân tổng quát 77 2.1 Biểu diễn nhị phân .77 2.2 Biểu diễn tổng quát 80 Bài toán duyệt nhị phân 82 3.1 Duyệt theo thứ tự trước (gốc – trái – phải) 83 3.2 Duyệt theo thứ tự (trái – gốc – phải) 83 3.3 Duyệt theo thứ tự sau (trái – phải – gốc) 84 Bài tập thực hành học viên 84 CHƯƠNG 7: ĐỒ THỊ .86 1.Các định nghĩa .86 Biểu diễn đồ thị 87 2.1 Biểu diễn đồ thị ma trận kề 87 2.2 Biểu diễn đồ thị danh sách đỉnh kề: 88 Bài toán tìm đường đồ thị 88 Bài tập thực hành học viên 91 YÊU CẦU VỀ ĐÁNH GIÁ KẾT QUẢ HỌC TẬP 93 MÔN HỌC CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT Mã môn học: MH17 * VỊ TRÍ, TÍNH CHẤT, Ý NGHĨA VÀ VAI TRÒ CỦA 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 chuyên ngành - Ý nghĩa vai trò: Đâ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: - Mô tả khái niệm kiểu liệu trừu tương(danh sách, cây, đồ thị), 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 - Biết á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 - Biết áp dụng phương pháp xếp, tìm kiế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 CỦA MÔN HỌC: Thời gian Số TT I Tên chương, mục Tổng Lý số thuyết Thực hành 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 1 Các kiểu liệu 0.5 0.5 Kiểu liệu ghi, trỏ 0.5 0.5 Kiểm tra* (LT hoặcTH) II Các kiểu liệu trừu tượng 0.5 0.5 Các cấu trúc lưu trữ 0.5 0.5 Mối quan hệ CTDL giải thuật 1 Đệ qui giải thuật đệ qui 0.5 0.5 0.5 0.5 Các toán đệ qui Danh sách Danh sách phép toán danh sách 1 30 15 14 2 Cài đặt danh sách theo cấu trúc mảng 10 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) 10 Các phương pháp xếp 22 10 11 Định nghĩa toán xếp 1 Phương pháp chọn (Selection sort) 2 Phương pháp chèn (Insertion sort) 2 Phương pháp đổi chỗ (Interchange sort) Phương pháp bọt (Bubble sort) 2 Phương pháp xếp nhanh 2 Khái niệm đệ qui Giải thuật đệ qui chương trình đệ qui III IV (Quick sort) V VI Tìm kiếm Tìm kiếm tuyến tính Tìm kiếm nhị phân Cây 10 Khái niệm nhị phân 2 Biểu diễn nhị phân tổng quát 2 Bài toán duyệt nhị phân 2 10 Khái niệm đồ thị 2 Biểu diễn đồ thị 2 Bài toán tìm đường đồ thị 2 90 45 41 VII Đồ thị Cộng 1 81 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ả” 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 82 Sau ví dụ minh họa vài nhị phân tương đương ứng với tổng quát cho: HÌNH 6.11 T’ T Ta thấy : A A - Gốc nhị phân tương đương T’ phải - Cây nhị phân tương đương T’ nhị phân T thường khác B B C D Bài toán duyệt nhị phân E F G H I J K E C Mục tiêu: Mô thuật toán duyệt nhị phân T F A G D T’ A H D E F G 83 D C J Phép xử lý nút - mà ta gọi chung phép thăm nút E F K H I J cách hệ thống, cho nút thăm lần, gọi phép duyệt H G tự: duyệt trước, Chúng ta thường duyệt nhị phân theo ba thứ duyệt duyệt sau, cácK phép định nghĩa đệ qui sau: I 3.1 Duyệt theo thứ tự trước (gốc – trái – phải) - Thăm gốc J K A - Duyệt trái theo thứ trước T trỏ,Trỏ tới gốc tổng quát - Duyệt contrỏ, phảitrỏ theo trước T’ la tớithư gốctựcây nhị phân tương B đương T) Cài đặt: procedure Truoc(Root : Tree); D C E F Begin if Root nil then Begin G H write(Root^.info); Truoc(Root^.left); HÌNH 6.12 Truoc(Root^.right); end; end; Ví dụ: Chúng ta duyệt trước với hình 5.12, có kết sau: AB DCEGHF 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); 84 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; 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 học viên 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 L F Y 85 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 86 CHƯƠNG 7: ĐỒ THỊ Mã chương: Mh17-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 toán tìm đường đồ thị - Thực thao tác an toà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 thứ tự Nếu cung đồ thị G có thứ tự G gọi đồ thị có hướng (directed graph) Nếu cung đồ thị G 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 87 đỉ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 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à: V1 1  0 0  0  1 1 0   1 0  1 V3 V2 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 88 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: 17/12/2016, 00:21

Xem thêm: 17 giao trinh CTDL> nghề QTM

TỪ KHÓA LIÊN QUAN

Mục lục

    Biết và áp dụng được các phương pháp sắp xếp, tìm kiếm cơ bản

TÀI LIỆU CÙNG NGƯỜI DÙNG

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

TÀI LIỆU LIÊN QUAN

w