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

Báo cáo tốt nghiệp Phong cách lập trình

31 257 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

Thông tin cơ bản

Định dạng
Số trang 31
Dung lượng 496,5 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Trong khi đó, vấn đề này nên được nói ngay từ đầu Thêm vào đó, đề tài là phong cách lập trình nhưng ngay khi bắt đầu bài báocáo đã đề cập luôn đến: hàm, biến, biểu thức…Khiến người đọc,

Trang 1

ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN

ﻫ Ж ﻫ

KHOA TOÁN – CƠ – TIN _

Bài thu hoạch

Tổng kết các bài báo cáo nhóm

Giảng viên: Nguyễn Thị Bích Thủy Sinh viên : Nguyễn Thị Linh

Lớp : K52A3 TT Ứng Dụng

Hà Nôi, Năm 2009

Trang 2

Danh sách các nhóm:

1 Nguyễn Văn Đức Phong cách lập trình

2 Bách-Phượng-Mai Phân tích bài toán theo modul

3 Nghĩa-Hưng-Học Đặc tả hình thức trong phân tich hệ thống

4 Nguyệt-Sính-T.T.Trang Cấu trúc dữ liệu và cách sắp xếp(Dịch )

5 Thơm-T.T.Hiền-Dung Cây nhị phân

6 Nhung-Thủy Thuật toán đồ thị (Dịch sách)

7 Đạt-Hiếu-Đ.Q-Hưng Thuật giải Heuristic và phương pháp tìm

kiếm.

8 P.T.Hiền-Thư-Vân Thuật toán tìm kiếm trên đồ thị

9 Chiến-Hoàng-N.K.Anh Quy hoach động

10 Lê.T.Long-Hiệp Kỹ thuật chia để trị (dịch sách)

13 N.T.Linh-N.Đ.Giang-T.K.Anh Tổng quan kỹ thuật đệ quy

14 Quyền-Phú-Thành Kỹ thuật sắp xếp trong lập trình

15 Cường-L.T.Trang-B.K.Linh Bài toán liệt kê

16 K.Dương-N.TrungLâm-Thắng Thủ thuật sử dụng thư viện đồ họa

17 Hạnh-Đỗ.T.T.Hiền-Lâm Các phương pháp lập trình

18 Nhân-Hoa-Sơn Lập trình hướng đối tượng

19 Tuấn-Thiện-Xuất Kiểm chứng chương trình

20 Lê.N.Duy-T.V.Tài Kiểm chứng chương trình

21 L.V.Hùng-Đ.Long-N.V.Hùng Quan máy học

22 Phạm Thanh Hòa Lập trình điều khiển trên máy CNC

23 Ngọc-N.P.Long-L.Đ.Long Ứng dụng ngắt trong lập trình nhúng

Trang 4

MỤC LỤC 1

Phần 1: Phong cách lập trình 5

Phong cách lập trình (Nguyễn Văn Đức) 5

Phần 2: Các giai đoạn phần mềm 7

1 Giai đoạn phân tích bài toán 7

1.1 Phân tích bài toán theo Modul 7

2 Giai đoạn thiết kế bài toán 8

2.1 Các công cụ thiết kế 8

2.2 Các ngôn ngữ đặc tả 8

2.2.1Đặc tả hình thức trong phân tích hệ thống 8

3 Giai đoạn viết mã lệnh 10

3.1 Tính chất dữ liệu 10

3.1.1 Cấu trúc dữ liệu và cách sắp xếp (Dịch ) 10

3.1.2 Cây nhị phân 11

3.2 Thuật toán 12

3.2.1 Thuật toán đồ thị(dich) 12

3.2.2 Thuật giải Heuristic và phương pháp tìm kiếm 13

3.2.3 Thuật toán tìm kiếm trên đồ thị 14

3.3 Kỹ thuật lập trình 16

3.3.1 Quy hoach động 16

3.3.2 Kỹ thuật chia để trị (dịch sách) 17

3.3.3 Kỹ thuật chia để trị 17

Trang 5

3.3.4 Bảng băm 18

3.3.5 Tổng quan kỹ thuật đệ quy 19

3.3.6 Kỹ thuật sắp xếp trong lập trình 20

3.3.7 Bài toán liệt kê 21

3.3.8 Thủ thuật sử dụng thư viện đồ họa 22

3.4 Phương pháp lập trình 23

3.4.1 Các phương pháp lập trình 23

3.4.2 Lập trình hướng đối tượng 24

4 Kiểm chứng 25

4.1 Kiểm chứng chương trình(nhóm Tài-Duy …) 25

4.2 Kiểm chứng chương trình(nhóm Tuấn …) 25

5 Ứng dụng 26

5.1 Lập trình điều khiển trên máy CNC 26

5.2 Quan máy học 27

5.3 Ứng dụng ngắt trong lập trình nhúng 28

Trang 6

Tổng kết các bài báo cáo

Trước thế kỷ của công nghệ thông tin bùng nổ rộng khắp, nhu cầu sử dung máytính ngày càng tăng lên, đòi hỏi ngày càng nhiều các ứng dụng chương trình Vì vậy, sự ratăng số lương các phần mềm ứng dụng ngày càng nhiều, và thu hút nhiều người làm việctrong lĩnh vực này Nhu cầu học tập cũng tăng lên với nhiều môn học Tuy nhiên, để có

thể lập trình tốt chúng ta không thể nào không học và tìm hiểu về Kỹ Thuật Lập Trình

Trong học kỳ qua, dưới sự nỗ lực học tập và tìm hiểu của bản thân, em và các bạn

đã tìm hiểu được nhiều kỹ thuật để học và chia sẻ cho nhau.Dưới đây là bản tổng kết vềkết quả làm việc của các bạn và sự thu nhận kiến thức của bản thân

Phần 1:Phong cách lập trình

I Bài báo cáo: Phong cách lập trình

NTH: Nguyễn Văn Đức

a Tóm tắt báo cáo:

Bài báo cáo có những nội dung chính sau:

 Tên hàm hay tên biến

•Tên hàm: nêu cách đặt tên và yêu cầu của tên( nhất quán )

•Tên biến: cách đặt tên

 Không chú thích những điều hiển nhiên

 Chú thích cho hàm và dữ liệu toàn cục

 Đừng chú thích những đoạn mã nguồn dở mà hãy viết lại nó

 Đừng phủ nhận mã nguồn

 Rõ ràng, không gây nhầm lẫn

 Vì sao phải lo lắng về phong cách lập trình?

• Mã nguồn chương trình được viết tốt sẽ dễ đọc và dễ hiểu hơn, hầu như lỗi

ít hơn, và giúp chương trình có kích thước nhỏ hơn so với mã nguồn đượcchắp vá cẩu thả và không hề trau chuốt

•Quan điểm cơ bản tạo phong cách lập trình tốt là thói quen

b Nhận xét

Đọc bài báo cáo tôi có nhân xét sau:

Trang 7

 Đề tài: Phong cách lập trình luôn đi kèm với phong cách cá nhân, luôn thể hiện

“cái tôi” của người lập trình Tuy nhiên, không phải vì thế mà nó không cónhững quy tắc chung mà hơn thế, nhờ những quy tắc đó mã nguồn sẽ sángsủa, dễ hiểu, ít lỗi và dễ sửa chữa vì thế luôn là một vấn đề cần được chú ý.Dẫu vậy, rất ít người, đặc biệt là những người mới bước vào nghề lập trình để

ý tới Vì thế, theo tôi, đề tài này rất lý thú, đáng lưu ý; bài báo cáo này có thểgiúp bạn có một phong cách lập trình chuyên nghiệp, nhưng cũng mang đậmphong cách cá nhân

VD: Nhìn từ mục lục ta thấy: sau khi người viết nói rất nhiêu về quy tắc

viết: hàm, biến, biểu thức v.v.v cuối cùng đề cập đến vì sao phải lo lắng về phong cách lập trình Trong khi đó, vấn đề này nên được nói ngay từ đầu

Thêm vào đó, đề tài là phong cách lập trình nhưng ngay khi bắt đầu bài báocáo đã đề cập luôn đến: hàm, biến, biểu thức…Khiến người đọc, đặc biệt làngười mới học, có thể thắc mắc không hiểu sự liên quan gì của những vấn đềnày tới phong cách lập trình

• Trong nhiều phần, nội dung trong từng tựa đề không thấy được sự liên quan

rõ ràng hay làm sáng tỏ tựa đề, những tiểu ý để lẫn lộn với ý lớn khiến ngườiđọc không hiểu phần này định làm sáng tỏ ý lớn nào, hoặc hai phần của một ýphải viết liền thì chia ra như hai ý riêng biệt

VD: Trong phần, các số tối nghĩa có chia làm ba ý lớn

 Đặt tên cho các số tối nghĩa

 Dùng các hằng số dạng ký tự, không dùng dạng số

nguyên

 Dùng chính ngôn ngữ đó để tính toán kích thước của

đối tượng

Trong khi đó, hai nội dung cuối cùng làm sáng tỏ cách hạn chế dùng số tối

nghĩa Vì thế nên cho hai ý này thành ý nhỏ trong ý lớn: các quy tắc hạn chế dùng số tối nghĩa.

 Bổ sung

 Bài báo cáo nên được trình bày và đề cập đến nội dung sau:

a) Vì sao phải lo lắng về phong cách lập trình:

 Mục đích của phong cách lập trình

 Lợi ích của việc áp dụng các quy tắc lập trình

b) Các yếu tố của phong cách lập trình tốt:

oTrình bày mã nguồn:

Trang 8

 Quy tắc lùi đầu dòng

 Quy tắc viết code theo hàng dọc

 Quy tắc xuống dòng, khoảng trống

 Quy tắc dùng tab

 Quy tắc chú thíchoQuy tắc đặt tên, logic và các kỹ thuật cao

 Cách nhận biết kiểu và tên hàm người lập trình định nghĩa:hàm, thủ tục, tên biến, biểu thức và phát biểu, các số tối nghĩa,

 Cách dung giá trị bolean trong câu trúc

 Cách viết câu lênh so sánh tối ưu

 Cách viết cấu trúc vòng lặp tối ưuoPhong cách lập trình nên đảm bảo: Tính nhât quán.v.v

 Trong mỗi phần đề cập tới nên nêu ra: kháiniệm, quy tắc

VD: trong Biểu thức và phát biểu:

 Khái niệm về biểu thức và phát biểu

 Cách trình bày và quy tắc thể hiện biểu thức…

<Nguồn Wikimedia>

Phần 2:Các giai đoạn phần mềm

I Giai đoạn phân tích bài toán

I.1 Bài báo cáo: Phân tích bài toán theo modul

NTH:Nguyễn Quang Bách-Dương Thị Phương Mai-Nguyễn Thị Ánh Phượng

I.1.1.Tóm tắt:nội dung chính:

Trong thực tế, để giải quyết những bài toán lớn, chương trình phức tạp, do đó kỹthuật phân tích bài toán theo module ra đời

 Khái niệm: kĩ thuật thiết kế phần mềm chia chương trình thành những thành phần riêng biệt ( những module) được nối vào chương trình chính thông qua các giao diện

 Triển khai bài toán theo module:

Phân tích bài toán xác định các module

Xác định input và ouput cho từng module

Tạo mối liên hệ giữa các module

Liên kết tất cả các module với chương trình chính :

 Đánh giá kỹ thuật

o Ưu điểm

• Hạn chế và dễ phát hiện lỗi

• Giữ được điều khiển trên từng hàm

• Chương trình có cấu trúc dễ viết, dễ bảo dưỡng

Trang 9

o Nhược điểm

• Dễ làm mất tính thống nhất trong nhóm

• Mất nhiều thời gian để sửa chữa chuong trình

o Kỹ thuật liên quan: Chia để trị và lập trình hướng đối tượng(OOP)

I.1.2 Nhận xét:

Về đề tài : Đây là một đề tài khá quen thuộc,

tương đối gần gũi Nội dung khá cơ bản, không có gì nổi bật, khác lạ

o Nổi bật được các bước triển khai bài toán theo modul

o Nêu được ưu, nhược điểm của kỹ thuật

o Trình bày khá thoáng, dễ đọc, ví dụ đơn giản luôn lấy ra ngay khi phân tichmột vấn đề giúp nắm bắt nội dung

o Đôi chỗ trình bày rất lủng củng, lộn xôn, tách và ghép ý lung tung, khônglàm nổi bật được các ý chính, khó khăn trong việc thu nhận thông tin : VD phầnnhược điểm

o Việc đề cập các kỹ thuật liên quan(cụ thể là KT OOP) nhưng chưa cho thấy

sự liên quan của KT đó với việc phân tích bài toán theo modul Mặt khácOOPmột kỹ thuật lập trình hoàn toàn độc lập so với kỹ thuật phân tích bài toán theoModule

o Chưa đưa ra được kỹ thuật sử dụng các biến riên, biến cục, để tạo sự thốngnhất trong các modul Hay phạm vi áp dụng, ngôn ngữ dùng…

o Chưa đưa ra được cách sử dụng kỹ thuật modul trong một project lớn

o Cần nói rõ hơn về các kỹ thuật liên quan

o Bổ sung thêm về vấn đề sử dụng hàm biến , cách làm việc với nhiều Modultrên nhiều tệp rời rạc của một project lớn

o Nói thêm về vấn đề phạm vi sử dụng Lập trình Modul: ngôn ngữ chấp nhậnmột cách chính thức khái niệm Modul gồm có: IBM/360 Assembler, COBOL,

RPG và PL/1, Ada, D, F, Fortran, Haskell, Pascal(vài phiên bản ML, Modula-2,

Erlang, Perl, Python and Ruby Hệ thống IBM (aka AS/400 and iSeries) cũng

sử dụng Modules trong RPG, COBOL và CL, khi lập trình trong môi trườngILE

II Giai đoạn thiết kế bài toán

II.1 Bài báo cáo: Ngôn ngữ đặc tả UML (Unifield Modeling Language )

NTH: Lê Văn Hưng-Nguyễn Tiến Nghĩa-Vữ Thái Học

II.1.1.Tóm tắt: Trong bài báo cáo này ta nắm được

a. Sự ra đời của ngôn ngữ UML :

b. Khái niệm UML

UML là một ngôn ngữ mô hình hoá thống nhất có phần chính bao gồm những

ký hiệu hình học, được các phương pháp hướng đối tượng sử dụng để thể hiện và miêu tả các thiết kế của một hệ thống Nó là một ngôn ngữ để đặc tả, trực quan hoá,

Trang 10

xây dựng và làm sưu liệu cho nhiều khía cạnh khác nhau của một hệ thống có nồng độ phần mềm cao UML có thể được sử dụng làm công cụ giao tiếp giữa người dùng, nhà phân tích, nhà thiết kế và nhà phát triển phần mềm.

Ngôn ngữ mô hình hoá bao gồm các ký hiệu và một tập các quy tắc:Syntactic (Cúpháp) Semantic (Ngữ nghĩa) và Pragmatic,

c. Các thành phần chủ yếu của ngôn ngữ UML

Hướng nhìn (view): Khái niệm và các loại hướng nhìn (Use case, logic )

Biểu đồ (diagram): Khái niệm và các loại biểu đồ (Use case, lớp…)

Phần tử mô hình hóa (model element):

Cơ chế chung:

d. Khả năng mở Rộng UML và sự phát triển công cụ trợ giúp trong UML

e. Ứng dụng vào quá trình xây dựng phần mềm(4 giai đoạn và thử nghiệm)

II.1.2 Nhận xét:

Đề tài :

Mặc dù UML đã xuất hiện từ lâu với những ứng dụng hiệu quả của nó đến nghànhcông nghệ phần mềm, nhưng không phải ai cũng biết đến, đặc biệt là các bạn sinhviên, Vì thế, đây là một đề tài khá mới mẻ, lý thú, có sự hấp dẫn cao

Ưu điêm của bài báo cáo:

•Bài báo cáo được viết khá toàn diện, cơ bản và chi tiết về UML, giúp người đọc

có sự hiểu biết khá đầy đủ về UML

•Trình bày tương đối rõ ràng, mạch lạc, khoa học Lý thuyết đi kèm hình ảnhminh họa giúp người đọc dễ nắm bắt nội dung

•Ví dụ đưa ra và cách phân tích ví dụ khá tôt, phản ánh và củng cố được nội dung

Bổ sung: bài báo cáo nên cần được bổ sung thêm để có kiến thức hoàn chỉnh

• Trong thành phần chủ yếu của ngôn ngữ UML, phần biểu đồ: có thể nói UML(2.0) có 13 kiểu đồ thị với ba loại khác nhau:

Biểu đồ tĩnh hay cấu trúc (Structure diagrams): gồm biểu đồ lớp; đối tượng;

thành phần; biểu đồ cấu trúc hỗn hợp; biểu đồ khai triển; biểu đồ gói

Biểu đồ động(Behavior diagrams): Biểu đồ hoạt động; Biểu đồ trạng thái;

Biểu đồ Use case

Biểu đồ tương tác(Interaction diagrams): Biểu đồ giao tiếp; Biểu đồ miêu tả

tương tác; Biểu đồ trình tự; Biểu đồ định giờ

• Bổ sung thêm phần nhược điểm hay sự thiếu xót của UML:

 Khả năng hình dung, tưởng tượng yếu (Weak visualization)

 Khó khăn trong việc học và tiếp thu (Problems in learning and adopting)

 Chỉ có duy nhất một mã đồng bộ với mã đó (Only the code is in sync withthe code)

Trang 11

 Tích trữ lại sự mở rộng và sự mở rộng kết hợp ( mà không dùng đến)(Cumulative Impedance/Impedance Mismatching)

 Có sự mâu thuân về mặt thẩm mỹ (Aesthetically Inconsistent)

 Cố gắng đem đến tất cả mọi thứ cho tất cả các nhà lập trình

(Tries to be all things to all programmers)

•Bổ sung thêm phần ưu điểm UML:

 Cung cấp cho người sử dụng một ngôn ngữ mô hình hoá trực quan có sẵn

•Những điểm ngoài phạm vi UML

 UML không là một phương thức

 UML không xác định/hướng vào (address) toàn bộ quá trình

 UML không quy định cách tiếp cận vào việc xác định các lớp,các phươngthức và phân tích các mô hình

 UML không bao gồm bất kỳ quy tắc thiết kế hay cách thức giải quyết vấn

đề nào

<Nguồn Wikimedia>

III Giai đoạn viết mã lệnh

III.1 Bài báo cáo: Cấu trúc dữ liệu và cách sắp xếp (Dịch )

NTH : Nguyễn Thị Nguyệt, Bùi Thị Sính, Trần Thị Thu Trang

II.1.1 Tóm tắt: Bài dịch này nói về nội dung chính sau

a. Cấu trúc dữ liệu và cách phân loại

Những điểm mấu chốt trong chương :

•Xây dựng các thuật toán qua các cấu trúc dữ liệu(CTDL) để có một cấu trúccân đối và một sự thực thi tốt

•Lựa chọn cần phải kỹ càng, tránh nhầm CTDL cho công việc

•Sự sắp xếp, phân loại nằm ở trung tâm của nhiều thuật toán khác nhau

•Sự sắp xếp có thể được minh họa chủ yếu bằng các mô hình thiết kế thuật toán

Kĩ thuật cấu trúc dữ liệu, chia để trị, thuật toán ngẫu nhiên.v,v,v

Các loại dữ liệu chủ yếu

Containers: Khái niệm, chức năng, thao tác căn bản và các loại phổ biến

của Containers

Dictionary: Khái niệm, chức năng, thao tác căn bản của Dictionary

Binary Search Trees (cây tìm kiếm nhị phân( BST)): Cấu trúc BTS và

thuật toán dung đệ quy tìm kiếm trong cây nhị, và nhiệm vụ của BST (hỗ trợ tất

cả các thao tác Dictionary nhanh chóng)

Priority Queues ( Hàng đợi ưu tiên): Ưu điểm, và nhiệm vụ của Priority

Queues:chèn, tìm hoặc xóa giá tri max, min

Cấu trúc dữ liệu chuyên sâu (specializer data structeres)

Trang 12

Cấu trúc dữ liệu tập hợp ( Set data structures)

Cấu trúc dữ liệu kiểu hình học(Geometric data structures)

trúc dữ liệu đồ họa( Graph data structures)

Cấu trúc dữ liệu kiểu xâu (Strings data structures)

b Cách sắp xếp và phân loại:

Lý do cần sắp xếp(4 lý do)

Ứng dụng của sắp xếp: tìm kiếm, cặp gần nhau nhất, phần tử đơn nhất sựphân phối thường xuyên, sự lựa chọn, những vỏ lồi

Phương pháp sắp xếp: Cấu trúc dữ liệu, Chèn tăng, chia để trị, Kĩ thuật

BUCKETING, Thuật toán ngẫu nhiên

II.1.2 Nhận xét

Ưu điểm:

•Bản dịch tương đối sát nghĩa, nêu được nội dung của phần dịch, biết chọnnghĩa từ sao để đảm bảo đúng thuật ngữ khoa học Có thể nhận thấy ngườidịch có am hiểu hoặc cố gắng tìm tòi các vấn đề liên quan đến nội dung đểdịch chuẩn

•Trình bày bản dich và bài báo cáo tương đối tốt, dễ đọc, dễ hiểu nội dungphần dịch

Có thể nói đây là bản dịch tốt nhất trong tât cả các nhóm tham gia dich bài

III.2 Bài báo cáo: Cây nhị phân

NTH: Trần Thị Thơm- Trịnh Thị Hiền- Đỗ Thùy Dung

II.2.1 Tóm tắt:

a Cây

Định nghĩa: Cây là cấu trúc dữ liệu có thứ bậc, lưu trữ 1 tập các phần tử, mỗi

phần tử có 1 giá trị và trừ gốc, nó được trỏ và có thể trỏ đến 1 hay nhiều phần tửkhác

Một số khái niệm cơ bản về cây: bậc của một node,của một cây,node gốc,node

lá, node nhánh, mức, chiều dài, chiều cao của cây

b Cây nhị phân( Binary Tree-BT)

Định nghĩa: một dạng của cấu trúc cây mà mọi node trên cây chỉ có tối đa 2

node con

Một số định nghĩa khác về cây nhị phân: theo DS liên kết, DS tuyến tính Đặc tính quan trọng của cây nhị phân: hai cây nhị phân tuơng tự và cây nhị

phân tương đương

Một số dạng đặc biệt của cây nhị phân:

Biểu diễn cây nhị phân: theo DS liên kết, DS tuyến tính

Trang 13

Các thao tác trên cây nhị phân: Cấp phát bộ nhớ,giải phóng node, tạo node,xoá

node, khởi tạo cây nhị phân, kiểm tra tính chất cây nhị phân

c. Phép duyệt cây nhị phân

Là phương pháp thăm các node có hệ thống chỉ một lần Có 3 phép duyệt câynhị phân đó là:

Duyệt theo thứ tự trước ( Preorder Traversal);

Dưyệt theo thứ tự giữa ( Inorder Traversal);

Duyệt theo thứ tự sau ( Postorder Traversal);

•Trình bày thiếu khoa học, lộn xộn: phân chia đề mục không rõ ràng

• Trong mốt số đề mục chưa nói tới nội dung cần đề cập => gây cảm giácdường như đề mục và nội dung không liên quan đến nhau

Đặc tính quan trọng của cây nhị phân: nêu khái niệm về hai cây nhị phân

tuơng tự và cây nhị phân tương đương Nội dung và đề mục dường như khôngliên quan

 Phần ưu, nhược điểm, không rõ ràng, chính xác, nói đúng hơn là nội dungphần này chưa đi đến ý cần nói, mới chỉ phần rìa của nó

•Trong phần ứng dụng của cây nhị phân, nêu lên cây mã tiền tố ,cây biểu thức

là chưa chính xác, vì hai loại cây này là một loại của cây nhị phân, mà không

đề cập gi đến ứng dụng của cây nhị phân cả

Bổ sung

 Bổ sung thêm phần mục lục, sặp xếp lại các đề mục:

o Phân định nghĩ và một số định nghĩa khác về cây nhị phânnên để gần nhau chứ không để cách quãng bởi các đề mục khác

o Trong các thao tác trên cây nhị phân: nên viết như sau chứkhông nên để chúng nằm ngang hang nhau(lấy ví dụ phần xoá)

1) Xóa node:

a Xóa node gốc

b Xóa node con bên trái

c Xóa node con bên phải

 Có thể bổ sung thêm các loại cây nhị phân

o Cây mã Huffman

o Cây biêu thức

Trang 14

o Cây mã tiền tố.v.v.

 Nên viết lai và bổ sung về ưu và nhược điểm của cây nhị phân

 Nên viết lại và bổ sung thêm ứng dụng của cây nhị phân

III.3 Bài báo cáo: Thuật toán đồ thị

NTH: Trần Thị Thanh Nhung-Nguyễn Thu Thủy

II.3.1 Tóm tắt:

Nội dung cần nắm được:

 Đồ thị có thể mô hình hóa các cấu trúc, mối quan hệ đa dang và rộng rãi

 Được thiết lập một cách đúng đắn, hầu hết các ứng dụng của đồ thị có thể giảmbớt thuộc tính chuẩn và dùng các thuật toán phổ biến,

 Tìm kiếm theo chiều ngang và chiều sâu cung cấp cho thiết bị máy duyệt cácđỉnh và cạnh của đồ thị Chứng tỏ giải thuật đồ thị hiệu quả và đơn giản

Đồ thị bạn bè( Friendship graph)

Thông qua bài toán Friendship graph, nói đến các loại đồ thị(vô hướng, cóhướng, trọng sô) , mảng liên thông, thành phần liên thông, bậc của một đỉnh, đồ thịcon, chu trinh, chu trinh đơn, chu trinh halminton

Cấu trúc dữ liệu cho đồ thị: dùng danh sách kề và ma trận kề So sánh 2 cấu

trúc này với nhau

Duyệt đồ thị: Duyêt theo chiều sâu và chiều rộng:

Các bài toán đồ thị điển hình: cây bao trùm nhỏ nhất( TT Prim và kruskas và

đường đi ngắn nhất( TT Dijksas- Flow)

Trình bày báo cáo chưa đạt phong cách văn bản

Trang 15

Bổ sung

Một lời khuyên dành cho nhóm là nên tìm thêm tài liệu thông tin để hiêu nộidung phân dich, trau dồi kiến thức để lựa chọn nghĩa từ và biêt loại từ để dịch chochuẩn xác

III.4 Bài báo cáo: Thuật giải Heuristic và phương pháp tìm kiếm

NTH: Đậu Quang Hưng-Đỗ Tiến Đạt-Nguyễn Hữu Hiếu

III.4.1 Tóm tắt

Các nguyên lý cơ bản của giải thuật Heuristic:

oKhái niệm thuật giải Heuritic: một sự mở rộng khái niệm thuật toán

oXây dựng thuật giải Heuristic cần dựa vào các nguyên lý cơ bản: nguyên lý vét cạnthông minh, nguyên lý tham lam Greedy, hàm Heuristic, nguyên lý thứ tự

Các phương pháp tìm kiếm Heuristic.

o Cấu trúc chung của bài toán tìm kiếm: tập hợp trạng thái-nút đồ thị

o Tìm kiếm chiều rộng (BFS)

o Tìm kiếm chiều sâu (DFS)

o Tìm kiếm leo đồi:

Hàm Heuristic:là một hàm xác định ước lượng chi phí để biến đổi từ trạng thái này sang trạng thái khác

Tìm kiếm leo đồi đơn giản:một kiểu DFS nhưng không sử dụng kĩ thuật quay lui mà là một hàm Heuristic để tính toán lựa chọn trạng thái tiếp theo

Tư Tưởng: chọn con đường tốt hơn đầu tiên thấy để đi

Leo đồi dốc đứng:chọn con đường tốt nhất trong tất cả con đường tốt hơn để đi

Nhược điểm của tìm kiếm leo đồi:có thể không tìm ra kết quả do không gian tìm kiếm: có điểm cực đại địa phương hoặc có đoạn đơn điệu ngang

o Tìm kiếm ưu tiên tối ưu (BFS): nêu lên tư tưởng và các cài đặt BFS

Thuật giải AT: là phiên bản của BFS với độ tốt của trạng thái là tổng chiều dài

đã đi từ trạng thái bắt đầu đến trạng thái hiện tại; nêu lên cách cài đặt AT

Thuật giải AKT:mở rộng của TG AT, bằng việc thêm hàm ước lượng

Thuật giải A*:cải tiến của thuật giải AKT dùng để áp dụng cho đồ thị.

•Chưa nêu được nhược điểm của thuật giải Heuristic

•Chưa nêu được ứng dụng của thuật giải Heuristic trong thực tiễn

•Chưa so sánh giữa các phương pháp tìm kiếm

Bổ sung

Ngày đăng: 19/12/2017, 22:35

🧩 Sản phẩm bạn có thể quan tâm

w