Thuật toán trong lập trình – Đôi điều tản mạn

0
1131

Có bao giờ bạn đặt câu hỏi: liệu làm lập trình viên có cần phải giỏi thuật toán không? Bài viết này chúng ta cùng nhau bàn luận các thuật toán trong lập trình nhé!

Cuộc sống là chuỗi những vấn đề cần phải giải quyết. Khi ta giải quyết vấn đề và càng đi sâu thì càng nảy sinh nhiều vấn đề khác. Nhưng chính điều đó lại làm cuộc sống ta trở nên thú vị hơn. Đặc biệt là các bạn developer, phải tiếp xúc với các vấn đề, thuật toán hàng ngày. Việc sáng tạo trong thuật toán và lập trình không hề dễ dàng.

Không cần phải nghĩ đâu xa, xung quanh bạn luôn có rất nhiều vấn đề cần phải giải quyết như: quản lí tài chính gia đình, tìm kiếm tuyến đường ngắn nhất mà không bị kẹt xe để đến công ty mỗi sáng, phân loại quần áo cho vợ giặt…

Thuật toán trong lập trình - Đôi điều tản mạn

Thật may mắn, với sự trợ giúp của các thuật toán và cùng với sự sáng tạo của chúng ta, mỗi ngày các hoạt động đó đều trở nên thú vị hơn rất nhiều.

Nếu như bạn thấy các thuật toán thật thú vị, thì bạn có thể bỏ bài viết này mà đi thẳng xuống cuối bài viết để đọc tài liệu nâng cao về thuật toán.

Còn nếu không, hãy để mình lấy đi một vài phút của bạn để giải đáp cũng như khai thông về thuật toán cho bạn nhé

Bạn đã bao giờ sử dụng các thuật toán vào công việc?

Định nghĩa ngắn nhất về nghề lập trình mà mình từng gặp đó là nghề viết code. Ta luôn phải tìm cách giải quyết các vấn đề và tìm ra giải pháp hiệu quả nhất cho cùng một vấn đề.

Để có thể tìm ra giải pháp hiệu quả nhất thì trước hết bạn phải có kiến thức cơ bản về vấn đề mà bạn cần giải quyết. Đồng thời bạn cũng cần phải rõ những cách mà người đi trước đã giải quyết để mình có thể cải tiến nó

Mình lấy ví dụ: Để xây dựng ứng dụng có thể tìm đường đi nhanh nhất (nhanh nhất chứ kg phải ngắn nhất) từ vị trí người dùng tới công ty.

Mình sẽ không thể tìm được giải pháp tốt nhất nếu mình không hiểu rõ hệ thống giao thông “ma trận” ở Việt Nam, không hiểu được những giải pháp mà người ta đang áp dụng…

Bạn có biết: Hiện các công ty Logistic lớn(ở Việt Nam chính là các anh Shipper đẹp trai đấy) vẫn phải sử dụng thuật toán TPS để phân phối và vận chuyển hàng hóa. Mặc dù thuật toán này vẫn chưa phải tối ưu. Các bạn có thể search để hiểu thuật toán này là gì nhé

Học thuật toán trong lập trình có khó không?

Tất nhiên rồi, đặc biệt là với bạn nào lần đầu đụng tới thuật toán. Việc nghiên cứu các thuật toán yêu cầu bạn phải kiên nhẫn và kiên cường.

Thuật toán trong lập trình - Đôi điều tản mạn

Nếu bạn cảm thấy choáng ngợp khi dự án của bạn phải sử dụng nhiều thuật toán để giải quyết vấn đề, thì điều này hoàn toàn bình thường nhé. Ai cũng thế thôi!

Hãy thư giãn và đừng lo lắng.

Có cần phải lên danh sách những thuật toán cần phải học trước tiên không?

Lúc mới bắt đầu học thuật toán, chắc hẳn bạn sẽ có dự định tìm kiếm xem mình phải học những thuật toán nào trước tiên. Cố gắng tìm kiếm danh sách những thuật toán cần phải biết.

Một số bạn thì cho rằng thuật toán sắp xếp là cần thiết phải học trước. Số khác lại thấy việc học thuật toán tìm kiếm và mã hóa cần thiết hơn.

Thuật toán trong lập trình - Đôi điều tản mạn

Tốt nhất là bạn không theo ai cả, chỉ đơn giản là bạn tự chọn cho mình một thuật toán mà bạn thấy có ích và dễ dàng với bạn nhất. Có như vậy bạn mới không bị nản chí ngay từ đầu

Đừng cố gắng đi theo lối mòn của người khác. Nghĩa là nếu ai đó đã triển khai các thuật toán và bạn là người đến sau thì bạn cũng không cần phải cố gắng thử và phát triển phiên bản của riêng bạn.

Để học thuật toán, mình có cần phải giỏi toán học không?

Mình tin chắc rằng nhiều bạn developer sẽ có câu hỏi này? Vì các bạn ấy cứ áy náy về thành tích môn toán “khủng khiếp” thời cấp 3.

Câu trả lời là: Cần mà cũng không phải cần. Nghĩa là chỉ cần bạn biết ở mức cơ bản là đủ. Không cần phải là siêu nhân toán học thì mới có thể học thuật toán.

Cũng giống như việc bài viết này sẽ hữu ích nếu như ít nhất bạn đã biết cơ bản về thuật toán là gì.

Nếu không, bạn sẽ cảm thấy bài viết này thật “nhảm xít”.

Mình ví dụ như việc bạn nhận ra việc tính tích phân có thể được định nghĩa là tìm giới hạn và tính tổng. Toán học cao cấp cũng không có vẻ đáng sợ lắm, phải không?

Lời khuyên của mình là để có thể giỏi thuật toán, tổng hợp các thuật toán thì bạn cũng cần phải biết cơ bản về toán học nền tảng. Một số thứ như logarit, tích phân, giới hạn, đạo hàm… sẽ có ích cho con đường trở thành “thuật toán gia” của bạn

Mình là  developer  và mình có cần phải giỏi thuật toán không?

Câu trả lời của mình là giỏi thuật toán thì tốt, còn không thì cũng không sao.

Tài liệu tham khảo

Cuối cùng, mình gợi ý một số tài liệu kinh điển để bạn có thể nâng cao trình độ thuật toán

  1. Thomas H. Cormen, Algorithms unlocked
  2. SPOJ website
  3. Stanford University algorithms course at Coursera

Hi vọng bài viết này giúp các bạn có cái nhìn khác về thuật toán trong nghề lập trình.

Mình rất muốn nghe ý kiến của bạn về vấn đề này, hãy để lại bình luận bên dưới nhé

Bình luận. Đặt câu hỏi cũng là một cách học

avatar
  Theo dõi bình luận  
Thông báo