BLOG CHIA SẺ

[Chia sẻ] BẠN NÊN HỌC THUẬT TOÁN NHƯ THẾ NÀO?

TƯ TƯỞNG

Chủ đề này không phải là mới, có thể các bạn cũng từng đọc quá rất nhiều những hướng dẫn về lộ trình học thuật toán nhưng khi nhìn vào hầu như là shock và không thể áp dụng được vì nó quá nhiều và quá rộng. Thực ra mình cũng đã từng gặp những vấn đề tương tự như vậy, nên mình sẽ chia sẻ một góc nhìn về cách học để các bạn tư duy không quá xuất sắc vẫn có thể áp dụng được. Bài này dài và có thể sẽ tốn các bạn nhiều thời gian để đọc.
Bắt đầu bằng một câu chuyện. Hồi học cấp 1, mình được nghe bài toán sau: “Vừa gà vừa chó, bó lại cho tròn, ba mươi sáu con, một trăm chân chẵn. Hỏi có bao nhiêu con gà và bao nhiêu con chó”. Thật sự thử thách khi giải bài toán này lúc bạn đang học lớp 3 hay 4 gì đó. Dù về mặt lý thuyết bạn đã có đủ kiến thức để tính toán, vì tất cả đều là con số trong phạm 100 và các phép toán cộng, trừ nhân và chia. Mình vẫn nhờ lời giải như sau:
“Giả sử tất cả đều là gà hết, như vậy chúng ta có tổng 36 x 2 = 72 chân, ít hơn 28 chân so với thực tế. Mà mỗi con chó sẽ nhiều hơn mỗi con gà 2 chân, như vậy chúng ta sẽ cần thay thế 28/2 = 14 con gà bằng 14 con chó để có đủ 100 chân. Vậy số chó là 14 con và số gà là 36 – 14 = 22 con”. Thật là một cách giải thông minh và đương nhiên mình không phải là đứa trẻ thông minh để nghĩ ra nó khi học lớp 5. Thậm chí ngay và việc hiểu ý nghĩa của lời giải thôi cũng đã rất khó khăn rồi và hầu hết các bạn cùng lứa tuổi bó tay.
Tuy nhiên đến lúc học cấp 2, khi chúng ta quay lại bài toán này và tiếp cận nó khi chúng ta đã được học về hệ phương trình bậc nhất 2 ẩn, thì lời giải sẽ khác:
Gọi số gà là x số cho là y, chúng ta có ngay hai phương trình bậc nhất là 2*x + 4*y = 100 và x + y = 36. Bằng một vài phép biến đổi đơn giản chúng ta có thể dễ dàng giải ra x = 22 và y = 14. Tuy nhiên sự khác biệt là lần này hầu hết mọi người trong lớp đều có thể giải được và hiểu được lời giải. Thậm chí là khi bài toán bị biến đổi khó hơn như “Vừa gà vừa chó, bó lại cho tròn, tổng 100 con và 300 chân chẵn”. Thì chúng ta vẫn giải được. Vậy phải chăng lúc học cấp 2 tư duy chúng ta đã vượt trội hơn so với lúc học cấp 1. Không hẳn vậy, khi yêu cầu chúng ta giải thích theo cách của học sinh sinh cấp 1, chúng ta vẫn cảm thấy khó khăn. Thậm chí ngay cả khi đọc lời giải của mình đã trình bày trên kia, chưa chắc nhiều bạn đã hiểu cách giải của học sinh cấp 1.
Có thể các bạn đã có nhiều cách khác nhau để giải thích cho hiện tượng này, nhưng chúng ta sẽ bàn một ít về cách não bộ tư duy và sự khác biết trong tư duy của mỗi người để giải thích cho hiện tượng Chúng ta không hề thông mình hơn quá nhiều khi lớn lên, nhưng vẫn có thể xử lí được những vấn đề đã từng rất khó chúng ta gặp phải lúc còn nhỏ. Có 2 yếu tố mình muốn các bạn suy nghĩ ở đây:
  1. Não bộ của chúng ta không sáng tạo được quá xa. Nhiều người rất hi vọng vào thần đồng, các nhà thông thái, nhưng thực ra bộ não của chúng ta thường rất khó khăn để tạo ra những bước tiến vượt bậc. Hầu hết chúng ta sẽ chỉ đạt được những bước tiến nhỏ trong cuộc sống dựa trên những nền tảng có sẵn.
  2. Cực kì khó để chúng ta có thể hiểu được những kiến thức quá xa trong tầm hiểu biết của chúng ta. Do đó, để học được một nội dung nào đó mới thì chúng ta chỉ có thể hiểu được nếu nó được xây dựng dựa trên nền tảng những gì chúng ta đã biết.
Các nhà toán học, hay khoa học cũng đi những bước tiến như vậy. Chúng ta hay nghe về giai thoại về nhà bác học Enstein không nhớ vận tốc âm thanh vì có thể tra cứu được trong sách nên không cần nhớ. Thực ra không phải Enstein không nhớ vận tốc âm thanh là gì, mà đúng hơn là Enstein không nhớ chính xác giá trị của nó, còn về khái niệm hay nội dung thì nó đã được ghi nhớ dài hạn rồi. Enstein với thuyết tương đối đã chứng tỏ cơ học Newton có vấn đề. Vậy liệu có phải Enstein không cần học cơ học Newton không? Hay Enstein chính là người nắm rất rõ cơ học Newton và khi áp dụng cho những bài toán của ông gặp phải, ông đã thấy rất nhiều bất cập không thể xử lí nổi và ông phải tạo ra thuyết tương đối để giải quyết. Công thức toán học của thuyết tương đối liệu có hoàn toàn khác biệt so với công thức toán học của cơ học Newton không, hay khi mà biến số vận tốc càng nhỏ thì 2 công thức lại dần trở thành 1.
Mình kể cho các bạn nghe những câu chuyện này để các bạn liên tưởng đến việc học thuật toán rằng không phải lúc nào chúng ta cũng cần quá thông minh, chúng ta cần quá xuất sắc để học được thuật toán. Quan trọng hơn là chúng ta biết giới hạn tư duy của chúng ta ở đâu, để chúng ta chọn một cách tiếp cận học phù hợp. Sự thật là hầu hết các kiến thức thuật toán các bạn muốn học đều đã tồn tại, tức là chúng ta sẽ hoàn toàn không phải sáng tạo ra một điều gì mới khi học thuật toán cả. Do đó chúng ta hãy coi việc học như leo cầu thang, đừng có trèo lên những bậc quá cao, nhưng cũng đừng bước lên nhưng bậc thang quá cheo leo. Vị dụ như cách giải bài toán đố theo cách của học sinh cấp 1 là một bậc thang cheo leo, vì rất ít người hiểu được nó. Chúng ta hay lựa chọn một lộ trình chắc chắn phù hợp để có thể hấp thụ.

PHƯƠNG PHÁP

CHÚNG TA HỌC THUẬT TOÁN ĐỂ LÀM GÌ?

Đối với mỗi vị trí thuật toán lại có một vai trò riêng, nhưng vì ở đây là group DEV và thuật toán lại rất quan trọng với DEV trong học hành cũng như công việc. Nếu nắm được thuật toán và áp dụng nó khi học các môn về sau như Mạng máy tính, Hệ điều hành, Cơ sở dữ liệu … hay bất kì môn nào cao hơn sau này, hay thậm chí là sau này đi làm, chúng ta chợt nhận ra chúng ít nhiều đều là thể hiện của thuật toán khi áp dụng để giải quyết các bài toán thực tế. Nếu ai còn cảm thấy nghi ngờ giá trị học thuật toán thì đọc đến đây cũng đã là dài và tốt nhất hãy dừng lại để thật sự tin tưởng nó trước. Bởi vì nếu không đủ niềm tin, chúng ta sẽ bỏ cuộc nhanh chóng.

LỘ TRÌNH HỌC

Cái này nó cực kì khó, và không cố định thời gian. Nó giống như cuộc đua maraton, có người về địch sớm, nhưng cũng có người về chậm hơn hàng giờ đồng hồ, hoặc bỏ cuộc. Tuy nhiên lộ trình học là ở mỗi cá nhân, phụ thuộc vào trình độ tư duy mà chúng ta nên xây dựng một lộ trình chi tiết hay là một lộ trình nhiều bước nhảy. Hầu hết các bạn học thuật toán đều phải bỏ cuộc là vì mọi người không thể theo kịp tốc độ giải thích của thầy giáo. Sau đó chúng ta mặc định rằng nó thật sự khó và chúng ta không thể học được. Thực ra không phải vậy, mà bởi vì chúng ta đã tự tạo cho mình một ràng buộc thời gian. Có người đi học cảm thấy thầy giáo dạy thật nhàm chán, nói mãi chưa hết bài, trong khi bản thân đã hiểu lâu rồi. Có người lại cảm thấy, sao mà nhanh vậy, sao mình chưa kịp hiểu gì đã sang chương mới rồi. Vậy để thật sự học hiệu quả một điều gì đó, chúng ta cần một lộ trình cho từng cá nhân, không phải cho tập thể. Nếu thông minh thì chúng ta sẽ học trong vài tháng, nếu kém hơn chúng ta sẽ học trong vài năm, quan trọng nhất vẫn là chúng ta biết lộ trình của mình là gì, chúng ta đã đi qua đâu, đang ở đâu, và sẽ đi đến đâu. Như vậy chúng ta mới không bỏ cuộc và đạt được những thành tựu quan trọng. Các bạn có thể tìm kiếm và cho ra 100 cái gợi ý về lộ trình học thuật toán, nhưng các bạn chưa thật sự hiểu chính mình thì các bạn chả thể nào có được lộ trình học phù hợp. Khi gặp khó khăn chúng ta lại thấy hoang mang, chả biết đi đâu. Vậy lộ trình của chúng ta sẽ ta sẽ phải là lộ trình đã được cá nhân hóa và sẵn sàng thay đổi khi đối đầu khó khăn.
Hỏi: Giả sử mình học đến các thuật toán về cây, mình cảm thấy khó quá, mình nên làm gì?
Đáp: Thực tế thì không nên làm gì cả, đi ngủ một giấc rồi mai xem như chưa từng học về cây và lại học lại từ đầu.
Hỏi: Nếu như vậy mãi vẫn không hiểu thì chúng ta nên làm gì?
Đáp: Vậy thì lộ trình của chúng ta đã không phù hợp, chúng ta đã có một bước nhảy tư duy quá xa, nên những thứ chúng ta đã học đã không thể giúp chúng ta hiểu được những cái hiện tại. Vậy chúng ta cần một góc nhìn mới để sửa đổi lộ trình, hãy tìm đến bạn bè, hội nhóm, thầy cô hay bất kì sự hỗ trợ nào để có thể sửa đổi.
Hỏi: Học xong mình lại quên mất thì mình nên làm gì?
Đáp: Học xong lại quên là biểu hiện thông tin chưa được đưa vào bộ nhớ dài hạn, hãy sử dụng phương pháp lặp lại gián đoạn. Đừng nghĩ rằng chúng ta không nhớ được là vì chúng ta chưa hiểu, ngược lại sẽ là chúng ta chưa hiểu vì chúng ta chưa nhớ. Nhớ rồi mới đến hiểu sau đó áp dụng và có thể tạo ra cái mới.
Hỏi: Học xong mình vẫn thấy mơ hồ dù có vẻ đã hiểu là sao thế?
Đáp: Chúng ta chỉ có thể cảm thấy ít mơ hồ về những thứ cụ thể chúng ta gặp nhiều và tiếp xúc nhiều đến mức quen thuộc với nó. Do đó học xong thấy mơ hồ là bình thường, cố gắng đừng để bị quên. Sau đó khi nào có cơ hội thì liên tưởng và áp dụng nó vào các môn học mới, vào các công việc mới, để nó ngày càng trở nên cụ thể và gần gũi hơn.
Mình sẽ không đưa ra một lộ trình học nào ở đây cả, vì các bạn có thể kiếm được trên mạng. Nếu có ai đó cần tư vấn thì có thể Inbox riêng tuy nhiên mình chỉ có thể hỗ trợ sửa đổi lộ trình sẵn có của các bạn, chứ không thể giúp các bạn tạo ra một lộ trình mới từ đầu, đó là việc của các bạn.

MÔI TRƯỜNG HỌC TẬP

Điều này là sống còn, nếu muốn đi nhanh, chúng ta đi một mình, đi xa chung ta phải đi cùng nhau. Mình chắc chắn các bạn không thể học thuật toán một mình mà học được quá nhiều được. Môi trường vừa là động lực, vừa là hỗ trợ những góc nhìn, những ý tưởng mới để học tập được thuận lợi hơn. Tất nhiên sẽ có khá nhiều hội nhóm tương tự như vậy và các bạn có thể tìm được trên mạng. Mình có có một người bạn cũng đã từng học thuật toán rất nhiều. Cậu ấy đang tiếp tục học thuật toán nhiều hơn để nâng range lương lên cao hơn. Cậu ấy không giỏi quản lý nên cơ hội tăng lương của cậu ấy chỉ có thể là giỏi về chuyên môn. Hãy tìm những người cũng đang học thuật toán như vậy và trao đổi với nhau. Tuy nhiên hãy nhớ rằng, trao đổi chỉ hiệu quả khi bạn đang gặp vấn đề cần tìm sự hỗ trợ, hoặc bạn đang hỗ trợ người khác để để củng cố hơn hiểu biết của mình về một vấn đề. Ngoài ra thì các hình thức trao đổi quá chi tiết đều là thừa và phản tác dụng. Kiến thức bài tập thì có trong sách, trên mạng, vậy chỉ nên trao đổi cái nào mình thật sự cần mà thôi.

LỜI CUỐI

Theo lời hứa thì mình lên bài này để nối tiếp nội dung bài trước. Nội dung khá dài và đôi khi sẽ là hơi miên man. Tuy nhiên hãy tiếp thu nó về mặt tưởng trước và đưa ra kế hoạch hành động thì bạn sẽ hiểu hơn những gì tôi muốn nói. Phương pháp không bao giờ là duy nhất, nên có thể các bạn sẽ có phương pháp hay hơn tôi. Nhưng nếu điểm đến cuối cùng là chúng ta nhớ, hiểu và áp dụng thuật toán trong học tập hay công việc thì chúng ta đang đi cùng hướng.
Chúc các bạn thành công. Thảo luận sẽ ở bên dưới comment, nếu các bạn có thể thảo luận về nó, các bạn sẽ hiểu nó rõ ràng và chính xác hơn. Sẽ không có gì ngạc nhiên nếu mọi người sẽ dùng bài này như một bài SELF-HELP động viên tinh thần. Tuy nhiên kết quả sẽ chỉ đến với những ai đọc xong và lấy công cụ ra lập cho mình một lộ trình để học. Sau đó gặp khó khăn gì thì comment bên dưới biết đâu có thể được hỗ trợ. Cảm ơn mọi người.
cre : đức nguyễn.

Tài liệu liên quan

Bình luận (0 bình luận)
Contact Me on Zalo