Sæ LAO ĐàNG, TH¯¡NG BINH VÀ Xà HàI ĐÂK LÂK TR¯âNG TRUNG CÂP TR¯âNG S¡N GIÁO TRÌNH MÔN HàC: CÂU TRÚC Dþ LIàU VÀ GIÀI THU¾T NGHÀ: CÔNG NGHà THÔNG TIN TRÌNH ĐÞ: TRUNG CÂP Ban hành kèm theo Quyết định số: 140/QĐ-TCTS ngày 02 tháng 8 năm 2022 của Hiệu trưởng Trường trung cấp Trường Sơn ĐÁk LÁk, năm 2022 TUYÊN Bà BÀN QUYÀN Tài liÉu này thuác lo¿i sách giáo trình nên các nguán thông tin có thÅ đ°āc phép dùng nguyên bÁn hoặc trích dùng cho các măc đích và đào t¿o và tham khÁo. Mãi măc đích khác mang tính lÉch l¿c hoặc sÿ dăng vãi măc đích kinh doanh thiÁu lành m¿nh s¿ bá nghiêm cÃm. ii LâI GIàI THIàU HiÉn nay, t¿i Tr°ång ch°a có giáo trình CÃu trúc dā liÉu & giÁi thuÁt. Đặc biÉt trên thá tr°ång không có tài liÉu hãc tÁp, tham khÁo phù hāp vãi ch°¢ng trình khung Cao đẳng nghÃ, trung cÃp nghà thuác nghà Công nghÉ thông tin (CNTT) trong quá trình đào t¿o nghà hiÉn nay.
Nhóm tác giÁ biên so¿n giáo trình lÁp trình c¢ bÁn nhằm măc đích giúp hãc sinh, sinh viên (HSSV) sÿ dăng giáo trình làm tài liÉu nghiên cću và hãc tÁp mát cách thuÁn tiÉn. Ch°¢ng trình môn hãc đ°āc sÿ dăng đÅ giÁng d¿y cho sinh viên trung cÃp nghà Công nghÉ thông tin (ćng dăng phần mÃm) và làm tài liÉu tham khÁo cho các nghà thuác các ngành nghà kỹ thuÁt. VÁy, rÃt mong đ°āc să góp ý cąa b¿n đãc đÅ tài liÉu này ngày càng đ°āc hoàn thiÉn h¢n, chúng tôi xin chân thành cÁm ¢n. Xin chân thành cÁm ¢n!.
ĐÃk LÃk, ngày 02 tháng 8 nm 2022 Tham gia biên so¿n 1. NguyÇn Nh° C°ång - Chą biên 2. NguyÇn Thá Nhung 3. L°u Thá Th°¢ng iii MĂC LĂC LäI GIâI THIÈU.
III GIÁO TRÌNH MÔN HâC. THIÀT KÀ VÀ PHÂN TÍCH GIÀI THUÀT. TĈ BÀI TOÁN ĐÀN CH¯¡NG TRÌNH:.1 Modul hóa viÉc giÁi quyÁt bài toán: .2 Ph°¢ng pháp tinh chßnh tĉng b°ãc. PHÂN TÍCH GIÀI THUÀT:.
Đà PHĆC T¾P TÍNH TOÁN CĄA GIÀI THUÀT .3 Xác đánh đá phćc t¿p tính toán cąa giÁi thuÁt:. 10 CH¯¡NG II. ĐÈ QUY VÀ GIÀI THUÀT ĐÈ QUY. KHÁI NIÈM ĐÈ QUY:.
GIÀI THUÀT ĐÈ QUY VÀ THĄ TĂC ĐÈ QUY. THIÀT KÀ GIÀI THUÀT ĐÈ QUY.1 Bài toán tính n! .3 Bài toán tháp Hà Nái:. 14 CH¯¡NG III. MÀNG VÀ DANH SÁCH.
CÂU TRÚC L¯U TRĀ CĄA MÀNG .2 Đánh nghĩa kiÅu cÃu trúc .3 Khai báo biÁn cÃu trúc. L¯U TRĀ KÀ TIÀP CĄA DANH SÁCH TUYÀN TÍNH .3 Khai báo biÁn kiÅu tÁp hāp:. 19 4 STACK HAY DANH SÁCH KIÄU NGN XÀP:. Khái niÉm - CÃu trúc dā liÉu: .2 L°u trā Stack bằng mÁng .3 Ćng dăng cąa ngn xÁp (BiÅu thćc hÁu tß - ký pháp Ba Lan) .2 L°u trā Queue bằng mÁng:.
23 CH¯¡NG IV. CÁC KHÁI NIÈM C¡ BÀN:. Đánh nghĩa cây:. Mát sß khái niÉm liên quan.
BiÅu diÇn cây. CÂY NHà PHÂN (BINARY TREE):. BiÅu diÇn cây nhá phân:. PHÉP DUYÈT CÂY NHà PHÂN: .1 DuyÉt theo thć tă tr°ãc NLR (Node – Left – Right) .2 DuyÉt theo thć tă giāa LNR (Left – Node – Right) .3 DuyÉt theo thć tă sau LRN (Left – Right – Node ).
CÂY NHà PHÂN TÌM KIÀM:. Tìm kiÁm trên cây nhá phân tìm kiÁm .Thêm phần tÿ mãi vào cây nhá phân tìm kiÁm.Xóa phần tÿ khåi cây nhá phân tìm kiÁm. Xóa toàn bá cây nhá phân. Đà THà VÀ MàT VÀI CÂU TRÚC PHI TUYÀN.
CÁC KHÁI NIÈM V Đà THà. BIÄU DIÆN Đà THà .1 BiÅu diÇn bằng ma trÁn lân cÁn: .2 BiÅu diÇn bằng danh sách lân cÁn. PHÉP DUYÈT MàT Đà THà .1 Tìm kiÁm theo chiÃu sâu: .2 Tìm kiÁm theo chiÃu ráng: .1 GiÁi thuÁt Kruskal .2 GiÁi thuÁt Prim: .CÂU HäI VÀ BÀI TÀP. 45 CH¯¡NG VI.
SÂP XÀP VÀ TÌM KIÀM. Mát sß ph°¢ng pháp sÃp xÁp .1 Khái quát và tìm kiÁm. CÂU HäI VÀ BÀI TÀP. 55 TÀI LIÈU THAM KHÀO.
57 vi GIÁO TRÌNH MÔN HâC Tên môn hác: CÂU TRÚC DĀ LIÈU VÀ GIÀI THUÀT Mã môn hác: MH10 Vß trí, tính chÃt, ý nghĩa và vai trò của mô đun: - Vá trí: Là môn hãc c¢ sç nghà trong ch°¢ng trình đào t¿o Trung cÃp nghà Công nghÉ thông tin (ćng dăng phần mÃm). Môn hãc này đ°āc hãc sau khßi môn hãc chung và tr°ãc các môn hãc, mô đun chuyên môn ngành, nghÃ. - Tính chÃt: Môn hãc cung cÃp nhāng kiÁn thćc c¢ bÁn và phân tích thiÁt kÁ và đánh giá đá phćc t¿p thuÁt toán và các kiÅu dā liÉu c¢ sç. cách cài đặt và các thao tác Các cÃu trúc dā liÉu trĉu t°āng, cÃu trúc dā liÉu cây nhá phân: cài đặt và các thao tác trên cây nhá phân.
Đáng thåi, cài đặt danh sách liên kÁt - ngn xÁp - hàng đāi, cài đặt cây nhá phân Cài đặt các thuÁt toán sÃp xÁp - tìm kiÁm và các thao tác liên quan. - Ý nghĩa và vai trò cąa mô đun: Mục tiêu của mô đun: - VÁ ki¿n thức: - Trình bày đ°āc mßi quan hÉ giāa cÃu trúc dā liÉu và giÁi thuÁt trong viÉc xây dăng ch°¢ng trình; - Trình bày đ°āc khái niÉm thåi gian thăc hiÉn giÁi thuÁt, đá phćc t¿p tính toán cąa giÁi thuÁt và các yÁu tß liên quan đÁn thåi gian thăc hiÉn giÁi thuÁt; - Trình bày đ°āc các khái niÉm và đÉ quy, giÁi thuÁt đÉ quy và thą tăc đÉ quy; - Trình bày đ°āc các khái niÉm, cÃu trúc l°u trā, phân lo¿i, cách duyÉt cây; - Trình bày đặc điÅm cąa các cách biÅu diÇn đá thá; - Trình bày đ°āc các phép duyÉt đá thá vãi các giÁi thuÁt minh hãa; - Trình bày đ°āc ý t°çng, thuÁt toán chi tiÁt cąa mát sß ph°¢ng pháp sÃp xÁp; - Trình bày đ°āc ý t°çng, thuÁt toán chi tiÁt cąa mát sß ph°¢ng pháp tìm kiÁm; - Trình bày đ°āc các khái niÉm và đÉ quy, giÁi thuÁt đÉ quy và thą tăc đÉ quy. - VÁ kỹ năng: - Xây dăng đ°āc låi giÁi mát bài toán: chia mát bài toán thành nhiÃu bài toán nhå đÅ giÁi sau đó phßi hāp, ghép các bài toán nhå l¿i vãi nhau đÅ đ°a và bài toán ban đầu; - Xác đánh, phân tích đ°āc trên mát sß ví dă và đÉ quy và giÁi thuÁt đÉ quy; - Cài đặt đ°āc mát sß thao tác xÿ lý danh sách liên kÁt, ngn xÁp, hàng đāi trên ngôn ngā C, Pascal; - BiÅu diÇn đ°āc cách biÅu diÇn cây nhá phân - Phân biÉt đ°āc các lo¿i đá thá: Đá thá đánh h°ãng, đá thá không đánh h°ãng, đánh h°ãng liên thông và đánh h°ãng không liên thông; - Phân biÉt đ°āc các phép tìm kiÁm theo chiÃu ráng và tìm kiÁm theo chiÃu sâu vãi các đá thá; 7 - Áp dăng mát sß thuÁt toán sÃp xÁp, tìm kiÁm vào thăc hiÉn viÉc sÃp xÁp và tìm kiÁm các dãy khóa că thÅ; - VÁ năng lực tự chủ và trách nhiám: - Xây dăng đ°āc låi giÁi mát bài toán: chia mát bài toán thành nhiÃu bài toán nhå đÅ giÁi sau đó phßi hāp, ghép các bài toán nhå l¿i vãi nhau đÅ đ°a và bài toán ban đầu; - Xác đánh, phân tích đ°āc trên mát sß ví dă và đÉ quy và giÁi thuÁt đÉ quy; - Cài đặt đ°āc mát sß thao tác xÿ lý danh sách liên kÁt, ngn xÁp, hàng đāi trên ngôn ngā C, Pascal; - BiÅu diÇn đ°āc cách biÅu diÇn cây nhá phân - Phân biÉt đ°āc các lo¿i đá thá: Đá thá đánh h°ãng, đá thá không đánh h°ãng, đánh h°ãng liên thông và đánh h°ãng không liên thông; - Phân biÉt đ°āc các phép tìm kiÁm theo chiÃu ráng và tìm kiÁm theo chiÃu sâu vãi các đá thá; - Áp dăng mát sß thuÁt toán sÃp xÁp, tìm kiÁm vào thăc hiÉn viÉc sÃp xÁp và tìm kiÁm các dãy khóa că thÅ. Nßi dung của môn hác: Thãi gian TT Tên ch°¢ng, mục Tång Lý Thực Kiểm sá thuy¿t hành, tra* 1 Ch°¢ng I.
ThiÁt kÁ và phân tích giÁi thuÁt 7 2 5 2 Ch°¢ng II. ĐÉ quy và giÁi thuÁt đÉ quy 5 2 3 3 Ch°¢ng III. MÁng và danh sách 8 2 5 1 4 Ch°¢ng IV. Cây 17 4 13 Ch°¢ng V.
Đá thá và mát vài cÃu trúc phi 5 8 2 6 tuyÁn 6 Ch°¢ng VI. SÃp xÁp và tìm kiÁm 15 3 11 1 TäNG CÞNG 60 15 43 2 8 CH¯¡NG I. THI¾T K¾ VÀ PHÂN TÍCH GIÀI THU¾T Giái thiáu: Mục tiêu: Học xong chương này, người học có khả năng: - Trình bày đ°āc khái niÉm giÁi thuÁt và ý nghĩa cąa giÁi thuÁt đÅ giÁi mát bài toán bằng ch°¢ng trình; - Trình bày đ°āc quy trình xây dăng låi giÁi mát bài toán; - Trình bày đ°āc khái niÉm thåi gian thăc hiÉn giÁi thuÁt, đá phćc t¿p tính toán cąa giÁi thuÁt và các yÁu tß liên quan đÁn thåi gian thăc hiÉn giÁi thuÁt; - Phân biÉt đ°āc các quy tÃc tổng, quy tÃc nhân khi xác đánh đá phćc t¿p cąa thuÁt toán; - Có thái đá nghiêm túc, cháu khó tìm tòi hãc håi; - Rèn luyÉn tính cẩn thÁn, tß mß, chính xác, sáng t¿o, linh ho¿t trong công viÉc. Từ bài toán đ¿n ch°¢ng trình: Có thÅ nói rằng không có mát ch°¢ng trình máy tính nào mà không có dā liÉu đÅ xÿ lý.
Dā liÉu có thÅ là dā liÉu đ°a vào (input data), dā liÉu trung gian hoặc dā liÉu đ°a ra (output data). Do vÁy, viÉc tổ chćc đÅ l°u trā dā liÉu phăc vă cho ch°¢ng trình có ý nghĩa rÃt quan trãng trong toàn bá hÉ thßng ch°¢ng trình. ViÉc xây dăng cÃu trúc dā liÉu quyÁt đánh rÃt lãn đÁn chÃt l°āng cũng nh° công sćc cąa ng°åi lÁp trình trong viÉc thiÁt kÁ, cài đặt ch°¢ng trình.1 Modul hóa viÉc giÁi quyÁt bài toán: Khái niÉm giÁi thuÁt hay thuÁt giÁi mà nhiÃu khi còn đ°āc gãi là thuÁt toán dùng đÅ chß ph°¢ng pháp hay cách thćc (method) đÅ giÁi quyÁt vần đÃ. GiÁi thuÁt có thÅ đ°āc minh hãa bằng ngôn ngā tă nhiên (natural language), bằng s¢ đá (flow chart) hoặc bằng mã giÁ (pseudo code).
Trong thăc tÁ, giÁi thuÁt th°ång đ°āc minh hãa hay thÅ hiÉn bằng mã giÁ tăa trên mát hay mát sß ngôn ngā lÁp trình nào đó (th°ång là ngôn ngā mà ng°åi lÁp trình chãn đÅ cài đặt thuÁt toán), chẳng h¿n nh° C, Pascal, ? 1.2 Ph°¢ng pháp tinh chßnh tĉng b°ãc Khi đã xác đánh đ°āc cÃu trúc dā liÉu thích hāp, ng°åi lÁp trình s¿ bÃt đầu tiÁn hành xây dăng thuÁt giÁi t°¢ng ćng theo yêu cầu cąa bài toán đặt ra trên c¢ sç cąa cÃu trúc dā liÉu đã đ°āc chãn. ĐÅ giÁi quyÁt mát vÃn đà có thÅ có nhiÃu ph°¢ng pháp, do vÁy să lăa chãn ph°¢ng pháp phù hāp là mát viÉc mà ng°åi lÁp trình phÁi cân nhÃc và tính toán.