Giáo trình Cấu trúc dữ liệu và giải thuật

92 19 0
Giáo trình Cấu trúc dữ liệu và giải thuật

Đ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

Giáo trình Cấu trúc liệu giải thuật Trang / 92 MỤC LỤC ĐỀ MỤC TRANG MỤC LỤC MÔN HỌC CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT * NỘI DUNG CỦA MÔN HỌC: YÊU CẦU VỀ ĐÁNH GIÁ HOÀN THÀNH MÔN HỌC/MÔ ĐUN 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 14 1.4 Đánh giá giải thuật 17 2.Các kiểu liệu 19 3.Kiểu ghi, kiểu trỏ 20 3.1 Kiểu ghi 21 3.2 Kiểu trỏ 22 Bài tập thực hành học viên 22 4.Các kiểu liệu trừu tượng 20 5.Các cấu trúc lưu trữ 22 5.1 Mảng 22 5.2 Danh sách liên kết 25 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 31 1.Khái niệm đệ quy 31 2.Giải thuật đệ quy chương trình đệ quy 31 2.1 Giải thuật đệ qui 31 2.2 Chương trình đệ qui 32 3.Các toán đệ quy 32 3.1 Bài tốn tính n giai thừa 32 3.2 Bài toán dãy số FIBONACCI 32 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 Giáo trình Cấu trúc liệu giải thuật Trang / 92 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 38 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 Error! Bookmark not defined 3.2 Kiểm tra danh sách rỗng Error! Bookmark not defined 3.3 Chèn phần tử vào danh sách 45 3.4 Xóa phần tử khỏi danh sách 46 3.5 Danh sách liên kết vòng 47 3.6 Danh sách liên kết đôi 48 Danh sách đặc biệt 48 4.1 Ngăn xếp 48 4.2 Hàng đợi 53 Bài tập thực hành học viên 58 Gợi ý làm 59 CHƯƠNG 4: CÁC PHƯƠNG PHÁP SẮP XẾP CƠ BẢN 59 1.Định nghĩa toán xếp 60 Phương pháp chọn (Selection sort) 60 2.1.Giới thiệu phương pháp 60 2.2.Giải thuật 60 2.3.Ví dụ minh họa 61 Phương pháp chèn (Insertion sort) 61 3.1.Giới thiệu phương pháp 61 3.2.Giải thuật 62 3.3.Ví dụ minh họa 63 Phương pháp đổi chỗ (Interchange sort) 63 4.1.Giới thiệu phương pháp 63 4.2.Giải thuật 63 Giáo trình Cấu trúc liệu giải thuật Trang / 92 4.3.Ví dụ minh họa 64 5.Phương pháp bọt (Bubble sort) 65 5.1.Giới thiệu phương pháp 65 5.2.Giải thuật 65 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 67 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 71 1.Tìm kiếm tuyến tính 71 1.1.Giới thiệu phương pháp 71 1.2.Giải thuật 71 1.3.Ví dụ minh họa 72 2.Tìm kiếm nhị phân 73 2.1.Giới thiệu phương pháp 73 2.2.Giải thuật 73 2.3.Ví dụ minh họa 74 Bài tập thực hành học viên 75 CHƯƠNG 6: CÂY 76 Khái niệm nhị phân 76 1.1 Các khái niệm 76 1.2 Khái niệm nhị phân 77 Biểu diễn nhị phân tổng quát 78 2.1 Biểu diễn nhị phân 78 2.2 Biểu diễn tổng quát 81 Bài toán duyệt nhị phân 83 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 Giáo trình Cấu trúc liệu giải thuật Trang / 92 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ề: 87 Bài tốn tìm đường đồ thị 88 Bài tập thực hành học viên 91 Giáo trình Cấu trúc liệu giải thuật Trang / 92 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 bắt buộc Ý 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 Thực hành Lý thuyế t 30 22 10 10 90 15 10 6 45 14 11 4 41 Tên chương môn Tổng số Tổng quan Cấu trúc liệu giải thuật Đệ qui giải thuật đệ qui Danh sách Các phương pháp xếp Tìm kiếm Cây Đồ thị Cộng Kiểm tra* 1 1 YÊU CẦU VỀ ĐÁNH GIÁ HỒN THÀNHMƠN HỌC/MƠ ĐUN Giáo trình Cấu trúc liệu giải thuật Trang / 92 Về kiến thức: Đánh giá kiến thức qua kiểm tra viết, trắc nghiệm đạt yêu cầu sau: Hiểu mối quan hệ cấu trúc liệu giải thuật Phân tích kiểu liệu, giải thuật, kết hợp chúng để tạo thành chương trình máy tính 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 thích để giải tốn thực tế Biết áp dụng phương pháp xếp, tìm kiếm đơn giản Về kỹ năng: Đánh giá kỹ thực hành sinh viên: Dùng ngôn ngữ lập trình thể máy tính toán cần kiểm nghiệm về: đệ qui, danh sách, cây, đồ thị, xếp, tìm kiếm Về thái độ: Cẩn thận, tỉ mỉ, thao tác chuẩn xác, tự giác học tập Giáo trình Cấu trúc liệu giải thuật Trang / 92 CHƯƠNG 1: TỔNG QUAN VỀ CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT Mã chương: Mh17-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 Nội dung chí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 ❖ Khái niệm: Giải thuật, gọi thuật toá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 tố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 toá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 Giáo trình Cấu trúc liệu giải thuật Trang / 92 ❖ Các đặc trưng giải thuật: • Dữ liệu vào: Mỗi thuật tốn có số giá trị nhập vào, chúng gọi Input data • Dữ liệu ra: Mỗi thuật tốn có số giá trị đưa ra, chúng gọi Output data • Tính xác định: Mọi bước thuật toán xác định rõ ràng, xác ln thực • Tính dừng: Sau số hữu hạn bước tốn ln giải • Tính phổ dụng: Thuật tốn làm việc với kiểu liệu khác miền xác định ln dẫn đến kết mong muốn • Tính hiệu quả: Được thể đắn thuật toán độ phức tạp thuật toán Tính hiệu thể khả thực thi bước thuật toán để đạt kết mong muốn tổng thời gian thực thuật toán phải đủ nhỏ Chú ý: Trên thực tế để đánh giá tính hiệu thuật tốn, người ta thường qui đơn vị tính sơ cấp Tính hiệu thuật giải đo số lượng đơn vị tính sơ cấp mà thuật tốn u cần thực Ví dụ cho phép tính sơ cấp phép +, -, *, : số tự nhiên nhỏ 10 1.2 Ngôn ngữ diễn đạt giải thuật • Sử dụng ngơn ngữ tự nhiên: Sử dụng ngôn ngữ thường ngày để biểu diễn bước thuật toán Phương pháp biểu diễn khơng u cầu người viết thuật tốn người đọc thuật toán phải nắm quy tắc Tuy vậy, cách biểu diễn thường dài dịng, khơng thể rõ cấu trúc thuật tốn, đơi lúc gây hiểu lầm khó hiểu cho người đọc • Sử dụng sơ đồ khối (flowchart): Lưu đồ hay sơ đồ khối công cụ trực quan để diễn đạt thuật tốn Giáo trình Cấu trúc liệu giải thuật Trang 10 / 92 Biểu diễn thuật toán lưu đồ giúp người đọc theo dõi phân cấp trường hợp trình xử lý thuật toán Phương pháp lưu đồ thường dùng thuật tốn có tính rắc rối, khó theo dõi q trình xử lý Ðể biểu diễn thuật toán theo sơ đồ khối, ta phải phân biệt hai loại thao tác: - Thao tác chọn lựa (decision): dựa theo điều kiện Chẳng hạn : thao tác "nếu a = b thực thao tác B2, ngược lại thực B4" thao tác chọn lựa Thao tác chọn lựa biểu diễn hình thoi, bên chứa biểu thức điều kiện - Thao tác xử lý (process): Các thao tác cịn lại khơng thuộc loại chọn lựa xếp vào loại hành động Chẳng hạn, "Chọn hộp để lên dĩa cân trống." thao tác thuộc loại hành động Thao tác xử lý biểu diễn hình chữ nhật, bên chứa nội dung xử lý • Sử dụng mã giả(pseudocode): Tuy sơ đồ khối thể rõ trình xử lý phân cấp trường hợp thuật toán lại cồng kềnh Ðể mơ tả thuật tốn nhỏ ta phải dùng không gian lớn Hơn nữa, lưu đồ phân biệt hai thao tác rẽ nhánh (chọn lựa có điều kiện) xử lý mà thực tế, thuật tốn cịn có thêm thao tác lặp Khi thể thuật toán mã giả, ta vay mượn cú pháp ngơn ngữ lập trình để thể thuật tốn Tất nhiên, ngơn ngữ lập trình có thao tác xử lý, rẽ nhánh lặp Dùng mã giả vừa tận dụng khái niệm ngơn ngữ lập trình, vừa giúp người cài đặt dễ dàng nắm bắt nội dung thuật toán Tất nhiên mã giả ta dùng phần ngôn ngữ tự nhiên Một vay mượn cú pháp khái niệm ngôn ngữ lập trình chắn mã giả bị phụ thuộc vào ngơn ngữ lập trình Chính lý này, chưa vội tìm hiểu mã giả • Sử dụng ngơn ngữ lập trình(code):Pascal, C, C++, C#, Giáo trình Cấu trúc liệu giải thuật Trang 11 / 92 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ệnh n 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 > Giáo trình Cấu trúc liệu giải thuật Trang 79 / 92 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) Giáo trình Cấu trúc liệu giải thuật Trang 80 / 92 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: 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 right 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 A B D C E Hình 6.8 Ta khai báo sau: Type item = ;{kiểu liệu nút } Tree = ^Node; Node = record G Giáo trình Cấu trúc liệu giải thuật Trang 81 / 92 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 Root B D C E G Hình 6.9 Cấu trúc liệu biểu diễn Để 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 INFO REK Giáo trình Cấu trúc liệu giải thuật Với Trang 82 / 92 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 Sau ví dụ minh họa vài nhị phân tương đương ứng với tổng quát cho: T’ T 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’ trỏ, trỏ tới gốc nhị phân tương đương T) HÌNH 6.11 Ta thấy : - Gốc nhị phân tương đương T’ khơng có phải Giáo trình Cấu trúc liệu giải thuật Trang 83 / 92 - 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 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 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 câycon trái theo thứ trước - Duyệt phải theo thư tự trước B C Cài đặt: procedure Truoc(Root : Tree); D 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 câycon 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); Giáo trình Cấu trúc liệu giải thuật Trang 84 / 92 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; 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 6.2 Dựng nhị phân biết thứ tự đỉnh duyệt theo Giáo trình Cấu trúc liệu giải thuật Trang 85 / 92 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 YÊU CẦU VỀ ĐÁNH GIÁ KẾT QUẢ HỌC TẬP: Kết thực Tiêu chí đánh giá Hệ số Kiến thức 0,3 Kỹ 0,5 Thái độ 0,2 Cộng: Kết qủa học tập Giáo trình Cấu trúc liệu giải thuật Trang 86 / 92 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 tố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 tốn tố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 tồn với máy tính Nội dung gồm: 1.Các định nghĩa 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 Giáo trình Cấu trúc liệu giải thuật Trang 87 / 92 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ị 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 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: 26/12/2021, 17:22

Mục lục

    MÔN HỌC CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT

    * NỘI DUNG CỦA MÔN HỌC:

    YÊU CẦU VỀ ĐÁNH GIÁ HOÀN THÀNHMÔN HỌC/MÔ ĐUN

    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 và đánh giá độ phức tạp của 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.2.1. Quy cách về cấu trúc chương trình

    1.2.2. Kí tự và biểu thức

    1.3. Thiết kế giải thuật

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

Tài liệu liên quan