Show - Bài toán là một việc nào đó ta muốn máy tính thực hiện. Ví dụ: Giải phương trìnhbậc 2, quản lý nhân viên… - Các bài toán được cấu tạo bởi 2 thành phần cơ bản: Input: các thông tin đã có. Output: Các thông tin cần tìm từ Output.2. Khái niệm thuật toán- Thuật toán để giải một bài toán là một dãy hữu hạn các thao tác được sắp xếp theo 1 trình tự xác định sao cho sau khi thực hiện dãy thao tác ấy, từ Input của bài toán, ta nhận ra Output cần tìm. - Ví dụ: Tìm giá trị lớn nhất của 1 dãy số nguyên. => Ta có 3 bước thực hiện như sau: *Xác định BT - Input: Số nguyên dương N và dãy N số nguyên a1, a2, …, aN. Bạn đang xem: Một số ví dụ về thuật toán - Output: Giá trị lớn nhất Max của dãy số. *Ý tưởng - Khởi tạo giá trị Max = a1. - Lần lượt vớii từ 2 đến Nso sánh aivới Max, nếu ai>Max thì Max= ai. *Thuật toán: Cách liệt kê: B1: Nhập N và dãy a1,...,aN;B2: Max\(\leftarrow\)a1, i\(\leftarrow\)2;B3: nếu i>N thì đưa giá trị Max rồi kết thúc;B4: Nếu ai>Max thì Max \(\leftarrow\)ai;B5: i \(\leftarrow\)i+1 rồi quay lại bước 3;Cách lập sơ đồ khối: - Thuật toán còn được diễn tả bằng sơ đồ khối. Xem thêm: Những Pha Đi Bóng Của Ronaldo Béo Thần Sầu Như Thế Nào? - Quy định: Hình ô van: các thao tác nhập, xuất dữ liệu.Hình thoi: Thao tác so sánh.Hình chữ nhật: Các phép toán.Mũi tên: trình tự thực hiện các thao tác.Ví dụ: Mô phỏng việc thực hiện thuật toán với N=8 và dãy số: 5, 1, 4, 7, 6, 3, 15, 11
=> Các tính chất của thuật toán: Tính dừng: Thuật toán phải kết thúc sau một số hữu hạn lần thực hiện các thao tác. Tính xác định: Sau một số lần thực hiện thao tác, hoặc là kết thúc hoặc xác định để thực hiện bước tiếp theo. Tính đúng đắn: Sau khi thuật toán kết thúc, ta phải nhận được Output cần tìm.3. Một số ví dụ về thuật toánVí dụ 1: Kiểm tra tính nguyên tố của một số nguyên dương. - Xác định bài toán: Input: Số nguyên dương N.Output: “N là số nguyên tố” hoặc “N không là số nguyên tố”.- Ý tưởng: Ta nhớ lại định nghĩa: Một số nguyên dương N là số nguyên tố nếu nó có đúng 2 ước số khác nhau là 1 và chính nó. Do đó ta có: Nếu N = 1 thì N không là nguyên tố. Nếu 1 Nếu N \(\ge\) 4 và không có ước số trong phạm vi từ 2 đến phần nguyên căn bậc 2 của N thì N là số nguyên tố.- Thuật toán: B1: Nhập số nguyên dương N. B2: Nếu N = 1 thì thông báo N không là số nguyên tố rồi kết thúc. B3: Nếu N B4: i \(\leftarrow\) 2B5: Nếu N><\(\sqrt{n}\)>(*) thì thông báo N là số nguyên tố rồi kết thúc. B6: Nếu N chia hết choi thì thông báo N là số không nguyên tố rồi kết thúc. B7: i \(\leftarrow\) i + 1 rồi quay lại bước 5.Ví dụ 2: Bài toán sắp xếp Cho dãy A gồm N số nguyên a1, a2, a3, …,aN. Cần sắp xếp các số hạng để dãy A trở thành dãy không giảm (tức là số hạng trước không lớn hơn số hạng sau) - Xác định bài toán: Input: Dãy A gồm N số nguyênOutput: Dãy A được sắp xếp thành dãy không giảm.Thuật toán sắp xếp bằng tráo đổi(Exchange Sort) - Ý tưởng: Với 2 số liền kề, nếu số trước lớn hơn số sau ta đổi chổ cho nhau. Việc đó lặp lai, khi không còn sự đổi chổ nào nữa. - Thuật toán Cách liệt kê: B1: Nhập vào n và dãy số nguyên a1, . . . ,aN;B2: M \(\leftarrow\)N;B3: Nếu MB4. M\(\leftarrow\)M – 1; i\(\leftarrow\)0;B5: i \(\leftarrow\)i + 1;B6: Nếu i > M thì quay lại bước 3;B7. Nếu ai> ai+1thì tráo đổi cho nhau;B8: Quay lại bước 5;Ví dụ 3: Bài toán tìm kiếm Cho dãy A gồm N số nguyên khác nhau: a1…aN.và một số nguyên k. Cần biết có hay không chỉ số i mà ai=k. Nếu có hãy cho biết chỉ số đó. Thuật toán tìm kiếm tuần tự: - Xác định bài toán Input: dãy A gồm N số nguyên khác nhau: a1…aNvà số nguyên k.Output: chỉ số i mà ai=k hoặc thông báo không có số hạng nào của dãy A có giá trị là k.- Ý tưởng: lần lượt từ số hạng thứ nhất, ta so sánh giá trị số hạng đang xét với khoá cho đến khi hoặc gặp một số hạng bằng khoá hoặc dãy đã được xét hết và không có giá trị nào bằng khoá. Trong trường hợp thứ 2 dãy A không có số hạng nào bằng khoá... - Thuật toán Liệt kê: B1: Nhập vào N, các số hạng a1, . . . ,aNvà khóa k;B2: i\(\leftarrow\)1;B3: Nếu ai=k thì thông báo chỉ số i rồi kết thúc;B4. i\(\leftarrow\)i+1;B5: Nếu i>N thì thông báo dãy A không có số hạng nào có giá trị bằng k rồi kết thúc;B6: Quay lại bước 3;Dãy A có N = 7 khóa k = 10 Tìm chỉ số i để ai = k. Ghi chú: k = 10 → i = 6 Trong thuật toán trên, i là biến chỉ số và nhận giá trị nguyên lần lượt từ 1 đến N + 1
Trong cuộc sống và trong công việc hằng ngày, chúng ta đều gặp những vấn đề cần phải đưa ra hướng giải quyết. Ngay từ lúc còn ngồi trong ghế nhà trường, ta đã được luyện tập giải quyết các vấn đề qua môn toán học. Vậy hôm nay các bạn hãy cùng Wikicachlam tìm hiểu xem bài toán và thuật toán là gì nhé. Khái niệm bài toán và thuật toán qua ví dụ cụ thểTìm hiểu khái niệm bài toánBài toán trong tin học được hiểu là một việc gì đó mà ta muốn máy tính thực hiện nhằm cho ra kết quả. Ví dụ như là tính diện tích hình chữ nhật, tìm ước chung lớn nhất của hai số nguyên dương, giải phương trình bậc nhất, quản lý nhân sự, quản lý tiền lương của nhân viên… Muốn giải một bài toán nào đó trên máy tính, trước tiên ta cần xác định được hai yếu tố cơ bản:
Hay ta có thể hiểu một cách đơn giản những thông tin mà chúng ta đã biết thì gọi là input, còn những thông tin chúng ta cần tìm là output. Ví dụ 1: Biết chiều rộng và chiều dài của hình chữ nhật. Tính diện tích hình chữ nhật
Ví dụ 2: Giải phương trình bậc nhất ax+b = 0
Ví dụ 3: Tìm ước chung lớn nhất của hai số nguyên dương
Ví dụ 4: Xếp loại kết quả học tập của học sinh
Như vậy, khi muốn giải quết một bài toán thì điều đầu tiên chúng ta cần phải xác định được đầu vào (input) và đầu ra (output) của bài toán. Ta gọi chung việc xác định bài toán là xác định input và xác định output. Tìm hiểu khái niệm và tính chất của thuật toánMột câu hỏi được đặt ra là làm sao khi ta đưa thông tin vào máy tính, ta có thể xác định được output của bài toán. Việc chỉ ra tường minh một cách tìm output của bài toán được gọi là thuật toán. Vậy thuật toán là gì chúng ta cùng nhau tìm hiểu khái niệm sau: Thuật toán (algorithm) để giải một bài toán là một dãy hứu hạn các thao tác được sắp xếp theo một trình tự xác định sao cho sau khi thực hiện dãy thao tác đó, từ Input của bài toán, ta nhận được Output cần tìm. Từ định nghĩa ở trên, với thuật toán ta cần quan tâm đếm 3 điểm chính sau: + Dãy hữu hạn các thao tác + Sắp xếp có thứ tự +Từ input cho ra output Để trình bày thuật toán, ta sẽ có nhiều cách khác nhau như: Dùng ngôn ngữ tự nhiên, mã giải, sơ đồ khối, ngôn ngữ lập trình, các bảng điều khiển. Các cách viết thuật toán: Sau đây chúng tôi sẽ trình bày cho các bạn 2 cách biểu diễn thuật toán gồm có các cách như sau: Cách 1: Dùng phương pháp liệt kê Ta sẽ liệt kê ra các thao tác cần tiến hành một cách tuần tự Xác định bài toán
Trình bày thuật toán Bước 1: Nhập hệ số a, b, c (a khác 0) Bước 2: Tính ∆ = b2 – 4ac Bước 3: Nếu ∆ < 0 thì kết luận phương trình vô nghiệm rồi kết thúc Bước 4: Nếu ∆ = 0 thì phương trình có nghiệm kép x1 = x2 = rồi kết thúc thuật toán, nếu khác 0 thì chuyển sao bước tiếp theo Bước 5: Nếu ∆ > 0 thì phương trình có 2 nghiệm là x1 = ; x2= rồi kết thúc Ví dụ 2: Thuật toán tìm số lớn nhất trong dãy Xác định bài toán:
Ý tưởng của thuật toán:
Thuật toán được mô tả như như sau (mô tả liệt kê)
Quy ước vẽ hình: Thế hiện thao tác nhập, xuất dữ liệu: hình ô van Thể hiện thao tác so sánh: hình thoi Thể hiện các phép toán: hình chữ nhật Quy định trình tự các thao tác thực hiện: các mũi tên Các tính chất của thuật toán:
Xem thêm: Các công thức toán học 12 Qua bài viết này, các bạn đã hiểu được thế nào là bài toán và thuật toán, không có gì quá khó hiểu phải không nào. Các bạn hãy đọc kĩ các ví dụ để có thể dễ hiểu hơn, cảm ơn các bạn đã theo dõi bài viết của chúng tôi, nếu có thắc mắc các bạn hãy để lại comment, chúng tôi sẽ giúp bạn giải đáp nhé. |