Trước khi bắt đầu học về công nghệ thông tin, ai trong chúng ta cũng đều phải biết thuật toán. Vậy thuật toán là gì, chúng ta cùng nhau đi tìm hiểu nhé!
Trước khi bắt đầu học về công nghệ thông tin, ai trong chúng ta cũng đều phải biết thuật toán. Vậy thuật toán là gì, chúng ta cùng nhau đi tìm hiểu nhé!
Trong khoa học điện toán, thuật toán là một chuỗi chỉ thị hướng dẫn cách giải quyết vấn đề từng bước một.
Thông thường, thuật toán được xử lý bởi máy tính. Nhưng con người cũng dùng thuật toán.
Ví dụ, bạn sẽ đếm số lượng người trong phòng bằng cách nào?
Vâng, nếu giống mình, bạn sẽ chỉ vào từng người, từng người một. Một, hai, ba, bốn,… và cứ thế. Đó chính là một thuật toán.
Hãy thử giải quyết theo cách mang tính ngôn ngữ mã hóa hơn nhé, là kiểu ngôn ngữ lập trình tương tự như tiếng Anh thôi!
Cho n=0
Với mỗi người trong phòng
gán n=n+1.
Đoạn mã này có ý nghĩa gì? Vâng, theo ngôn ngữ nói, dòng thứ nhất đặt ra một biến số n và gán giá trị đầu tiên bằng 0. Điều này nghĩa là khi mới bắt đầu thuật toán này, chúng ta sẽ bắt đầu đếm lên từ giá trị bằng 0. Tóm lại lúc bằng đầu đếm thì chúng ta vẫn chưa đếm gì hết.
Đặt tên biến số là n cho thuận tiện mà thôi, chúng ta có thể đặt tên tùy sơ thích: a, b,c,d,e,h,ư,y,…
Tới dòng thứ hai của vòng lặp, là một chuỗi các bước lặp đi lặp lại tuần tự theo các con số. Trong ví dụ này, bước này dùng để đếm số người trong phòng. Dưới dòng 2 là dòng 3, mô tả chính xác chúng ta sẽ bắt đầu tính như thế nào.
Vậy đoạn mã trên nói rằng bắt đầu đếm từ 0, với mỗi người trong phòng, giá trị tăng 1 đơn vị. Thuật toán này đã đúng chưa? Thử xem với 2 người trong phòng thì có đúng không? Khá đơn giản nhỉ.
Nhưng đếm từng người một thì không được nhanh lắm nhỉ? Chắc chắn ta có thể làm tốt hơn. Sao không thử đếm hai người cùng 1 lúc. Thay vì đếm 1,2,3,4,5,6,7,8 và vân vân, sao không đếm 2,4,6,8 và cứ thế? Nghe có vẻ nhanh hơn, chắc là vậy.
Hãy thử thuật toán tối ưu này bằng mã hóa. Với 3 người trong phòng:
Gán n=0
Cứ mỗi cặp trong phòng
Gán n=n+2
Thuật toán trên dính “bug” vì nó vẫn còn lỗi. Ta thử sửa lại thuật tóa một chút nhé:
Gán n=0
Với hai người trong phòng
Gán n=n+2
Nếu còn 1 người lẻ đôi
Gán n=n+1
Để giải bài toán này, ta có dòng 4 là dòng điều kiện, tức là phân nhánh. Nó chỉ xử lý nếu có một người còn lẻ đôi. Vật nên, nếu là 1 hoặc 3 hoặc bất kỳ số lẻ nào trong phòng, thuật toán này sẽ đếm.
Ta có thể làm tốt hơn không? Vâng, ta có thể đếm đén 3,4 thậm chí 5 hay 10, nhưng trên đó nữa thì có lẽ hơi khó hơn một chút.
Cuối cùng thì dù được xử lý bằng máy tính hay con người, các thuật toán vẫn là một chuỗi chỉ thị hướng dẫn giải quyết vấn đề.
Tìm hiểu thêm: Xác suất thống kê
Có nhiều lý do để học thuật toán.
Đầu tiên, thuật toán dạy cho bạn cách tư duy, nhiều công cụ để giải quyết vấn đề.
Ví dụ gặp vấn đề cần lưu trữ nhiều phần tử trong một mảng, nhưng bạn không biết tổng số lượng mảng là bao nhiêu. Nếu các bạn chưa học môn này thì các bạn chưa biết phải làm như thế nào.
Nhưng nếu học rồi, bạn sẽ biết phải lưu vào đâu, lúc đấy có thể thêm phần tử thoải mái mà không cần tạo nguồn nhớ.
Hoặc khi gặp một vấn đề, ví dụ tìm đường ngắn nhất giữa hai địa điểm, thì bạn phải biết lưu trữ dữ liệu dưới dạng gì, rồi dùng thuật toán này, thuật toán kia để tìm quãng đường ngắn nhất.
Vậy học thuật toán giúp bạn hiểu vấn đề và có những công cụ giải quyết vấn đề.
Tiếp theo, học thuật toán để đi phỏng vấn.
Vì sao? Các bạn mới ra trường, công ty họ không biết khả năng của bạn tốt đến mức nào, nhưng người ta muốn đánh giá khả năng suy luận, khả năng logic của bạn. Lúc đó họ sẽ phỏng vấn và cách phỏng vấn hay nhất đó là hỏi những bài liên quan đến thuật toán để biết bạn suy nghĩ như thế nào
Đặc biệt là các công ty Facebook, Google, WhatApps, Grab,… họ luôn luôn đánh giá rất cao về thuật toán.
Điều quan trọng nhất là học thuật toán để giúp bạn trở thành một lập trình viên giỏi hơn và code bạn viết ra nó chạy nhanh hơn và tốt hơn!
Tìm hiểu thêm: Lưu đồ thuật toán và cách sử dụng
Thuật toán không quá khó với những bạn yêu thích nó và ham học hỏi! Trên đây là những vấn đề liên quan đến thuộc toán. Chúc các bạn thành công!
>>Xem thêm :
BÀI VIẾT LIÊN QUAN