Làm sao học thuật toán?

Chào mấy anh ! Em đọc mấy cái blog thấy người ta bảo là học tốt thuật toán rồi học ngôn ngữ lập trình. Vậy cho em hỏi là học thuật toán ở đâu ?

1 Like

Học một ngôn ngữ lập trình rồi học thuật toán thì tốt hơn nhé. :wink:

Search google “Giải thuật toán” đi sẽ hiểu :slight_smile:

1 Like

Thuật toán phải dùng một ngôn ngữ lập trình để hiện thực. Càng đơn giản càng tốt. Mình nghĩ bạn nên dùng Python hoặc Pascal.

1 Like

Mình nghĩ nên học toán song song với ngôn ngữ lập trình.

Học thuật thì cũng phải biết ngôn ngữ lập trình trước
mak học thuật khó hơn so vs học ngôn ngữ

tai sao khong dung c ban nhi

Bạn nên học những môn như phân tích và thiết kế thuật toán (design and analysis of algorithms), lý thuyết đồ thị (Graph theory các thuật toán thiên về đồ thị, cây) chẳng hạn hoặc đọc các quyển sách như Introduction to Algorithms của Thomas H. Corman, Algorithms của Robert Sedgewick & Kevin Wayne…v…v :v còn về ngôn ngữ thì bạn rành ngôn ngữ nào thì học thuật toán bằng ngôn ngữ đó :v à mà nếu bạn đã biết hơn 1 ngôn ngữ lập trình rồi thì học thuật toán chả sao cả nhưng nếu chưa biết 1 ngôn ngữ nào thì bạn nên học rành 1 ngôn ngữ(để triển khai thuật toán trên máy tính) rồi hẳn học thuật toán nếu không chạy giải thuật bằng tay chắc chết quá (mặc dù cũng được đó ) :v. Good luck!

chạy bằng tay mới hiểu chứ code từ mã giả người ta viết sẵn thì hiểu được gì?

hiểu rồi thì mới code được. Chưa hiểu thì biết cái gì mà code :joy:

:smile: Hướng dẫn bạn ấy vừa phân tích vừa thiết kế mà :grin: không biết ngôn ngữ nào thì sao mà thiết kế thuật toán được :grin: 1 vài kỹ thuật như Greedy, Dynamic chạy tay còng được chứ mấy cái khác thì thua :grin:

Graph theory cũng chạy tay hết mà.

Ko biết ngôn ngữ nào thì viết pseudo code. Nguyên cuốn Intro to Algo của Cormen cũng toàn viết mã giả ko mà. HIểu thuật toán thì ngôn ngữ gì cũng áp dụng được. Đâu cần phải biết 1 ngôn ngữ lập trình rồi mới thiết kế thuật toán được.

Thuật toán là lý thuyết. Áp dụng thuật toán là thực hành. Áp dụng thuật toán thì còn phải có debug đủ thứ, hoặc hiểu được hạn chế của ngôn ngữ mà tìm cách áp dụng cho đúng. Debug hay cách code riêng biệt của từng ngôn ngữ thì có liên quan gì tới thuật toán đâu ~.~

ví dụ mã giả viết cho mảng 2 chiều Aij thì mặc định index trong mảng bắt đầu bằng số 1 (1 <= i <= n, 1 <= j <= n). Matlab thì ko sao, nhưng C,C++,Java, thì phải đổi mấy cái i j k trong vòng lặp lại cho đúng. Ngược lại có mã giả bắt truy cập phần tử b0 Matlab ko làm được thì lại phải đổi +1. Cái đổi index này thì có liên quan gì tới thuật toán đâu.

1 Like

Chả biết trường các bạn dạy sao nhưng trường tôi dạy như thế đấy :grin: học & hiểu mã giả chạy tay xong rồi phải thiết kế giải thuật bằng ngôn ngữ và áp dụng vào các bài toán thực tế :grin:

2 Likes

Dạ cám ơn mấy anh đã góp ý kiến ! em cũng học qua cơ bản ngôn ngữ C nên em muốn biết thêm là làm sao học thuật toán và học ở đâu ?

mình nghĩ là bạn nên nâng cao trình độ toán. Không hề vô lý đâu khi các bạn mình tham gia các cuộc thi tin(các cuộc thi giải thuật) đều phải học toán rời rạc. Bạn nên học thêm về lý thuyết trò chơi, các đề thi IMO toán rời rạc của nó cũng rất hay, sách tham khảo về toán mình nhớ mỗi quyển counting and configuration

1 Like

quyen nay duoc bieu dienm bang ngon ngu gi ha ban

quyển này về toán thôi, không phải là lập trình, Ý mình là nếu bạn muốn nâng cao giải thuật thì nên nâng cao trình toán nghĩa là tư duy, đặc biệt là toán rời rạc

Introduction to Algorithms nay ha ban thanh nhieu nha

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?