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

89 39 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 / 89 MỤC LỤC ĐỀ MỤC TRANG Trang / 89 Giáo trình Cấu trúc liệu giải thuật 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 chun 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 tốn hợp lý cấu trúc liệu tương ứng để giải tố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 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 Lý thuyế t 30 22 10 10 90 15 10 6 45 Thực hành Kiểm tra* 14 11 4 41 1 1 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 / 89 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 toá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 tố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 / 89 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 toà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, 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 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 / 89  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 tốn xác định rõ ràng, xác ln thực • Tính dừng: Sau số hữu hạn bước toá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 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 tố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 toá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 toán yê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 yêu cầu người viết thuật toá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 / 89 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 q trình xử lý thuật tốn Phương pháp lưu đồ thường dùng thuật toá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 tố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 / 89 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 > Trang / 89 Giáo trình Cấu trúc liệu giải thuật Có thể diễn tả sơ đồ : Hoặc true Câu lệnh1 if < Điều kiện > then else< Câu lệnh2> Điều kiện false Câu lệnh2 true Câu lệnh tuyếnĐiều kiện Câu lệnh Case Điều kiện1: Câu lệnh1; Điều kiện2: Câufalse lệnh2; …… …… Điều kiệnn: Câu lệnhn; Else: Câu lệnhn+1 End case Câu lệnh cho phân biệt tình xử lí khác điều kiện khác mà tới câu lệnh if – then – else khác Có thể diễn tả sở đồ : B1 false B2 false Bn false Sn+1 true true true Giáo trình Cấu trúc liệu giải thuật Vài điểm S1 linh động S2 Chú thích: Trang Bi: Điều kiện Si: Câu lệnh Sn / 89 esle khơng có mặt Câu lệnhi(i = 1, 2, …, n) thay dãy câu lệnh mà không cần phải đặt : begin end Câu lệnh lặp Với số lần lặp biết trước : for i : = m to n < Câu lệnh> nhằm thực < Câu lệnh > với i lấy giá trị nguyên từ m tới n ( n ≥ m) với bước nhảy tăng 1, : for i := n down to m < Câu lệnh> tương tự câu lệnh vơi bước nhảy giảm Với số lần lặp trước: While < Điều kiện >do < Câu lệnh> Chừng mà < Điều kiện > có giá trị true thực < Câu lệnh> Hoặc : Điều kiện true Câu lệnh repeat < Câu lệnh>until < Điều kiện > Lặp lại < Câu lệnh> < Điều kiện > có giá trị true false Câu lệnh nhập: read () Câu lệnh xuất: write() fasle Câu lệnh biến danh sách cách dấu phẩy Giáo trình Cấu trúc liệu giải thuật true Trang 10 / 89 Dịng kí tự dãy kí tự đặt hai dấu nháy’ ‘ Câu lệnh kết thúc chương trình: End 1.2.4 Chương trình Chương trình hàm Có dạng : Function () S1; S2; … ; Sn Return Chương trình thủ tục Có dạng : Function () S1; S2; … ; Sn Return Câu lệnh kết thúc chương trình return thay cho end Trong cấu tạo chương trình hàm có câu lệnh gán mà tên hàm nằm vế trái Còn chương trình thủ tục khơng có Lời gọi chương trình hàm thể tên hàm danh sách tham số thực sự, nằm biểu thức Cịn với chương trình thủ tục lời gọi thể câu lệnh call có dạng : Call () Chú ý : Trong chương trình diễn đạt giải thuật phần khai báo liệu bỏ qua Nó thay vởi phần mơ ta cấu trúc liệu ngôn ngữ tự nhiên, mà ta nêu trước bước vào giải thuật 1.3 Thiết kế giải thuật Tạo lập giải thuật để giải tốn nghệ thuật mà khơng nêu đầy đủ lúc Có nhiều phương pháp thiết kế giải thuật khác Tuy nhiên ta thấy việc đơn giản phân chia tốn lớn thành tốn nhỏ hơn, điều có nghĩa coi tốn ta Modul chính, cần chia thành Modul con, tinh thần đến modul ta chia thành modul nhỏ hơn, chia tới modul đủ nhỏ để xử lý trực tiếp Sau cần tổng hợp lại phép xử lý để có giải thuật toán gốc Để làm điều đó, đứng trước tốn, thơng thường ta phải: Trang 75 / 89 Giáo trình Cấu trúc liệu giải thuật 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ết2 mức đến mức khác từ trái 6qua phải đối4với nút mức Ví dụ với hình 5.6 đánh số sau: 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 Trang 76 / 89 Giáo trình Cấu trúc liệu giải thuậ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: A B C D Hình 6.7.Cây nhị phân đặcbiệt A B ∅ C ∅ ( : chỗ trống) ∅ ∅ D ∅ ∅ ∅ ∅ ∅ ∅ ∅ E ∅ ∅ Nếu nhị phân 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 G tin (dữ liệu) nút Trường E 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 D Hình 6.8 Ta khai báo sau: Type item = ;{kiểu liệu nút } Tree = ^Node; Trang 77 / 89 Giáo trình Cấu trúc liệu giải thuật Node = record info : item; Root 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 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 Trang 78 / 89 Giáo trình Cấu trúc liệu giải thuật Với 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: HÌNH 6.11 Ta thấy : A T’ - Gốc nhị phân tương đương T’ khơng có phải A B - Cây nhị phân tương đương T’ nhị phân T thường khác B C D E F G H I J K E C Trang 79 / 89 Giáo trình Cấu trúc liệu giải thuật F G Bài toán duyệt nhị phân D T’ A Phép xử lý nút - mà ta gọi chung phép thăm H nút A cách hệ thống, cho nút thăm lần, gọi phép duyệt Chúng ta thường duyệtCcây nhị phân theo trongBba thứ tự: duyệt trước, duyệt I B duyệt sau, phép định nghĩa đệ qui sau: D 3.1 DuyệtDtheo thứ E tựFtrướcG(gốc – trái – phải) - Thăm gốc H I E J - Duyệt câycon trái theo thứ trước - Duyệt phải theo thư tự trước F H procedure Truoc(Root : Tree); J A I C J D Begin K G B K Cài đặt: C K E G T làifcon trỏ,Trỏ gốc tổng quát Root niltới then T’ trỏ, trỏ tới gốc nhị phân tương đương T) Begin 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 DCEGH F 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); write(Root^.info); Preorder(Root^.right); F Giáo trình Cấu trúc liệu giải thuật Trang 80 / 89 end; end; Ví dụ: Chúng ta duyệt trước với hình 5.12, có kết sau: DBAG HE CF 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: DBH GEFCA Bài tập thực hành học viên L H 6.1 Trình bày biểu thức theo thứ tự duyệt trước, duyệt sau, duyệt sau: 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 Trang 81 / 89 Giáo trình Cấu trúc liệu giải thuật 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 82 / 89 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 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ộ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ố cịn 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 Trang 83 / 89 Giáo trình Cấu trúc liệu giải thuật 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: 03/03/2021, 10:22

Từ khóa liên quan

Mục lục

  • MỤC LỤC

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

  • 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.2.3. Các câu lệnh

        • 1.2.4. Chương trình con

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

        • 1.4. Đánh giá giải thuật

          • 1.4.1.Đánh giá thời gian thực hiện của giải thuật

          • 1.4.2. Độ phức tạp tính toán của giải thuật

          • 2.Các kiểu dữ liệu cơ bản

          • 3.Các kiểu dữ liệu trừu tượng

          • 3. Kiểu bản ghi, kiểu con trỏ

            • 3.1. Kiểu bản ghi

            • 3.2. Kiểu con trỏ

            • Bài tập thực hành của học viên

            • 5.Các cấu trúc lưu trữ

              • 5.1. Mảng

                • 5.1.1. Khái niệm

                • 5.1.2. Cấu trúc lưu trữ của mảng

                • 5.2. Danh sách liên kết

                • Bài tập thực hành của học viên

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

Tài liệu liên quan