This topic focuses on the computational methods used to solve problems, emphasizing the identification of features that make a problem solvable by computat
Topic Synopsis
This topic focuses on the computational methods used to solve problems, emphasizing the identification of features that make a problem solvable by computational means. It covers key techniques such as problem recognition, decomposition, divide and conquer, and abstraction, alongside advanced methods like backtracking, data mining, heuristics, performance modelling, pipelining, and visualisation.
Key Concepts & Core Principles
- Big O notation: Describes the worst-case time complexity of an algorithm, e.g., O(n), O(log n), O(n^2). Understand how to derive it from code or pseudocode.
- Divide and conquer: A strategy used by merge sort and quick sort where a problem is split into smaller subproblems, solved recursively, and combined.
- Graph traversal: Depth-first search (DFS) uses a stack (or recursion) to explore as far as possible along each branch before backtracking; breadth-first search (BFS) uses a queue to explore all neighbours at the current depth first.
- Dijkstra's algorithm: Finds the shortest path from a start node to all other nodes in a weighted graph with non-negative weights. Uses a priority queue to select the node with the smallest tentative distance.
- A* algorithm: An extension of Dijkstra's that uses a heuristic (e.g., Euclidean distance) to estimate the remaining distance, making it more efficient for pathfinding in games and maps.
Exam Tips & Revision Strategies
- Always justify your choice of computational method with reference to the specific problem constraints
- When asked about divide and conquer, clearly explain the recursive nature of the process
- Use clear, concise examples when describing how data mining or heuristics can be applied
- Ensure you can distinguish between the theoretical model and the practical implementation of an abstraction
Common Misconceptions & Mistakes to Avoid
- Confusing abstraction with simple omission of detail
- Failing to justify why a problem is amenable to a computational approach
- Misapplying heuristics in scenarios where a deterministic algorithm is more appropriate
- Neglecting to consider the performance implications of chosen computational methods
Examiner Marking Points
- Ability to identify features that make a problem solvable by computational methods
- Correct application of problem decomposition and divide and conquer strategies
- Effective use of abstraction to simplify complex problems
- Application of backtracking, data mining, and heuristics to solve specific problem types
- Understanding of performance modelling and pipelining in the context of computational efficiency
- Use of visualisation techniques to represent and solve problems