Tôi Đã Cải Thiện Kỹ Năng Thuật Toán Thế Nào?


Các thuật toán là viết các chương trình tiết kiệm thời gian/không gian.. Ban đầu, bạn cần chọn một ngôn ngữ và hiểu rõ điều đó. Tốt hơn hết là chọn bất kỳ ngôn ngữ oops ví dụ như Python, JAVA, Scala, C ++, Java script, v.v.. Khi bạn đã có đủ kiến thức về ngôn ngữ thì đã đến lúc bạn nên viết ngày càng nhiều chương trình. Bắt đầu với các chương trình cơ bản. Làm quen với các nội dung cơ bản như Vòng lặp, cách sử dụng vòng lặp, hàm đệ quy, v.v..

Dưới đây là 3 bước đơn giản cần thiết nếu bạn muốn cải thiện kỹ năng thuật toán của mình. Chỉ cần thực hành ba bước này lặp đi lặp lại.

1. Hiểu các thuật toán và cấu trúc dữ liệu:
Hãy tìm hiểu lý do tại sao cần học thuật toán? Thuật toán là gì? Học như thế nào? Để cải thiện cấu trúc dữ liệu và các kỹ năng thuật toán, có rất nhiều nguồn tốt trên internet bạn có thể tìm hiểu.

Cá nhân tôi định nghĩa dễ hiểu rằng, thuật toán là “thuật” (phương pháp) để giải quyết 1 bài toán. Nói dễ hiểu hơn, mỗi một bài toán giống như một chiếc hòm chứa đựng kho báu (kết quả, đáp án), và chiếc chìa khoá để mở cái hòm đó chính là “giải thuật”. Nếu dùng sai chìa khoá, bạn vẫn có thể mở được hòm, nhưng mà sẽ mất nhiều thời gian, hoặc mở được hòm thì kho báu ở bên trong bị méo mó, không toàn vẹn. Sử dụng đúng chìa khoá, sẽ giúp bạn lấy được kho báu 1 cách dễ dàng, nhanh chóng. Tất nhiên mỗi chiếc hòm sẽ luôn cần loại chìa khoá khác nhau, giống như một bài toán luôn có những giải thuật xác định. Không có chiếc chìa khoá nào mở được tất cả các hòm, cũng như không có giải thuật nào giải được toàn bộ các bài toán.

2. Thực hành
Phần tiếp theo là chúng ta cần thực hành viết code trong trình soạn thảo. Ngày nay hầu như tất cả các nền tảng đều cung cấp trình soạn thảo của họ để thực hành code. Trên tất cả các nguồn trực tuyến cũng cung cấp trình soạn thảo của họ. Hãy bắt đầu thực hành viết code theo thứ tự dưới đây (từ dễ đến khó) theo chủ đề cấu trúc dữ liệu và thuật toán

  • Arrays
  • LinkedList
  • Binary Tree
  • Stack/Queue and Backtracking
  • Graph
  • Hashing concepts
  • Dynamic Programming

3. Hiệu chỉnh
Hiệu chỉnh là bước quan trọng nhất trong quá trình viết thuật toán. Hầu như tất cả các thuật toán nổi tiếng (Như DFS, KMP, Topological sort, …) đều có các bước mà bạn cần nhớ. Bạn nên ghi lại tất cả các cách tiếp cận và hiệu chỉnh các khái niệm đó thường xuyên trong những khoảng thời gian nhất định.

Ví dụ như thế này:

  • Tìm một thuật toán bạn muốn làm việc (một thuật toán cụ thể ví dụ như linkedlist).
  • Tìm kiếm các video liên quan trên YouTube, hoặc các project cụ thể về thuật toán đó.
  • Bắt tay vào code. Hãy dành thời gian của bạn để phân tích và nghiên cứu thuật toán đúng cách. Thực hành càng nhiều càng tốt và làm chủ nó.
  • Đừng quên nghỉ giải lao ngắn trong một giờ và hai giờ 🙂
  • Trong thời gian nghỉ ngơi, hãy hiệu chỉnh thuật toán đó. Hãy thử ghi nhớ / ghi nhớ cách thức hoạt động của thuật toán. (chứ đừng học thuộc lòng)
  • Hãy thử ít nhất một thuật toán mỗi ngày, sau đó tăng dần lên.

Khi bạn đã thực hiện xong tất cả các bước trên thì đến lúc kiểm tra kiến ​​thức của bạn. Tham gia các bài kiểm tra code trực tuyến. Các bài kiểm tra code trực tuyến sẽ cải thiện kỹ năng viết code của bạn trong môi trường áp lực. Dưới đây là một số nền tảng tốt để tham gia kiểm tra code trực tuyến:

  • Codelearn
  • Leetcode
  • HackerRank
  • Codechef

4. Nguồn học thuật toán

Có rất nhiều tài nguyên để tìm hiểu các thuật toán. Nó phụ thuộc vào bạn rằng bạn đang sử dụng chúng như thế nào. Sau đây là một số tài nguyên hữu ích để tìm hiểu về các thuật toán:

4.1. Website

  • https://www.geeksforgeeks.org/data-structures/
  • https://www.geeksforgeeks.org/fundamentals-of-algorithms/
  • https://codelearn.io/learning/thuat-toan-can-ban
  • https://www.tutorialspoint.com/data_structures_algorithms/index.htm

4.2. Sách
Bạn có thêm kiến thức khi học từ sách. Vì mọi chủ đề được giải thích rất kỹ lưỡng với rất nhiều ví dụ mà ai cũng có thể dễ dàng hiểu. Bạn có thể tìm đọc:

  • “The Algorithm Design Manual, 2nd Edition” -Steven S Skiena
  • “Data Structures and Algorithms Made Easy”-Narasimha Karumanchi
  • “Data Structures and Algorithms in Java, 2nd Edition” – Robert Lafore
  • “Introduction to Algorithms, 3rd Edition” -Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein
  • “Algorithms, 4th Edition” by Robert Sedgewick, Kevin Wayne

4.3. Các khóa học trực tuyến
Ngày nay, có rất nhiều khóa học trực tuyến có sẵn cho mỗi khóa học. Udemy, Prepbytes, coursera, codelearn v.v. là những nền tảng mà bạn có thể tìm thấy nhiều khóa học về cấu trúc dữ liệu và thuật toán.

Nền tảng để code: Codelearn, Hackerank, codechef, prepbytes, v.v. là những nền tảng mà bạn có thể áp dụng kiến ​​thức thuật toán của mình và giải quyết nhiều câu hỏi nhất có thể. Nó sẽ cải thiện kỹ năng viết code của bạn rất nhiều.

Tạm kết

Cuối cùng, có thể có nhiều tài nguyên hơn ngoài những thứ mà tôi đã đề cập ở trên, nhưng điều quan trọng nhất là bạn đang tận dụng những nguồn này để học hiệu quả. Nếu bạn chưa biết cách, cứ chậm rãi và nghiên cứu, khi nào hiểu được bản chất cốt lõi của vấn đề, bạn sẽ làm được.

Nguồn: Quora

Related Posts

Leave a Reply