0% found this document useful (0 votes)
36 views

Problem Solving Techniques

The document discusses various problem solving techniques for computational problems including factoring and recursion, greedy algorithms, divide and conquer techniques, and algorithms for searching, sorting, text processing and pattern matching. It provides an overview of the problem solving process which involves understanding the problem, breaking it down, designing an algorithm, writing pseudocode, coding, debugging, testing, optimizing, documenting, validating, refining, deploying, and maintaining solutions. Quicksort, Merge Sort, and the Closest Pair of Points problem are given as examples.

Uploaded by

tsanushya82
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
36 views

Problem Solving Techniques

The document discusses various problem solving techniques for computational problems including factoring and recursion, greedy algorithms, divide and conquer techniques, and algorithms for searching, sorting, text processing and pattern matching. It provides an overview of the problem solving process which involves understanding the problem, breaking it down, designing an algorithm, writing pseudocode, coding, debugging, testing, optimizing, documenting, validating, refining, deploying, and maintaining solutions. Quicksort, Merge Sort, and the Closest Pair of Points problem are given as examples.

Uploaded by

tsanushya82
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 2

Problem Solving Techniques- Factoring and Recursion Techniques, Greedy Techniques, Divide

and Conquer- Search and Sort algorithms- Text processing and Pattern matching. Tool: iPython

Computational problem solving involves using algorithms, programming, and


computational thinking to tackle complex problems. The process can be broken down
into several steps:

1. Understanding the Problem:Clearly define the problem and its


requirements.Understand the input data and the desired output.Identify
any constraints or limitations.
2. Breaking Down the Problem:Divide the problem into smaller sub-
problems or tasks.Identify the main components or steps needed to
solve the problem.
3. Algorithm Design:Create a high-level plan or algorithm for solving
each sub-problem.Choose appropriate data structures and techniques
for organizing and manipulating data.Consider the efficiency of the
algorithm and potential trade-offs.
4. Pseudocode or Flowchart:Write pseudocode (a human-readable
description of the algorithm) or create a flowchart to outline the logical
steps.
5. Coding:Translate the algorithm into a programming language.Write the
code, following best practices for readability and maintainability.Test
individual components as you write the code.
6. Debugging and Testing:Test the code with various inputs to ensure
correctness and identify errors.Debug and fix any issues that arise
during testing.Consider edge cases and boundary conditions.
7. Optimization:Analyze the code's performance and identify
bottlenecks.Optimize the code for speed and memory usage if
needed.Use profiling tools to find areas that can be improved.
8. Documentation:Document the code by adding comments explaining
its logic and purpose.Create user documentation or guides if the
program is meant for others to use.
9. Testing and Validation:Conduct comprehensive testing to ensure the
program works as expected.Validate the output against expected
results.Address any issues or unexpected behaviors that arise during
testing.
10. Refinement:Review the code and algorithm for any potential
improvements.Consider alternative solutions or optimizations.Refactor
the code to improve readability and maintainability.
11. Deployment:If applicable, prepare the program for deployment to its
intended environment.Ensure that all necessary dependencies are
included.Perform final testing in the deployment environment.
12. Maintenance:Monitor the program's performance in real-world
usage.Address any bugs or issues that users encounter.Make updates or
improvements as needed over time.
Throughout these steps, effective problem-solving skills, logical thinking, attention to
detail, and knowledge of programming languages and tools play crucial roles in
successfully solving computational problems.

1. Quicksort is a sorting algorithm. The algorithm picks a pivot element


and rearranges the array elements so that all elements smaller than the
picked pivot element move to the left side of the pivot, and all greater
elements move to the right side. Finally, the algorithm recursively sorts
the subarrays on the left and right of the pivot element.
2. Merge Sort is also a sorting algorithm. The algorithm divides the array
into two halves, recursively sorts them, and finally merges the two sorted
halves.
3. Closest Pair of Points The problem is to find the closest pair of points
in a set of points in the x-y plane. The problem can be solved in O(n^2)
time by calculating the distances of every pair of points and comparing
the distances to find the minimum. The Divide and Conquer algorithm
solves the problem in O(N log N) time.

You might also like