Danh mục

CÁC PHƯỢNG PHÁP BIỂU DIỄN THUẬT TOÁN

Số trang: 4      Loại file: docx      Dung lượng: 39.63 KB      Lượt xem: 12      Lượt tải: 0    
tailieu_vip

Xem trước 2 trang đầu tiên của tài liệu này:

Thông tin tài liệu:

Khi chứng minh hoặc giải một bài toán trong toán học, ta thường dùng những ngôn ngữ toán học...
Nội dung trích xuất từ tài liệu:
CÁC PHƯỢNG PHÁP BIỂU DIỄN THUẬT TOÁN CÁC PHƯỢNG PHÁP BIỂU DIỄN THUẬT TOÁN Khi chứng minh hoặc giải một bài toán trong toán học, ta thường dùng những ngôn từ toánhọc như : ta có, điều phải chứng minh, giả thuyết, ... và sử dụng những phép suy luậntoán học như phép suy ra, tương đương, ...Thuật toán là một phương pháp thể hiện lời giảibài toán nên cũng phải tuân theo một số quy tắc nhất định. Ðể có thể truyền đạt thuật toáncho người khác hay chuyển thuật toán thành chương trình máy tính, ta phải có phương phápbiểu diễn thuật toán. Có 3 phương pháp biểu diễn thuật toán : 1. Dùng ngôn ngữ tự nhiên. 2. Dùng lưu đồ-sơ đồ khối (flowchart). 3. Dùng mã giả (pseudocode). 2.1. Ngôn ngữ tự nhiên Trong cách biểu diễn thuật toán theo ngôn ngữ tự nhiên, người ta sử dụng ngôn ngữ thườngngày để liệt kê các bước của thuật toán (Các ví dụ về thuật toán trong mục 1 của chương sửdụng ngôn ngữ tự nhiên). Phương pháp biểu diễn này không yêu cầu người viết thuật toáncũng như người đọc thuật toán phải nắm các quy tắc. Tuy vậy, cách biểu diễn này thường dàidòng, không thể hiện rõ cấu trúc của thuật toán, đôi lúc gây hiểu lầm hoặc khó hiểu chongười đọc. Gần như không có một quy tắc cố định nào trong việc thể hiện thuật toán bằngngôn ngữ tự nhiên. Tuy vậy, để dễ đọc, ta nên viết các bước con lùi vào bên phải và đánh sốbước theo quy tắc phân cấp như 1, 1.1, 1.1.1, ... Bạn có thể tham khảo lại ba ví dụ trong mục1 của chương để hiểu cách biểu diễn thuật toán theo ngôn ngữ tự nhiên. 2.2. Lưu đồ - sơ đồ khốiLưu đồ hay sơ đồ khối là một công cụ trực quan để diễn đạt các thuật toán. Biểu diễn thuậttoán bằng lưu đồ sẽ giúp người đọc theo dõi được sự phân cấp các trường hợp và quá trìnhxử lý của thuật toán. Phương pháp lưu đồ thường được dùng trong những thuật toán có tínhrắc rối, khó theo dõi được quá 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. Một thao tác làthao tác chọn lựa dựa theo một điều kiện nào đó. Chẳng hạn : thao tác nếu a = b thì thựchiện thao tác B2, ngược lại thực hiện B4 là thao tác chọn lựa. Các thao tác còn lại khôngthuộc loại chọn lựa được xếp vào loại hành động. Chẳng hạn, Chọn một hộp bất kỳ và đểlên dĩa cân còn trống. là một thao tác thuộc loại hành động. 2.2.1. Thao tác chọn lựa (decision)Thao tác chọn lựa được biểu diễn bằng một hình thoi, bên trong chứa biểu thức điều kiện. 2.2.2. Thao tác xử lý (process)Thao tác xử lý được biểu diễn bằng một hình chữ nhật, bên trong chứa nội dung xử lý. 2.2.3.Ðường đi (route)Khi dùng ngôn ngữ tự nhiên, ta mặc định hiểu rằng quá trình thực hiện sẽ lần lượt đi từ bướctrước đến bước sau (trừ khi có yêu cầu nhảy sang bước khác). Trong ngôn ngữ lưu đồ, do thểhiện các bước bằng hình vẽ và có thể đặt các hình vẽ này ở vị trí bất kỳ nên ta phải cóphương pháp để thể hiện trình tự thực hiện các thao tác.Hai bước kế tiếp nhau được nối bằng một cung, trên cung có mũi tên để chỉ hướng thực hiện.Chẳng hạn trong hình dưới, trình tự thực hiện sẽ là B1, B2, B3.Từ thao tác chọn lựa có thể có đến hai hướng đi, một hướng ứng với điều kiện thỏa và mộthướng ứng với điều kiện không thỏa. Do vậy, ta dùng hai cung xuất phát từ các đỉnh hìnhthoi, trên mỗi cung có ký hiệu Ð/Ðúng/Y/Yes để chỉ hướng đi ứng với điều kiện thỏa và kýhiệu S/Sai/N/No để chỉ hướng đi ứng với điều kiện không thỏa. 2.2.4. Ðiểm cuối (terminator)Ðiểm cuối là điểm khởi đầu và kết thúc của thuật toán, được biểu diễn bằng hình ovan, bêntrong có ghi chữ bắt đầu/start/begin hoặc kết thúc/end. Ðiểm cuối chỉ có cung đi ra (điểmkhởi đầu) hoặc cung đi vào (điểm kết thúc). Xem lưu đồ thuật toán giải phương trình bậc haiở trên để thấy cách sử dụng của điểm cuối. 2.2.5. Ðiểm nối (connector)Ðiểm nối được dùng để nối các phần khác nhau của một lưu đồ lại với nhau. Bên trong điểmnối, ta đặt một ký hiệu để biết sự liên hệ giữa các điểm nối. 2.2.6. Ðiểm nối sang trang (off-page connector)Tương tự như điểm nối, nhưng điểm nối sang trang được dùng khi lưu đồ quá lớn, phải vẽtrên nhiều trang. Bên trong điểm nối sang trang ta cũng đặt một ký hiệu để biết được sự liênhệ giữa điểm nối của các trang.Ở trên chỉ là các ký hiệu cơ bản và thường được dùng nhất. Trong thực tế, lưu đồ còn cónhiều ký hiệu khác nhưng thường chỉ dùng trong những lưu đồ lớn và phức tạp. Ðối với cácthuật toán trong cuốn sách này, ta chỉ cần sử dụng các ký hiệu trên là đủ. 2.3. Mã giảTuy sơ đồ khối thể hiện rõ quá trình xử lý và sự phân cấp các trường hợp của thuật toánnhưng lại cồng kềnh. Ðể mô tả một thuật toán nhỏ ta phải dùng một không gian rất lớn. Hơnnữa, lưu đồ chỉ phân biệt hai thao tác là rẽ nhánh (chọn lựa có điều kiện) và xử lý mà trongthực tế, các thuật toán còn có thêm các thao tác lặp (Chúng ta sẽ tìm hiểu về thao tác lặp trongcác bài sau).Khi thể hiện thuật toán bằng mã giả, ta sẽ vay mượn các cú pháp của một ngôn ngữ lập trìnhnào đó để thể hiện thuật toán. Tất nhiên, mọi ngôn ngữ lập trình đều có những thao tác cơbản là xử lý, rẽ nhánh và lặp. Dùng mã giả vừa tận dụng được các khái niệm trong 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 là trong mãgiả ta vẫn dùng một phần ngôn ngữ tự nhiên. Một khi đã vay mượn cú pháp và khái niệm củangôn ngữ lập trình thì chắc chắn mã giả sẽ bị phụ thuộc vào ngôn ngữ lập trình đó. Chính vìlý do này, chúng ta chưa vội tìm hiểu về mã giả trong bài này (vì chúng ta chưa biết gì vềngôn ngữ lập trình!). Sau khi tìm hiểu xong bài về thủ tục - hàm bạn sẽ hiểu mã giả là gì ! Một đoạn mã giả của thuật toán giải phương trình bậc haiif Delta > 0 then beginx1=(-b-sqrt(delta))/(2*a)x2=(-b+sqrt(delta))/(2*a)xuất kết quả : phương trình có hai nghiệm là x1 và x2endelseif delta = 0 thenxuất kết quả : phương trình có nghiệm kép là -b/(2*a)else {trường hợp delta < 0 }xuất kết quả : phương trình vô nghiệm ...

Tài liệu được xem nhiều: