[Python/Python] Thuật toán DFS mà sinh viên khối xã hội cũng có thể hiểu! - Phần nhập môn

Đây là bài giảng cơ bản về DFS, giải thích đúng theo cách mà một lập trình viên đang làm việc xuất thân từ khối ngành xã hội đã học để xin việc :) Tôi đã giảm thiểu phần lý thuyết khô khan và chuẩn bị một bài giảng giúp bạn học thông qua việc trực tiếp giải các bài toán! Sau khi học khóa này, bạn sẽ có thể tự mình giải các bài toán DFS cấp độ Silver trên Baekjoon.

(5.0) 19 đánh giá

176 học viên

Độ khó Cơ bản

Thời gian 12 tháng

dfs
dfs
Algorithm
Algorithm
Coding Test
Coding Test
Python
Python
python3
python3
dfs
dfs
Algorithm
Algorithm
Coding Test
Coding Test
Python
Python
python3
python3
Thumbnail

Đánh giá từ những học viên đầu tiên

5.0

5.0

sonbal22

100% đã tham gia

bài giảng hay nhất Vui lòng tải lên các chủ đề khác ngoài DFS.

5.0

noeliden1

100% đã tham gia

Bài giảng này chắc chắn sẽ hữu ích 100% cho những ai đang gặp khó khăn trong việc triển khai DFS và các hàm đệ quy. Giọng nói của giáo viên rất hay và nội dung bài giảng đồng thời rất giàu thông tin và súc tích. Những hình ảnh được sử dụng trong bài giảng cũng giúp tôi rất nhiều trong việc tìm hiểu DFS. Anh ấy trả lời các câu hỏi một cách nhanh chóng và thực sự là giáo viên giỏi nhất. ㅠㅠ Tôi nghĩ khuyết điểm duy nhất là không có loại bài giảng thuật toán nào khác. Hãy làm một bài giảng thuật toán khác!

5.0

kayden

100% đã tham gia

Ở Baekjun, tôi chỉ giải các bài toán thực hiện độ khó đồng, nhưng khi thử giải các bài toán bạc, tôi có cảm giác như mình sẽ không thể làm được nếu không học thuật toán. Vì vậy tôi đã thử nhiều thuật toán khác nhau nhưng tôi thực sự không biết gì về DFS. Tôi cảm thấy như mình không hoàn toàn hiểu được. Như bất kỳ ai giải quyết được một vấn đề đều biết, nếu tôi không hiểu hết về nó, tôi sẽ không bao giờ có thể biến nó thành của riêng mình. Sau đó tôi tìm thấy khóa học này và tham gia khóa học miễn phí và nó rất tốt. Nhờ đó em đã giải được và hiểu đầy đủ tất cả các vấn đề có trong bài giảng. Nếu không có bài giảng này, có lẽ tôi đã mất nhiều thời gian hơn và căng thẳng hơn. Cảm ơn Nếu tôi muốn thứ gì đó hơn thế nữa, sẽ thật tuyệt nếu vấn đề được giải quyết ở cấp độ vàng. Tôi hơi thất vọng vì có nhiều vấn đề tương tự. Đó vừa là ưu điểm vừa là nhược điểm, và mặc dù nó có thể được coi là lợi thế đối với những người thực sự mới bắt đầu sử dụng DFS và muốn cảm nhận về nó, nhưng nó có thể khiến những người có một số kinh nghiệm cảm thấy hơi thất vọng. . Nhưng nhờ có bạn, tôi rất vui vì đã hiểu được DFS. Cảm ơn bạn đã tạo ra khóa học. chúc một ngày tốt lành!

Bạn sẽ nhận được điều này sau khi học.

  • Đừng học những tiết lý thuyết nhàm chán nữa! Hãy học chiến lược DFS thông qua việc giải bài!

  • Chỉ chọn lọc những dạng bài thường xuyên xuất hiện nhất để tập trung ôn luyện!

  • Khả năng tự mình giải các bài toán DFS

Thuật toán DFS khó hơn bạn nghĩ?
Hãy nhanh chóng học qua các dạng bài thường gặp!

Bạn đã từng trăn trở như thế này chưa?

🤔

Làm thế nào để biết bài toán này cần được giải bằng DFS?

🥲

Dù biết đến DFS, tôi vẫn luôn thấy bối rối mỗi lần gặp bài. Có cách giải chung nào không?

😥

Tôi không thể hình dung được hàm đệ quy trong đầu. Tôi nên sắp xếp và hệ thống hóa thế nào để có thể hiểu được?

Dành cho người không chuyên, bài giảng thuật toán DFS của một lập trình viên có 8 năm kinh nghiệm 
Bài giảng thuật toán DFS 🪢

DFS (Depth First Search)

Đây là một trong những phương pháp duyệt toàn bộ đồ thị, một thuật toán ưu tiên khám phá theo “chiều sâu”.

Đây là khóa học nhập môn về thuật toán DFS, với mục tiêu trực tiếp làm quen với các bài toán DFS thông qua việc giải những bài toán thường được ra nhất. Sau khi tóm tắt thật ngắn gọn các khái niệm cốt lõi, bạn sẽ rèn luyện khả năng nhận biết “À, bài này là bài DFS” bằng cách giải các bài toán thuộc từng dạng, đồng thời chinh phục DFS thông qua những điểm mấu chốt xuyên suốt mọi bài toán :D

Đây là những bình luận trên kênh YouTube do tôi điều hành.

Khóa học này sẽ giúp ích rất nhiều cho những bạn đã học thuật toán DFS nhưng vẫn chưa hiểu rõ, hoặc gặp khó khăn trong việc tự mình nghĩ ra cách giải. Đây là khóa học do một lập trình viên đang làm việc trong ngành với 8 năm kinh nghiệm, xuất thân từ khối ngành xã hội, biên soạn dành cho những người không chuyên ngành, nên tôi hứa rằng bạn sẽ hiểu bài dễ dàng hơn bất kỳ khóa học nào khác.

Khóa học này phù hợp với những người sau 🙋

Dành cho những bạn biết ngữ pháp Python cơ bản nhưng lần đầu chuẩn bị cho kỳ thi lập trình

Những bạn đã thử tự giải bài DFS nhưng vẫn chưa nắm được hướng giải

Dù đã học bài giảng lý thuyết nhưng vẫn bối rối khi thực sự gặp bài toán


Đặc điểm của khóa học ✨

1. Tổng hợp gợi ý cho bài toán DFS.

Trong thời gian giảng dạy, điều mà các học viên thường đặc biệt hay nói là "Em không biết rằng phải giải bằng DFS".

Vì vậy, trong bài giảng, chúng ta sẽ cùng đọc các bài toán được đưa ra ngay từ đầu và tìm câu trả lời cho câu hỏi: "Dựa vào từ khóa nào trong bài toán này mà chúng ta nên nghĩ đến DFS?"】【。

2. Chúng tôi sẽ cho bạn thấy cấu trúc dữ liệu thay đổi theo tiến trình của chương trình.

Bài giảng này không phải là bài giảng chỉ thay thế phần giải thích bằng những hình vẽ đơn giản hoặc vừa gõ mã vừa giải thích bằng lời! Từ việc xác định cấu trúc dữ liệu với kích thước bao nhiêu và khởi tạo như thế nào, cho đến việc các giá trị thay đổi ra sao theo từng bước để có thể tìm ra đáp án, tất cả đều được minh họa bằng hình ảnh động một cách dễ hiểu.

3. Tổng hợp những điểm cốt lõi xuyên suốt các bài toán

Mặc dù cách triển khai khác nhau tùy từng bài toán, điểm chung của các bài toán yêu cầu thuật toán DFS vẫn không thay đổi. Thông qua bài giảng, chúng ta sẽ hệ thống hóa theo từng dạng những yếu tố cốt lõi để giải tốt các bài toán DFS, đồng thời củng cố và tổng kết trọng tâm của từng bài toán.

Sau khi hoàn thành quá trình này, ngay cả khi gặp một bài toán DFS mới, bạn cũng có thể nhanh chóng xác định phần nào là điểm chung và phần nào khác biệt, từ đó tự mình giải quyết các bài toán DFS!

📚 Tuyển chọn và hệ thống hóa 12 dạng bài tiêu biểu.

Trong khóa học, chúng tôi đã tuyển chọn 12 bài toán mà nhiều người nhất đã giải và gặp khó khăn trong số các bài toán nhập môn DFS (hạng Silver 4–2) trên Baekjoon. Sau đó, chúng tôi chia chúng thành 2 dạng nhỏ và tổng hợp các khái niệm cốt lõi cần thiết cho từng dạng. Các dạng bài và bài toán cụ thể như sau.

Dạng 1. Dạng tìm các thành phần liên thông

  • Virus (2606) (công khai miễn phí)
  • Số lượng thành phần liên thông (11724)
  • Lớp học thuật toán - Duyệt theo chiều sâu 1 (24479)
  • Bài học thuật toán - Tìm kiếm theo chiều sâu 2(24480)
  • DFS và BFS(1260)
  • Tính số bậc quan hệ họ hàng (2644)
  • Tìm cha của cây (11725)

Dạng 2. Tìm các đối tượng cùng loại

  • Cải thảo hữu cơ (1012) (Công khai miễn phí)
  • Xâm nhập (13565)
  • Số lượng đảo (4963)
  • Trang trí sàn nhà (1388)
  • Vua nhảy Jelly (Nhỏ) (16173)

Vì hiểu cảm giác hoang mang của bạn 
tôi sẽ chỉ cho bạn con đường dễ dàng hơn 🚩

Xin chào :) Tôi bắt đầu là một sinh viên khối ngành xã hội chuyên ngành quản trị kinh doanh/kinh tế, hiện đang làm lập trình viên tại một tập đoàn lớn với 8 năm kinh nghiệm, và là người tìm việc làm lập trình viên.

  • Lập trình viên tại tập đoàn lớn với 8 năm kinh nghiệm
  • Nhà sáng tạo nội dung YouTube về chủ đề việc làm dành cho lập trình viên ( https://www.youtube.com/@gaebal )
  • Giảng viên khóa học nhập môn C++ trên nền tảng Programmers
  • Phụ trách các buổi học trực tiếp Algorithm Quiz Chip trên nền tảng elice và biên soạn tài liệu giải thích (Python/Java/C++)

Khi nghĩ lại việc lần đầu học lập trình cách đây 8 năm, tôi nhớ rằng lúc đó mọi thứ thật mơ hồ và khó khăn. Tuy nhiên, nhờ sắp xếp kiến thức và giải bài theo chiến lược, phương pháp riêng, tôi nghĩ mình đã có thể tìm được việc nhanh hơn và thuận lợi hơn một chút.

Đặc biệt, nếu bạn là người không chuyên và gặp nhiều khó khăn với các bài kiểm tra coding, hãy thử tham gia khóa học do một người không chuyên giảng dạy này, bạn sẽ dễ dàng hiểu được. Rất mong nhận được sự ủng hộ của các bạn! :)

Khóa học nên xem cùng 📺


Hỏi & Đáp 💬

Q. Tại sao khóa học lại ngắn như vậy?

Đối với tôi, với tư cách là giảng viên, việc thêm thật nhiều bài tập để tạo thành một khóa học lớn và tăng giá tương ứng sẽ có lợi nhất. Tuy nhiên, vì phần giải thích/nội dung cần thiết ở mỗi giai đoạn là khác nhau, và trên hết, tôi cân nhắc rằng phần lớn người đăng ký/học viên của mình đều là những bạn đang chuẩn bị xin việc và chưa có thu nhập, nên tôi nghĩ rằng sẽ tốt hơn nếu chia khóa học thành những phần nhỏ nhất có thể và giảm giá. Vì vậy, khóa học được 구성 ngắn và nhỏ hơn so với các khóa học khác.

Q. Nếu không có nhiều bài tập thì có thể hiểu được DFS không?

Vì những lý do trên, tôi đã chia khóa học thành các phần nhỏ, và do đó tôi cũng đang chuẩn bị các khóa học ứng dụng và nâng cao, lần lượt đề cập đến các bài toán cấp độ Gold và Platinum sau khóa học nhập môn. Chính vì vậy, nếu nói rằng “Chỉ cần học khóa này là có thể giải được mọi bài toán DFS!” thì tôi cho rằng đó là hành vi đánh lừa học viên. (Bởi vì dù sao việc tự mình suy ngẫm và học tập vẫn là điều bắt buộc.) Tuy nhiên, điều tôi có thể cam kết là sẽ không có khóa học nào giúp bạn nhập môn DFS một cách dễ dàng như khóa học này, và sau khi hoàn thành khóa học, bạn sẽ có thể tự học cũng như tự mình hiểu về DFS. Vì vậy, tôi có thể tự tin giới thiệu khóa học này đến những người không cần các video chỉ hướng dẫn lời giải đơn thuần mà muốn học cách “tự câu cá”.

Q. Trên YouTube cũng có lời giải mà, chẳng phải cũng giống nhau sao?

Mạch nội dung chính là giống nhau, nhưng do đặc thù của YouTube, video không thể quá dài nên tôi đã lược bỏ phần lớn các phần giải thích bổ sung. Vì vậy, nhiều người đăng ký cũng đã đặt câu hỏi trong phần bình luận và bày tỏ sự tiếc nuối. Để giải tỏa những nuối tiếc đó, tôi đã quyết định xây dựng khóa học trực tuyến này.

Tôi đã trình bày nội dung theo cách dễ hiểu và súc tích nhất có thể về mọi điều tôi biết. Trên thực tế, vấn đề vi-rút và cải thảo hữu cơ cũng được cung cấp miễn phí trong khóa học đó và đã được đăng lên YouTube. Có lẽ sẽ dễ đánh giá hơn nếu bạn trực tiếp xem cách nội dung được tóm tắt ngắn gọn trên YouTube được giải thích chi tiết hơn như thế nào trong khóa học này, nên mong bạn tham khảo!

Q. Nếu đặt câu hỏi thì mất bao lâu mới nhận được phản hồi?

Nếu không có việc đặc biệt, tôi sẽ trả lời trong vòng 24 giờ theo giờ làm việc, và dù muộn nhất thì cũng sẽ trả lời trong vòng 72 giờ. Bản thân tôi đã tham gia khá nhiều khóa học trực tuyến và nhận thấy rằng khi giảng viên trả lời nhanh, nhịp độ học tập cũng được đẩy nhanh, vì vậy tôi cho rằng việc học có thể hiệu quả hơn so với các khóa học trực tiếp. Tuy nhiên, tôi cũng hiểu rõ rằng khi tốc độ trả lời của giảng viên chậm lại, động lực học tập cũng giảm theo, nên tôi kiểm tra bình luận mỗi ngày và trả lời các câu hỏi!

Q. Có câu hỏi nào không nên hỏi không?

Như tôi vẫn thường nói trong mỗi video, tôi luôn hoan nghênh mọi câu hỏi. Bởi vì phần lớn những điều tôi thắc mắc cũng là những điều các học viên khác tò mò. Tuy nhiên, nếu đặt ra một vài quy tắc thì câu hỏi sẽ hữu ích cho tất cả mọi người hơn.

1. Hãy để lại câu hỏi trong video có liên quan đến câu hỏi đó!

  • Vì mỗi video đều đề cập đến những nội dung khác nhau, nên để mọi người có thể giúp đỡ lẫn nhau, các bạn hãy đăng câu hỏi dưới video liên quan; như vậy câu hỏi sẽ hữu ích cho tất cả mọi người.

2. Vui lòng gửi các câu hỏi liên quan đến tư vấn cuộc sống, việc làm, v.v. thông qua mục cố vấn.

  • Vì những câu hỏi như thế này có thể có câu trả lời khác nhau tùy theo tình huống của mỗi người, nên nếu bạn đặt câu hỏi cụ thể hơn về trường hợp của mình, tôi cũng có thể đưa ra hướng dẫn chính xác hơn. Nếu trả lời dưới dạng câu hỏi công khai thì chỉ có thể đưa ra những câu trả lời mơ hồ, vì vậy hãy để lại những nội dung như thế trong mục mentoring, tôi sẽ tận tình giải đáp.
  • Liên kết cố vấn: https://inf.run/kCsp

3. Vui lòng gửi cả những câu hỏi kiểu “Tại sao không được?” qua mục mentoring.

  • Vì quá bối rối, đôi khi có người sao chép và dán toàn bộ mã rồi nhờ xem giúp. Những câu hỏi như vậy khó có thể giúp ích cho những người khác, hơn nữa tình huống của mỗi người đặt câu hỏi cũng khác nhau, vì vậy nếu bạn liên hệ riêng thông qua mục mentoring, tôi sẽ giải thích cả phần nào sai, tại sao sai và cần sửa như thế nào!
  • Liên kết mentoring: https://inf.run/kCsp

💾 Vui lòng kiểm tra trước khi tham gia khóa học

  • Về môi trường thực hành, bạn có thể sử dụng bất kỳ OS/IDE nào. Tôi đang sử dụng VS Code trên Windows 11 để viết mã.
  • Tuy nhiên, nếu chuẩn bị sẵn môi trường để trực tiếp viết mã và Build/Debug trước khi tham gia, bạn sẽ có thể theo dõi bài giảng dễ dàng hơn.
  • Tôi cung cấp các PPT được sử dụng trong bài giảng dưới dạng PDF.
  • Giả sử bạn đã hiểu cú pháp cơ bản của Python, chúng ta sẽ tiến hành bài giảng. Những bạn đã từng làm quen với DFS ít nhất một lần sẽ tiếp thu dễ dàng hơn, nhưng cũng có phần giải thích cơ bản ngắn gọn dành cho những bạn chưa biết DFS, nên bạn không cần lo lắng!

Khuyến nghị cho
những người này

Khóa học này dành cho ai?

  • Những người lần đầu làm quen với bài kiểm tra lập trình/thuật toán DFS

  • Những ai từng cảm thấy đầu óc như muốn nổ tung khi cố gắng hiểu hàm đệ quy.

  • Người mới bắt đầu với bài kiểm tra coding, dù biết ngữ pháp nhưng lại trở nên vô cùng lo sợ trước các bài toán.

  • Những bạn hiểu khái niệm DFS nhưng cảm thấy bế tắc vì không nghĩ ra cách giải khi nhìn vào bài toán.

  • Dành cho những ai đã chán lý thuyết và muốn cùng nhau giải bài tập.

  • Những người đang chuẩn bị cho kỳ thi coding test bằng Python

Cần biết trước khi bắt đầu?

  • Cú pháp cơ bản của Python (câu lệnh điều kiện, câu lệnh lặp, câu lệnh nhập/xuất, v.v.)

Xin chào
Đây là gaebaljob

649

Học viên

69

Đánh giá

76

Trả lời

5.0

Xếp hạng

2

Các khóa học

Chào bạn, tôi là Giảng viên "Trở thành lập trình viên", người chuyên dạy các khóa học thuật toán mà ngay cả sinh viên khối Xã hội cũng có thể hiểu được :)
Xuất thân là một sinh viên khối Xã hội, hiện tại tôi đã là lập trình viên với 8 năm kinh nghiệm tại một tập đoàn lớn. Nhớ lại những ngày đầu mới tiếp cận với lập trình và chuẩn bị cho các kỳ thi Coding Test đầy mông lung, tôi luôn trăn trở làm thế nào để giải thích mọi thứ dễ dàng hơn một chút, để ngay cả những người không chuyên thuộc khối Xã hội như tôi cũng có thể hiểu và tiếp thu được các công nghệ mới, và đó là lý do tôi tạo ra các bài giảng này.
Tôi cũng đang triển khai các bài giảng miễn phí thông qua YouTube, rất mong nhận được sự quan tâm của các bạn!
https://www.youtube.com/@gaebal

Thêm
Ngày đăng: 
Cập nhật lần cuối: 

Đánh giá

Tất cả

19 đánh giá

5.0

19 đánh giá

  • busanpsy1255님의 프로필 이미지
    busanpsy1255

    Đánh giá 1

    ∙

    Đánh giá trung bình 5.0

    5

    100% đã tham gia

    Đây là một bài giảng chất lượng. Bây giờ tôi cuối cùng cũng bắt đầu hiểu rõ hơn về cách tiếp cận kiểu DFS. Tôi sẽ ôn lại để hoàn thiện kiến thức của mình! Tôi thực sự mong đợi bài giảng tiếp theo.

    • gaebaljob
      Giảng viên

      Cảm ơn jobababa vì đã đánh giá cao khóa học của chúng tôi! :)

  • limeorange님의 프로필 이미지
    limeorange

    Đánh giá 2

    ∙

    Đánh giá trung bình 5.0

    5

    100% đã tham gia

    Nhờ bài giảng này mà tôi có thể hiểu rõ khái niệm DFS. Khi nghĩ lại về tất cả những lần tôi dành thời gian học một mình, tôi cảm thấy hối tiếc rằng tôi có thể học hiệu quả hơn nếu tôi có một giáo viên tuyệt vời như vậy hướng dẫn tôi sớm hơn, nhưng tôi cũng cảm thấy biết ơn vì bây giờ tôi có thể học đúng cách. Đây là một bài giảng thật quý giá. Chỉ cần nhìn vào cách bạn truyền đạt bài giảng một cách dễ hiểu, tôi có thể thấy rằng bạn có năng lực đáng kể. Tôi có thể tưởng tượng rằng bạn hẳn rất bận rộn trong nhiều việc, nhưng... Tôi vẫn hy vọng rằng bạn sẽ nhanh chóng tạo ra các khái niệm thuật toán khác và các bài giảng chuyên sâu!! Tôi sẽ chờ đợi trong nôn nóng😊😊^_😭 Cảm ơn bạn một lần nữa vì đã dành thời gian tạo ra một bài giảng chất lượng~~!!

    • gaebaljob
      Giảng viên

      sapienslee, cảm ơn bạn đã viết đánh giá khóa học tuyệt vời như vậy! Tôi sẽ cố gắng nhiều hơn để tạo ra những khóa học tốt hơn :) Cảm ơn bạn!

  • 16207486323님의 프로필 이미지
    16207486323

    Đánh giá 2

    ∙

    Đánh giá trung bình 5.0

    5

    100% đã tham gia

    Đó là một lớp học thích hợp cho người mới bắt đầu.

    • gaebaljob
      Giảng viên

      Bocheon, cảm ơn bạn rất nhiều vì đã để lại nhận xét!! Mình sẽ up thêm nhiều bài giảng hay nữa!!

  • dydwls21251069님의 프로필 이미지
    dydwls21251069

    Đánh giá 1

    ∙

    Đánh giá trung bình 5.0

    5

    68% đã tham gia

    k

    • wnstjd27548253님의 프로필 이미지
      wnstjd27548253

      Đánh giá 1

      ∙

      Đánh giá trung bình 5.0

      5

      100% đã tham gia

      Ở Baekjun, tôi chỉ giải các bài toán thực hiện độ khó đồng, nhưng khi thử giải các bài toán bạc, tôi có cảm giác như mình sẽ không thể làm được nếu không học thuật toán. Vì vậy tôi đã thử nhiều thuật toán khác nhau nhưng tôi thực sự không biết gì về DFS. Tôi cảm thấy như mình không hoàn toàn hiểu được. Như bất kỳ ai giải quyết được một vấn đề đều biết, nếu tôi không hiểu hết về nó, tôi sẽ không bao giờ có thể biến nó thành của riêng mình. Sau đó tôi tìm thấy khóa học này và tham gia khóa học miễn phí và nó rất tốt. Nhờ đó em đã giải được và hiểu đầy đủ tất cả các vấn đề có trong bài giảng. Nếu không có bài giảng này, có lẽ tôi đã mất nhiều thời gian hơn và căng thẳng hơn. Cảm ơn Nếu tôi muốn thứ gì đó hơn thế nữa, sẽ thật tuyệt nếu vấn đề được giải quyết ở cấp độ vàng. Tôi hơi thất vọng vì có nhiều vấn đề tương tự. Đó vừa là ưu điểm vừa là nhược điểm, và mặc dù nó có thể được coi là lợi thế đối với những người thực sự mới bắt đầu sử dụng DFS và muốn cảm nhận về nó, nhưng nó có thể khiến những người có một số kinh nghiệm cảm thấy hơi thất vọng. . Nhưng nhờ có bạn, tôi rất vui vì đã hiểu được DFS. Cảm ơn bạn đã tạo ra khóa học. chúc một ngày tốt lành!

      • gaebaljob
        Giảng viên

        안녕하세요 준성님 :) 이렇게 진심을 담아 수강평을 남겨주셔서 감사합니다. 비슷한 문제가 많다는 부분은 사실 고려하지 못했던 부분이라 조금 더 고민해보고 문제를 추가하거나 골드 문제들을 따로 묶어서 진행해볼게요. 다음에 더 좋은 강의로 찾아 뵙겠습니다!

    Khóa học tương tự

    Khám phá các khóa học khác trong cùng lĩnh vực!

    Miễn phí