Hỏi Đáp

Lập trình và tư duy thuật toán sáng tạo (Kì 1)

Tư duy thuật toán là gì

Xin chào tất cả mọi người! Sắp tới mình sẽ thực hiện một series dài hơi về “Tư duy lập trình và thuật toán sáng tạo”.

Giới thiệu loạt bài

  • nội dung: Chia sẻ, giới thiệu thuật toán trong ctdl & gtlt . Quảng cáo cải tiến thuật toán để tối ưu hóa chương trình. Tôi sẽ cố gắng hết sức để giải thích nó một cách dễ hiểu, để mọi người có thể nắm bắt ý tưởng và thực hiện thuật toán.
  • Mục đích: Đối với bản gốc, đối với tôi, loạt bài này sẽ giúp tôi hệ thống hóa kiến ​​thức của mình. Tiếp theo là chia sẻ giúp mọi người cùng tìm hiểu và nắm rõ về chủ đề này. Do đó, các bạn có thể để lại bình luận để cùng trao đổi, thảo luận và đưa ra những ý kiến ​​đóng góp.

Nội dung “Vấn đề đầu tiên”

  • Thuật toán là gì?
  • Tại sao bạn cần nó?
  • Nó có quan trọng không?
  • Các bước giải các bài toán
  • li>

Nội dung của “Vấn đề 1” chỉ là phần giới thiệu về các khái niệm và lý do tại sao cần có các thuật toán. Kiến thức cơ bản về giải quyết vấn đề.

Thuật toán là gì?

????

Thuật toán hoặc thuật toán (bằng tiếng Anh) có nhiều định nghĩa phức tạp. Bạn có thể đọc nhiều nguồn để biết thêm thông tin. Cá nhân tôi có một định nghĩa dễ hiểu:

Thuật toán là một “thuật toán” (phương pháp) để giải quyết một vấn đề.

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

Tại sao chúng ta cần các thuật toán?

Xem Thêm : Quan niệm về “Đất nước” trong thơ – Toquoc.vn

Lập trình là một yêu cầu hoặc hướng dẫn để máy thực hiện hoặc giải quyết một nhiệm vụ hoặc vấn đề cụ thể trong cuộc sống. Mỗi vấn đề thực tế sẽ có một giải pháp khác nhau. Biết và sử dụng đúng thuật toán sẽ giúp bạn giải một cách dễ dàng và chính xác trong thời gian ngắn nhất có thể.

Tôi muốn đưa ra một ví dụ về thuật toán tìm đường đi ngắn nhất. Nói một cách đại khái, nếu tôi cung cấp cho bạn danh sách các đường đi giữa các địa điểm, thì bạn phải tìm ra con đường ngắn nhất (về khoảng cách) hoặc chi phí thấp nhất từ ​​điểm x đến điểm y.

????

Bạn có biết thuật toán này được sử dụng ở đâu không? Đến đây có lẽ bạn đã biết nó được sử dụng trong phần mềm định vị và các ứng dụng liên quan đến ngành giao thông vận tải (ví dụ: google maps, grab, uber, giao hàng nhanh …) nhưng bạn có biết nó được sử dụng ở những nơi khác không? Xin thưa với các bạn rằng trong hệ thống mạng, người làm viễn thông cũng sử dụng thuật toán này để định hướng đường truyền và tín hiệu. Cuộc gọi từ người ở Hà Nội đến người ở Thành phố Hồ Chí Minh đi qua thiết bị thu phát và cũng phải sử dụng dữ liệu internet từ máy tính của bạn đến máy chủ của nhà cung cấp mạng. Thuật toán này đạt được tốc độ cao nhất.

Tiếp theo, một thuật toán khá nổi tiếng khác là thuật toán tìm kiếm. Bạn có thể nhìn thấy nó ở khá nhiều sản phẩm phần mềm hiện tại, điển hình như Google. Bạn có thể nghĩ rằng, tìm kiếm thì có gì mà khó! Nhưng khoan đã, hãy đặt bạn vào một tính huống như thế này: bạn có hàng tỷ tỷ món đồ dùng được vứt lộn xộn trong 1 căn nhà, bạn sẽ mất bao nhiêu lâu để tìm được món đồ mà bạn mong muốn. Bạn cần phải nhớ rằng, việc Google trả ra được kết quả mà bạn yêu cầu tìm kiếm trong vòng 1 vài giây! (Thật không thể tin được ????). Điều ấy, yêu cầu 1 thuật toán cực mạnh, và vẫn liên tục cần cải tiến cho đến ngày hôm nay.

Thuật toán có quan trọng không?

Câu trả lời của tôi là có hoặc không tùy thuộc vào mục đích của bạn.

Bạn không cần phải học các thuật toán để phát triển tốt phần mềm (nếu bạn không giải được các bài toán có độ phức tạp cao với nhiều dữ liệu người dùng, bạn cần có câu trả lời nhanh chóng và chính xác).

Xem Thêm : Trường cao đẳng cảnh sát nhân dân 2 và thông tin tuyển sinh 2022

Ví dụ nếu bạn làm 1 website chủ yếu là nội dung, nếu bạn làm 1 ứng dụng điện thoại chỉ xử lí các logic thông thường, thuật toán không giúp ích nhiều cho bạn trong trường hợp ấy. Kể cả khi bạn làm những sản phẩm rất lớn, sử dụng những công nghệ rất mới và hot như AI, BigData hay Blockchain, dù không thành thạo thuật toán nào cả, bạn vẫn xây dựng được hệ thống. Trong trường hợp này, bạn chỉ cần hiểu rõ cách sử dụng và ứng dụng của công nghệ, chứ không cần nằm hay hiểu rõ thuật toán bên trong công nghệ ấy. (Trường hợp bạn không theo hướng research nhé! ????)

Nhưng hãy tưởng tượng bạn làm thế nào để đảm bảo điều này khi hệ thống có hàng nghìn người đang truy cập và bạn phải trả về kết quả rất nhanh? Câu trả lời thực tế là: bạn cần chọn một thuật toán tối ưu và hợp lý để tăng tốc độ xử lý từ hàng chục lần lên hàng trăm lần,

Trên thực tế, hầu hết các sản phẩm phần mềm ngày nay đều thành công với ít hoặc không sử dụng các thuật toán. Tuy nhiên, các sản phẩm có hàm lượng thuật toán cao và trí thông minh cao thực sự có sự khác biệt và thành công hơn so với các sản phẩm thông thường.

Tóm tắt

Google thành công vì nó có thuật toán tìm kiếm mạnh nhất trên thế giới. Một sản phẩm như facebook hay youtube cũng cần sử dụng rất nhiều thuật toán như tìm kiếm, gợi ý người dùng, gợi ý nội dung… nhưng thuật toán không phải là yếu tố cốt lõi quyết định sự thành công của sản phẩm này. Vì vậy, học thuật toán, tầm quan trọng của thuật toán phụ thuộc vào sản phẩm, ứng dụng bạn làm. Dù bạn có giỏi thuật toán hay không, miễn là bạn áp dụng các kỹ năng và kiến ​​thức của mình vào lĩnh vực bạn đang làm, bạn vẫn có thể thành công.

Các bước khắc phục sự cố

  1. Bước đầu tiên và quan trọng nhất là hiểu nội dung của câu hỏi. Đối với những người làm toán, đây là một yêu cầu quen thuộc. Để hiểu bài toán theo phương pháp máy tính, bạn phải cố gắng xây dựng một số ví dụ có thể phản ánh chính xác yêu cầu của bài toán, sau đó cố gắng giải các ví dụ này, và dần dần hình thành hướng giải thuật.
  2. Bước thứ hai là sử dụng một ngôn ngữ quen thuộc, tốt nhất là ngôn ngữ toán học, để chỉ định các đối tượng cần xử lý ở cấp độ trừu tượng, thiết lập các mối quan hệ và thiết lập các mối quan hệ biểu diễn. Mối quan hệ giữa các đại lượng cần xử lý.
  3. Bước thứ ba là xác định cấu trúc dữ liệu để biểu diễn các đối tượng cần xử lý cho phù hợp với hoạt động của thuật toán. Trong các bước tiếp theo, chúng tôi tiếp tục làm mịn dần các đặc tả theo thứ tự từ trên xuống dưới, từ trừu tượng đến cụ thể, tổng quát đến chi tiết.
  4. Bước cuối cùng là sử dụng ngôn ngữ. Các lập trình viên được chọn sẽ viết các chương trình hoàn chỉnh. Ở bước này, chúng ta thực hiện theo kỹ thuật từ dưới lên, từ những thao tác nhỏ đến những thao tác phức tạp. Sau khi nhận được chương trình, chúng tôi chạy chương trình bằng cách sử dụng dữ liệu thu được từ ví dụ được xây dựng ở bước đầu tiên.

Trên đây là 4 bước để giải một bài toán. Đó là lý thuyết, có thể bạn chưa hình dung, nhưng đừng lo lắng. Tôi sẽ phân tích chúng kỹ hơn trong các bài viết sắp tới khi tôi nêu chi tiết các ví dụ.

Tiền thưởng

  • Đừng coi thường thuật toán quá nhiều!
  • Đừng chỉ học lý thuyết, xem video mà không áp dụng. Tôi đã viết về điều này ở đây
  • Hãy thực hành thuật toán thường xuyên. Vì bạn ít khi cần, nhưng khi cần mà không biết thì phải mất kha khá thời gian tìm hiểu. Điều này có thể ảnh hưởng đến tiến độ công việc của bạn.
  • Cá nhân tôi luôn khuyên và nhắc nhở các lập trình viên phải luôn học hỏi và thực hành các thuật toán. Các thuật toán giúp bạn rèn luyện tư duy giải quyết vấn đề trong khi luôn suy nghĩ về việc tối ưu hóa và xây dựng sản phẩm một cách tối ưu và phổ biến.

Hẹn gặp lại bạn vào lần sau!

Nguồn: https://xettuyentrungcap.edu.vn
Danh mục: Hỏi Đáp

Related Articles

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Back to top button