Giáo trình Cấu trúc dữ liệu và giải thuật (Bản đẹp)

Giới thiệu:

Tổng quan về giải thuật. Đầu tiên là cách phân tích 1 vấn đề, từ thực tiễn

cho tới chương trình, cách thiết kế một giải pháp cho vấn đề theo cách giải quyết

bằng máy tính. Tiếp theo, các phương pháp phân tích, đánh giá độ phức tạp và

thời gian thực hiện giải thuật cũng được xem xét trong chương.

Mục tiêu:

- Mô tả được khái niệm giải thuật, mối quan hệ giữa cấu trúc dữ liệu và giải

thuật. Trình bày được các tiêu chuẩn để đánh giá độ phức tạp của giải thuật.

- Ghi nhớ được các kiểu dữ liệu cơ bản, kiểu dữ liệu trừu tượng và các cấu

trúc dữ liệu cơ bản.

- Thực hiện cá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 và đánh giá độ phức tạp của giải thuật

Mục tiêu: Mô tả được khái niệm giải thuật, mối quan hệ giữa cấu trúc

dữ liệu và giải thuật. Trình bày được các tiêu chuẩn để đánh giá độ phức tạp

của 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 là thuật toán (algorithm) là một trong những khái

niệm quan trọng nhất trong 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ể hiện một giải pháp cụ thể, thực hiện từng bước một để đưa

tới lời giải cho một bài toán.

Nói cách khác, giải thuật là một tập hữu hạn các phép toán cơ sở, được sắp

đặt theo những quy tắc chính xác, nhằm giải một bài toán, hay là một bộ các qui

tắc hay qui trình cụ thể nhằm giải quyết một vấn đề trong một số bước hữu hạn,

nhằm cung cấp một kết quả từ một tập hợp của các dữ kiện đưa vào.

Các phép toán cơ sở là những phép toán đơn giãn mà thời gian thực hiện nó

là hữu hạn và không phụ thuộc vào kích thước của dữ liệu.

Các phép toán trong giải thuật phải được xác định rỏ ràng, dễ hiểu, không

mập mờ.

Với mọi bộ dữ liệu vào thoả mãn các điều kiện của bài toán, thuật toán phải

dừng lại sau một số hữu hạn các bước cần thực hiệnGiáo trình Cấu trúc dữ liệu và giải thuật Trang 9 / 92

Các đặc trưng của giải thuật:

• Dữ liệu vào: Mỗi thuật toán đều có một số giá trị nhập vào, chúng được

gọi là Input data.

• Dữ liệu ra: Mỗi thuật toán có một số giá trị đưa ra, chúng được gọi là

Output data.

• Tính xác định: Mọi bước của một thuật toán bao giờ cũng được xác

định rõ ràng, chính xác và do đó luôn thực hiện được.

• Tính dừng: Sau một số hữu hạn các bước bài toán luôn được giải

quyết.

• Tính phổ dụng: Thuật toán có thể làm việc với các kiểu dữ liệu khác

nhau trong miền xác định và luôn dẫn đến kết quả mong muốn.

• Tính hiệu quả: Được thể hiện ở sự đúng đắn của thuật toán và độ phức

tạp của thuật toán.

Tính hiệu quả được thể hiện bởi khả năng thực thi các bước của

thuật toán để đạt được kết quả mong muốn và tổng thời gian thực

hiện thuật toán phải đủ nhỏ.

Chú ý: Trên thực tế để đánh giá tính hiệu quả của các thuật toán,

người ta thường qui về các đơn vị tính sơ cấp. Tính hiệu quả của một

thuật giải được đo bởi số lượng các đơn vị tính sơ cấp mà thuật toán này

yêu cần thực hiện. Ví dụ cho các phép tính sơ cấp đó là phép +, -, *, :

các số tự nhiên nhỏ hơn 10

Giáo trình Cấu trúc dữ liệu và giải thuật (Bản đẹp) trang 1

Trang 1

Giáo trình Cấu trúc dữ liệu và giải thuật (Bản đẹp) trang 2

Trang 2

Giáo trình Cấu trúc dữ liệu và giải thuật (Bản đẹp) trang 3

Trang 3

Giáo trình Cấu trúc dữ liệu và giải thuật (Bản đẹp) trang 4

Trang 4

Giáo trình Cấu trúc dữ liệu và giải thuật (Bản đẹp) trang 5

Trang 5

Giáo trình Cấu trúc dữ liệu và giải thuật (Bản đẹp) trang 6

Trang 6

Giáo trình Cấu trúc dữ liệu và giải thuật (Bản đẹp) trang 7

Trang 7

Giáo trình Cấu trúc dữ liệu và giải thuật (Bản đẹp) trang 8

Trang 8

Giáo trình Cấu trúc dữ liệu và giải thuật (Bản đẹp) trang 9

Trang 9

Giáo trình Cấu trúc dữ liệu và giải thuật (Bản đẹp) trang 10

Trang 10

Tải về để xem bản đầy đủ

pdf 92 trang xuanhieu 3760
Bạn đang xem 10 trang mẫu của tài liệu "Giáo trình Cấu trúc dữ liệu và giải thuật (Bản đẹp)", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Giáo trình Cấu trúc dữ liệu và giải thuật (Bản đẹp)

Giáo trình Cấu trúc dữ liệu và giải thuật (Bản đẹp)
trỏ, trỏ tới cây con trái của nút 
 D E G 
đó 
 Trường right ứng với con 
trỏ, trỏ tới cây con phải của Hình 6.8 
nút đó 
 Ta có thể khai báo như sau: 
 Type 
 item = ...;{kiểu dữ liệu của các nút trên cây } 
 Tree = ^Node; 
 Node = record 
 Giáo trình Cấu trúc dữ liệu và giải thuật Trang 81 / 92 
 info : item; 
 left, right: Tree; 
 end; 
 var Root :Tree; 
 Ví dụ: cây nhị phân hình 5.8 có dạng lưu trữ móc nối như ở hình 5.9 
 Root 
 A 
 B C 
 D E G 
 Hình 6.9. Cấu trúc dữ liệu biểu diễn cây 
 Để truy nhập vào các nút trên cây cần có một con trỏ Root, trỏ tới nút gốc 
của cây 
2.2. Biểu diễn cây tổng quát 
 Biểu diễn cây tổng quát bằng một cây nhị phân gọi là cây nhị phân tương 
đương. 
 Với cách biểu diễn này chúng ta gán số thứ tự cho các cây con của mỗi 
nút.Giả sử trên hình vẽ ta đánh số thứ tự từ trái sang phải. 
 Chẳng hạn với nút có 5 cây con sau đây,thì sẽ đánh số như 
 A 
 B C D E F 
 1 2 3 4 5 
 HÌNH 6.10 
 Chúng ta xem: nút 1 là “con cả“ của nút A, nút 2 là “em kề nút 1”.,nút 3 là 
“em kề nút 2” v.v. Với mỗi nút chúng ta chỉ cần chú ý tới hai quan hệ này là 
đủ 
 Từ đó quy cách của mỗi nút trên cây nhị phân tương đương, có dạng : 
 LCC INFO REK 
 Giáo trình Cấu trúc dữ liệu và giải thuật Trang 82 / 92 
 Với LCC là trường con trỏ, ở đó chứa địa chỉ của nút “con cả” 
 REK là trường con trỏ, ở đó chứa địa chỉ của nút “em kề nó” 
 Như vậy với bất kì một cây con nào cũng có một và chỉ một cây nhị phân 
tương đương với nó. Điều đó cũng có nghĩa là : với một cây tổng quát cho, thì 
biểu diễn trong máy của nó là cây nhị phân tương đương. Các phép xử lí trên 
cây tổng quát đều thực hiện qua cây nhị phân tương đương này và kết quả sau 
khi chuyển đổi lại. sẽ phải khớp với ý đồ xử lí đối với cây tổng quát. 
 Sau đây là ví dụ minh họa một vài cây nhị phân tương đương ứng với cây 
tổng quát cho: 
 T T’ 
 A A 
 B 
 B C D 
 E F G H I J K E C 
 T F G D 
 T’ 
 A 
 H 
 A 
 B C B I 
 D C J 
 D E F G 
 E F K 
 H I J 
 H G 
 K 
 I J 
 K 
 T là con trỏ,Trỏ tới gốc cây tổng quát 
 T’ là con trỏ, trỏ tới gốc cây nhị phân tương đương 
 của cây T) 
 HÌNH 6.11 
 Ta thấy : 
 - Gốc của cây nhị phân tương đương T’ không có con phải. 
 Giáo trình Cấu trúc dữ liệu và giải thuật Trang 83 / 92 
 - Cây nhị phân tương đương T’ của một cây nhị phân T thường khác nó. 
3. Bài toán duyệt cây nhị phân 
 Phép xử lý các nút trên cây - mà ta gọi chung là phép thăm các nút một 
cách hệ thống, sao cho mỗi nút được thăm đúng một lần, gọi là phép duyệt cây. 
Chúng ta thường duyệt cây nhị phân theo một trong ba thứ tự: duyệt trước, duyệt 
giữa và duyệt sau, các phép này được định nghĩa đệ qui như 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 cây con phải theo thư tự trước 
 B C 
 Cài đặt: 
 procedure Truoc(Root : Tree); D E F 
 Begin 
 if Root nil then G 
 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 cây ở hình 5.12, có kết quả như sau: 
 A B D C E G H F 
3.2. Duyệt theo thứ tự giữa (trái – gốc – phải) 
 - Duyệt câycon trái theo thứ giữa 
 - Thăm gốc 
 - Duyệt cây con phải theo thư tự giữa 
 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 dữ liệu và 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 cây ở hình 5.12, có kết quả như sau: 
 D B A G H E C F 
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 cây con 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 cây ở hình 5.12, có kết quả như sau: 
 D B H G E F C A 
Bài tập thực hành của học viên 
 6.1. Trình bày các biểu thức theo thứ tự duyệt trước, duyệt sau, duyệt giữa 
của cây sau: 
 A 
 B J 
 I K D F 
 H L Y 
 6.2. Dựng cây nhị phân biết thứ tự các đỉnh khi duyệt theo 
Giáo trình Cấu trúc dữ liệu và 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ự giữa : 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ự giữa : 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 quả Kết qủa 
 Tiêu chí đánh giá Hệ số 
 thực hiện học tập 
 Kiến thức 0,3 
 Kỹ năng 0,5 
 Thái độ 0,2 
 Cộng: 
 Giáo trình Cấu trúc dữ liệu và giải thuật Trang 86 / 92 
 CHƯƠNG 7: ĐỒ THỊ 
 Mã chương: Mh17-07 
 Giới thiệu: 
 Đồ thị có vai trò rất quan trọng trong thực tế. Đồ thị được dùng để giải 
 các bài toán trong nhiều lĩnh vực khác nhau. Ví dụ, dùng đồ thị để biểu diễn 
 các mạch điện, biểu diễn các công thức phân tử hóa học, biểu diễn mạng máy 
 tính. Đồ thị với các trọng số được gán cho các cạnh của nó có thể dùng để 
 giải các bài toán như bài toán tìm đường đi ngắn nhất giữa hai thành phố 
 trong một mạng giao thông. Chúng ta cũng có thể dùng đồ thị để lập lịch thi 
 và phân chia kênh cho các đài truyền hình. 
 Mục tiêu: 
 - Trình bày được khái niệm về đồ thị; 
 - Cài đặt được đồ thị trên máy tính bằng các cấu trúc mảng và cấu trúc danh 
sách liên kết; 
 - Giải được bài toán tìm đường đi trên đồ thị. 
 - Thực hiện cá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ột đồ thị G bao gồm một tập hợp V các đỉnh và một tập hợp E các cung, 
ký hiệu G=(V,E). Các đỉnh còn được gọi là nút (node). Các cung nối giữa hai 
đỉnh, hai đỉnh này có thể trùng nhau. 
 Hai đỉnh có cung nối nhau gọi là hai đỉnh kề (adjacency). 
 Một cung nối giữa hai đỉnh v, w có thể coi như là một cặp điểm (v,w). Nếu 
cặp này có thứ tự thì ta có cung có thứ tự, ngược lại thì cung không có thứ tự. 
 Nếu các cung trong đồ thị G có thứ tự thì G gọi là đồ thị có hướng (directed 
graph). 
 Nếu các cung trong đồ thị G không có thứ tự thì đồ thị G là đồ thị vô hướng 
(undirected graph). 
 Trong các phần sau này ta dùng từ đồ thị (graph) để nói đến đồ thị nói 
chung, khi nào cần phân biệt rõ ta sẽ dùng đồ thị có hướng, đồ thị vô hướng. 
 Thông thường trong một đồ thị, các đỉnh biểu diễn cho các đối tượng còn 
các cung biểu diễn mối quan hệ (relationship) giữa các đối tượng đó. Chẳng hạn 
các đỉnh có thể biểu diễn cho các thành phố còn các cung biểu diễn cho đường 
giao thông nối giữa hai thành phố. 
 Một đường đi (path) trên đồ thị là một dãy tuần tự các đỉnh v1, v2,..., vn 
sao cho (vi,vi+1) là một cung trên đồ thị (i=1,...,n-1). Đường đi này là đường đi 
 Giáo trình Cấu trúc dữ liệu và giải thuật Trang 87 / 92 
từ v1 đến vn và đi qua các đỉnh v2,...,vn-1. Đỉnh v1 còn gọi là đỉnh đầu, vn gọi là 
đỉnh cuối. Độ dài của đường đi này bằng (n-1). Trường hợp đặc biệt dãy chỉ có 
một đỉnh v thì ta coi đó là đường đi từ v đến chính nó có độ dài bằng không. 
 Đường đi gọi là đơn (simple) nếu mọi đỉnh trên đường đi đều khác nhau, 
ngoại trừ đỉnh đầu và đỉnh cuối có thể trùng nhau. Một đường đi có đỉnh đầu và 
đỉnh cuối trùng nhau gọi là một chu trình (cycle). Một chu trình đơn là một 
đường đi đơn có đỉnh đầu và đỉnh cuối trùng nhau và có độ dài ít nhất là 1. 
 Trong nhiều ứng dụng ta thường gắn các giá trị (value) vào các cung thể 
hiện một thông tin liên quan tới cung đó, giá trị đó được gọi là trọng số, lúc này 
ta nói đồ thị có trọng số. 
 Đồ thị con của một đồ thị G=(V,E) là một đồ thị G'=(V',E') trong đó: 
 ¾ V’⊆V và 
 ¾ E’ gồm tất cả các cạnh (v,w) ∈ E sao cho v,w ∈ V’. 
2. Biểu diễn đồ thị 
2.1. Biểu diễn đồ thị bằng ma trận kề 
 Ta dùng một mảng hai chiều, chẳng hạn mảng A, kiểu boolean để biểu diễn 
các đỉnh kề. Nếu đồ thị có n đỉnh thì ta dùng mảng A có kích thước nxn. Giả sử 
các đỉnh được đánh số 1..n thì A[i,j] = true, nếu có cung nối giữa đỉnh thứ i và 
đỉnh thứ j, ngược lại thì A[i,j] = false. Rõ ràng, nếu G là đồ thị vô hướng thì ma 
trận kề sẽ là ma trận đối xứng. 
 Ví dụ 11: Ma trận liền kề với thứ tự các đỉnh v1, v2, v3, v4 là: 
 V1 V2 
 1 1 1 0 
 0 1 0 1 
 V3 V4 
 0 1 1 0 
 0 0 0 1 
 Do ma trận lưu trữ kế tiếp, nên việc truy cập đến các phần tử của ma trận 
kề được thực hiện trực tiếp, với tốc độ nhanh, nhưng cách lưu trữ này rỏ rang là 
tốn không gian nhớ khi n lớn 
2.2. Biểu diễn đồ thị bằng danh sách các đỉnh kề: 
 Trong cách biểu diễn này, ta sẽ lưu trữ các đỉnh kề với một đỉnh i trong một 
danh sách liên kết theo một thứ tự nào đó, gọi là danh sách kề. Mỗi nút trong 
danh sách có qui cách: 
 INFO LINK 
 Trường INFO chứa số j ứng với đỉnh j là kề của i(1<=i<=n) trong danh 
sách lân cận của i 
 Giáo trình Cấu trúc dữ liệu và giải thuật Trang 88 / 92 
 Trường LINK chứa con trỏ, trỏ tới nút tiếp theo trong danh sách. 
 Danh sách có m nút, nếu đỉnh i có m đỉnh kề . 
 Mỗi danh sách như vậy lại có “nút đầu danh sách”. Thường các “nút đầu 
danh sách” là các phần tử của một vec tơ V, có kích thước bằng n, phần tử V[i] 
của V (1<=i<=n), ứng với danh sách kề của nút thứ i, nó chứa địa chỉ của nút 
đầu tiên của danh sách kề này. 
 Ví dụ 11: Hình ảnh danh sách kề biểu diễn đồ thị sau là: 
 V1 V2 
 V3 V4 
V[1] 2 3 
V[2] 1 3 4 
V[3] 1 2 4 
V[4] 2 3 
3. Bài toán tìm đường đi trên đồ thị 
 Trong đời sống, chúng ta thường gặp những tình huống như sau: để đi từ 
địa điểm A đến địa điểm B trong thành phố, có nhiều đường đi, nhiều cách đi; 
có lúc ta chọn đường đi ngắn nhất (theo nghĩa cự ly), có lúc lại cần chọn đường 
đi nhanh nhất (theo nghĩa thời gian) và có lúc phải cân nhắc để chọn đường đi rẻ 
tiền nhất (theo nghĩa chi phí), v.v... 
 Có thể coi sơ đồ của đường đi từ A đến B trong thành phố là một đồ thị, 
với đỉnh là các giao lộ (A và B coi như giao lộ), cạnh là đoạn đường nối hai giao 
lộ. Trên mỗi cạnh của đồ thị này, ta gán một số dương, ứng với chiều dài của 
đoạn đường, thời gian đi đoạn đường hoặc cước phí vận chuyển trên đoạn đường 
đó, ... 
 Giáo trình Cấu trúc dữ liệu và giải thuật Trang 89 / 92 
 Đồ thị có trọng số là đồ thị G=(V,E) mà mỗi cạnh (hoặc cung) e E được 
gán bởi một số thực m(e), gọi là trọng số của cạnh (hoặc cung) e. 
 Cho đơn đồ thị liên thông, có trọng số G=(V,E). Tìm khoảng cách d(u0,v) 
từ một đỉnh u0 cho trước đến một đỉnh v bất kỳ của G và tìm đường đi ngắn nhất 
từ u0 đến v. 
 Ở đây, chúng ta có thuật toán do E. Dijkstra, nhà toán học người Hà Lan, 
đề xuất năm 1959. Phương pháp của thuật toán Dijkstra là: xác định tuần tự đỉnh 
có khoảng cách đến u0 từ nhỏ đến lớn. 
 Trước tiên, đỉnh có khoảng cách đến a nhỏ nhất chính là a, với d(u0,u0)=0. 
Trong các đỉnh v u0, tìm đỉnh có khoảng cách k1 đến u0 là nhỏ nhất. Đỉnh này 
phải là một trong các đỉnh kề với u0. Giả sử đó là u1. Ta có:d(u0,u1) = k1. 
 Trong các đỉnh v u0 và v u1, tìm đỉnh có khoảng cách k2 đến u0 là nhỏ 
nhất. Đỉnh này phải là một trong các đỉnh kề với u0 hoặc với u1. Giả sử đó là u2. 
Ta có: 
 + d(u0,u2) = k2. 
 Tiếp tục như trên, cho đến bao giờ tìm được khoảng cách từ u0 đến mọi 
đỉnh v của G. Nếu V={u0, u1, ..., un} thì: 
 + 0 = d(u0,u0) < d(u0,u1) < d(u0,u2) < ... < d(u0,un). 
 + 
 Thuật toánDijkstra 
 procedureDijkstra (G=(V,E) là đơn đồ thị liên thông, có trọng số với trọng 
số dương) 
 {G có các đỉnh a=u0, u1, ..., un=z và trọng số m(ui,uj), với m(ui,uj) = nếu 
(ui,uj) không là một cạnh trong G} 
 + for i := 1 to n 
 + L(ui) := 
 + L(a) := 0 
 + S := V \ {a} 
 + u := a 
 + while S  
 + begin 
 + for tất cả các đỉnh v thuộc S 
 + if L(u) +m(u,v) < L(v) then L(v) := L(u)+m(u,v) 
 + u := đỉnh thuộc S có nhãn L(u) nhỏ nhất 
 Giáo trình Cấu trúc dữ liệu và giải thuật Trang 90 / 92 
 + {L(u): độ dài đường đi ngắn nhất từ a đến 
 u} 
 + S := S \ {u} 
 + End; 
 Ví dụ 1: Tìm khoảng cách d(a,v) từ a đến mọi đỉnh v và tìm đường đi ngắn 
nhất từ a đến v cho trong đồ thị G sau. 
 + 
 4 6 
 b c d 
 + 
 1 1 2 2 
 + 2 2 
 3 4 3 
 + a e g h 3 
 + 
 2 3 5 5 1 
 + 3 
 n m k 
 + 6 3 
 Giáo trình Cấu trúc dữ liệu và giải thuật Trang 91 / 92 
 + L+ L+ L+ L+ L+ L+ L+ L+ L+ L
 (a) (b) (c) (d) (e) (g) (h) (k) (m) (n) 
 + + + + + + + + + + 
 +0 
 + + + + + + + + + + 
 − 1 3 3 2 
 + 
 +− + − + 5 + + 2 + + + + + 
 3 2 
 + 
 − 
 +− + + 5 + + 2 + + + + 3 − 
 + 
 − − 
 +− + + 4 + + + 6 + + + 3 + − 
 + 
 − − 4 − 6 6 − − 
 + + + + + + + + + + 
 + 
 − − − 10 − 6 6 − − 
 + + + + + + + + + + 
 +− − − 8 − − 9 6 − − 
 + + + + + + + + + + 
 +− − − 8 − − 7 − − − 
 + + + + + + + + + + 
 +− − − 8 − − − − − − 
 + + + + + + + + + + 
 + 
Bài tập thực hành của học viên 
 7.1.Hãy nêu vài ví dụ thực tế biểu diễn được bằng cấu trúc đồ thị. 
 7.2. Cây có phải là một đồ thị ? 
 7.3.Một đồ thị vô hướng có 5 đỉnh thì có tối đa bao nhiêu cung giữa một 
đỉnh với một đồ thị đỉnh khác. 
 7.4. Với đồ thị có n đỉnh thì sao ? 
 7.5. Vẽ một đồ thị định hướng có 5 đỉnh A,B,C,D,E và các cung định 
hướng : (A,B);(C,D);(D,A);(B,D);(B,E);(E,D). 
 7.6.Cho các đồ thị G1 và G2 sau đây : 
Giáo trình Cấu trúc dữ liệu và giải thuật Trang 92 / 92 
 1 2 
 1 2 
 3 
 5 4 
 4 3 
 G1 G2 
Hãy lập ma trận kề của G1 và G2 
Hãy lập danh sách kề của G1 và G2 
YÊU CẦU VỀ ĐÁNH GIÁ KẾT QUẢ HỌC TẬP: 
 Kết quả Kết qủa 
 Tiêu chí đánh giá Hệ số 
 thực hiện học tập 
 Kiến thức 0,3 
 Kỹ năng 0,5 
 Thái độ 0,2 
 Cộng: 
 Giáo trình Cấu trúc dữ liệu và giải thuật Trang 93 / 92 
 TÀI LIỆU THAM KHẢO 
1. Aho, Hopcroft & Ullman, Data Structures and Algorithms,Addison 
 Wesley, 2001. 
2. Robert Sedewick, Algorithms in Java Third Edition,Addison Wesley, 2002. 
 Niklaus Wirth, Data Structures and Algorithms,Prentice Hall, 2004. 
 Robert Sedewick, Algorithms,Addison Wesley, 1983. 
3. Bruno R. Preiss, Data Structures and Algorithms with Object-Oriented 
 Design, Jon Wiley &Sons, 1998. 
4. Đinh Mạnh Tường, Cấu trúc dữ liệu và thuật toán, NXB Đại học Quốc gia 
 Hà Nội. 
5. PGS.TS.Đỗ Xuân Lôi – Cấu trúc dữ liệu và giải thuật – NXB Khoa học và 
 Kỹ thuật – 1997. 
6. PGS.TS.Đỗ Xuân Lôi – Giáo trình Cấu trúc dữ liệu và giải thuật – Vụ giáo 
 dục chuyên nghiệp, NXB Giáo dục - 2002 
7. Trần Hạnh Nhi, Giáo trình cấu trúc dữ liệu,Trường đại học Khoa hoc 
 tựnhiên, tp. Hồ Chí Minh, 2003 
8. PGS. TS. Hoàng Nghĩa Tý, Cấu Trúc Dữ Liệu Và Thuật Toán, Xây Dựng, 
 2002 
9. Gia Việt(Biên dịch), ESAKOV.J , WEISS T, Bài Tập Nâng Cao Cấu 
 Trúc Dữ Liệu Cài Đặt Bằng C, Nhà xuất bản: Thống kê 
10. Minh Trung(Biên dịch), TS. Khuất Hữu Thanh(Biên dịch), Chu Trọng 
 Lương(Tác giả), 455 Bài Tập Cấu Trúc Dữ Liệu - Ứng Dụng Và Cài Đặt 
 Bằng C++,Thống kê . 
11. Robert Sedgewick, Trần Đan Thư(Biên dịch), Bùi thị Ngọc Nga(Biên 
 dịch), Cẩm Nang Thuật Toán (Tập1,2); Khoa học và kỹ thuật 
12. GS. TSKH. Hoàng Kiếm, Giải Một Bài Toán Trên Máy Tính Như Thế 
 Nào,Giáo dục, 2005. 
13. Nguyễn Quốc Lượng, Hoàng Đức Hải – Cấu trúc dữ liệu + giải thuật = 
 chương trình – NXB Giáo dục – 1996. 

File đính kèm:

  • pdfgiao_trinh_cau_truc_du_lieu_va_giai_thuat_ban_dep.pdf