Week 62: CST370 - Design and Analysis of Algorithms
WK03: Weekly Reflection
This week's module focused on brute force string matching, exhaustive search, depth-first search, breadth-first search, and the introduction to divide and conquer algorithm design. These topics helped me understand different ways algorithms solve problems, from simple direct methods to more organized search and problem-solving strategies.
One thing that stood out to me was brute force string matching. I learned that brute force approaches are often easy to understand because they try possible solutions directly, but they may not always be efficient for large inputs. The examples with string matching helped me see how an algorithm can compare characters step by step and still become expensive as the input grows.
The exhaustive search topics were also useful because they showed how some problems can be solved by checking every possible option. The lectures on the traveling salesperson problem, knapsack problem, and assignment problem helped me understand why exhaustive search can guarantee a correct answer but may require a huge amount of time. This connected well with last week's focus on time efficiency because it showed why analyzing growth rates matters in real problem solving.
I also learned about depth-first search and breadth-first search. Depth-first search helped me understand how an algorithm can explore one path deeply before backtracking, while breadth-first search explores level by level. Comparing DFS and BFS made me think more carefully about how different search strategies affect the order in which a problem is explored. The time efficiency videos and exercises were helpful because they showed that these algorithms can be analyzed systematically, especially when working with graphs.
The divide and conquer materials introduced another important strategy. I learned that divide and conquer solves problems by breaking them into smaller subproblems, solving those subproblems, and then combining the results. The Master Theorem lecture was challenging, but it gave me a useful tool for analyzing recursive algorithms more efficiently.
Overall, this week helped me see that algorithm design is not only about finding an answer, but also about choosing the right strategy. My main takeaway is that brute force and exhaustive search are simple and reliable but can become inefficient, while DFS, BFS, and divide and conquer offer more structured ways to solve problems.
Comments
Post a Comment