2.2.2 Computational Methods Flashcards
Computable Problems
Computable Problems : A problem is computable if it can be solved with an algorithm within finite number of clearly defined steps.
Features that make solvable :
- Can be solved in realistic, finite length of time
- Involves calculations
- Has inputs and outputs
Problem Recognition
Problem Recognition : Identify there is a problem to be solved and if the problem can be solved with computational methods.
- Consider and identify Inputs and Outputs.
- Consider strengths and weaknesses of current solution.
- Identify what challenges there may be and what additional information is required before starting to code the solution
- identification of the key features for programmers to focus on
Problem Decomposition Advantages
Advantages :.
- Sub-routines can be reused - stored in library for other program or called multiple times in same program - saves time to reprogram.
- Sub-problems split between programmers - faster development as worked on concurrently and can specialize in their area.
- Improved Debugging and maintainability - Easier to find errors in smaller self-contained modules and then can combine once tested modules individually.
- Smaller sub problems easier to solve as easier to read and understand - increased efficiency.
Problem Decomposition
Decomposition : Identify main problem and continually break down into component sub-problems until each one identifies identifiable task
- Sub-problems can be programmed as separate self-contained subroutines.
- Sub-problems can be split between programmers and developed concurrently.
Divide and Conquer
Divide and Conquer : Splits big problem into smaller parts,
- reducing size each iteration
- Solve smaller sub-problems
- then combine to provide solution once each solved.
- Often uses recursion
E.g. In Quick sort :
- Data sets split into smaller sub sets
- Then sorting each split subset
- Until each subset sorted – one item
- Then combine subsets together to provide solution
Advantages :
- Greatly simplifies complex problem - easier to solve
- As program grows, time taken to solve doesn’t increase as much
Disadvantages :
- Not all problems can be broken doesn’t and solved independently
- Makes use of recursion - stack overflow may cause crash
Problem Solving Strategies - Backtracking
Backtracking : Suited when a series of decisions must be made with little information where each decision leads to new choices.
- Logical approach to checking all options and not check twice
Process:
- When path has no more paths to visit
- Algorithm goes back to previous decision point
- To check for further paths to visit
- (Backtracks back to last point with unvisited paths)
- Repeat until no more unvisited paths
Advantages :
- Guaranteed to find solution if one exists
- Easy to implement and use
Disadvantages :
- It can consume a lot of memory
- If multiple solutions, it may not find the best or most efficient solution
(Apply to question - node, leaf node, parent node etc)
Data Mining
Data Mining : Process of turning big data into useful information by searching for relationships.
- Involves searching through unconnected data and finding a correlation with pattern recognition algorithms.
- Algorithms can brute force with high-speed computers
Data Mining Advantages and Disadvantages
Advantages :
- Can be used to discover hidden trends and predict future events / demands.
- Can be used to improve marketing to increase sales.
- Can be used in business modelling to plan future.
- Can be used to see where to focus attention / disregard - what’s being used or not used (website features)
Disadvantages :
- Requires powerful computers
- Privacy concerns around data (and data protection)
- Inaccurate data produces false results.
Heuristics
Heuristics : Finding an estimated approximate solution that is good enough where problem is very complex and not realistically solvable (unreasonably time-consuming or resource intensive).
- often makes use of experience to find solution quickly
- Decreased Accuracy trade off with increased speed
Performance Modelling
Performance Modelling : is when the behaviour of something is tested or simulated before it is used in the real world.
- Used for evaluating and predicting the performance characteristics and limits of a software system before it is used.
- e.g. Testing with large number of simultaneous orders or with large number of customers/items
Performance Modelling Advantages and Disadvantages
Advantages :
- Stress testing can ensure a system can cope with a large set of data or a large number of users.
- You are able to predict problems and act on them before the problems actually occur in the real world.
Disadvantages :
- The outcome of performance modelling is only as useful as the accuracy of the data that is fed into it
- If the rules that made up the model are wrong then it will produce incorrect results.
Pipelining
Pipelining : Process of dividing modules into individual tasks that are developed in parallel.
- Carries out multiple instructions concurrently
- Allows projects to be delivered faster
- Output of one process becomes input for another
Visualisation
Visualisation : Helps make problems easier to solve by presenting in simpler and easy to understand way - often graphical or visual representation e.g. Flowcharts.
- Benefit humans not computers by simplifying concepts.
- Best explain complex situation so programmers get better understanding.