Module 2 Notes
Module 2 Notes
SEARCH ALGORITHMS
Agenda
Solving Problems by Searching
Problem-Solving Agents,
Example Problems,
Searching for Solutions
Uninformed Search Strategies
Breadth-first Search,
Depth-first Search and DFS variations,
Lowest-cost-first Search,
Informed (Heuristic) Search Strategies
Greedy Best-first Search,
A* search,
Recursive Best First Search,
Heuristic Functions.
Beyond Classical Search
Local Search Algorithms and Optimization Problems
Hill-climbing Search and variations to resolve
problems with steepest ascent
Genetic Algorithms.
Perceiving the environment: They collect data about their surroundings such as sensor
inputs or observations.
Defining the problem: They clearly understand the problem including the starting point,
the available actions and the desired goal.
Exploring different possibilities: They consider various ways to solve the problem and
evaluate which approach is likely to succeed.
Evaluating and deciding: Once they explore options, they assess the outcomes and pick
the best course of action based on factors like time, resources and success likelihood.
Learning and adapting: Many problem-solving agents can learn from past experiences,
improving their decision-making abilities over time.
Problem Definition: First, the problem needs to be clearly defined. This includes
understanding the inputs, constraints and what the solution should look like.
Problem Analysis: Once the problem is defined, analysed in more detail. This helps in
understanding its limitations and possible solutions.
Knowledge Representation: All the important information is organized so the AI can
understand and work with it. This could include creating graphs or using databases.
Problem Solving: AI uses appropriate methods to solve the problem. This often means
comparing different strategies to find the most efficient one.
Testing and Evaluation: Finally, after the solution is implemented, testing and evaluation
ensure the solution meets all requirements and performs as expected.
Initial State: This is the starting point of the problem where the AI begins its process. It
sets the context and helps identify how the agent will approach the challenge.
Action: At this stage, AI identifies all the possible actions it can take from the initial state.
Each action has an impact on how the system moves closer to solving the problem.
Transition: This refers to how the system changes from one state to another after an action
is taken. Transition modeling helps show how the actions influence the next steps.
Goal Test: Once an action is taken, AI checks if it has reached its goal. If the goal is
achieved, the problem-solving process stops and the solution is considered complete.
Cost Function: This step assigns a numerical value to the cost of achieving the goal. The
cost can include resources like time, energy or money and helps decide the most efficient
way to reach the goal.
Definition: The amount of time an algorithm takes to find a solution, often expressed
in terms of input size.
Example: Depth-First Search (DFS) has a worst-case time complexity of O(b^d), where
b is the branching factor and d is the depth of the solution.
4. Space Complexity
Definition: For heuristic search algorithms (like A*), the heuristic is admissible if it never
overestimates the true cost to reach the goal.
Example: In route planning, using straight-line distance as a heuristic is admissible
because it never overestimates the actual travel distance.
4. Robot Navigation
Planning a sequence of moves for a robot to reach a target location avoiding obstacles.
6. Scheduling Problems
Assigning tasks to resources over time to optimize efficiency or meet constraints.
8. Network Routing
Determining the best path for data packets through a network.
9. Sudoku Solver
Filling in a grid with digits to satisfy the game's rules.
AI Search Algorithms
AI search algorithms are methods used to navigate and solve problems by exploring possible states
or solutions systematically. Here's a general overview of the main types:
These algorithms do not have any additional information about states beyond the problem
definition. They explore the search space systematically.
Breadth-First Search (BFS): Explores all nodes at the current depth before moving to the
next level. Guarantees the shortest path in terms of the number of steps.
Depth-First Search (DFS): Explores as deep as possible along each branch before
backtracking. Uses less memory but can get stuck in deep or infinite paths.
Uniform Cost Search (UCS): Expands the least costly node first, useful when costs vary.
Iterative Deepening Search: Combines DFS's space efficiency and BFS's completeness by
increasing depth limits iteratively.
2. Informed (heuristic) search algorithms
These algorithms use heuristics additional information about the goal to guide the search
more efficiently.
Greedy Best-First Search: Selects nodes based on the estimated cost to the goal (heuristic).
Fast but may not find the optimal path.
A* Search: Combines the cost to reach the current node and the estimated cost to the goal.
Finds the optimal path efficiently when the heuristic is admissible.
Used for optimization problems where the goal is to find the best solution rather than a path.
Minimax Algorithm: Considers the worst-case opponent moves to decide the best move.
Alpha-Beta Pruning: Enhances Minimax by pruning branches that won't affect the final
decision.
.
Steps:
Shortest Path:
B. Advantages
Finds the shortest path in unweighted graphs.
Simple to implement.
Guaranteed to find a solution if one exists.
C. Disadvantages
Can be memory-intensive for large graphs.
Inefficient for very deep or infinite graphs.
Not suitable for weighted graphs (where Dijkstra's algorithm is preferred).
A. Numerical Example
Consider the following graph (represented as adjacency list):
Starting node: A
Traversal steps:
- Start at A, visit A
- Move to B, visit B
- Move to D, visit D (no further neighbours), backtrack to B
- From B, move to E, visit E
- From E, move to F, visit F
- Backtrack to E, then B, then A
- From A, move to C, visit C
- From C, move to F, but F is already visited
Traversal order:
B. Advantages of DFS
Memory efficient for sparse graphs.
Easy to implement using recursion.
Useful for:
o Detecting cycles
o Topological sorting
o Finding connected components
o Solving puzzles with backtracking (e.g., mazes)
C. Disadvantages of DFS
Not guaranteed to find the shortest path.
Can get trapped exploring deep, irrelevant parts of the graph.
Not suitable for large, complex graphs when optimal solutions are needed.
May not be complete in infinite graphs or graphs with infinite paths.
A. Numerical Example
Explore C (depth 1)
A. Numerical Example
A
/ \
B C
/\ /\
D EF G
Goal node: E
Branching factor (b): 2 (each node has two children, except leaves)
Depth of goal (d): 2 (A -> B -> E)
Search Steps:
Depth limit = 0:
Depth limit = 1:
Explore A (depth 0)
Explore B, C (depth 1) from A
Goal E is at depth 2, not found yet.
Depth limit = 2:
Explore A, B, C
From B: D, E
From C: F, G
Goal E is found at depth 2 from A in the second iteration.
B. Advantages
C. Disadvantages
Repetitive Search: Re-explores nodes multiple times, leading to higher total time in
large trees.
Time Overhead: Slightly slower than BFS in terms of total operations due to
repeated searches.
Not suitable for very deep or infinite spaces unless there is a depth limit.
A. Numerical Example
A-B: 1
A-C: 4
B-D: 2
B-E: 3
C-E: 1
C-F: 2
Expand D (cost=3).
D has no further neighbors to goal.
Open list: [(E, cost=4), (C, cost=4)].
Expand E (cost=4).
Neighbors: C (already in open with same cost), F (cost=4+2=6).
Open list: [(C, 4), (F, 6)].
Expand C (cost=4).
Neighbors: E (already in open), F (cost=4+2=6).
Open list: [(F, 6), (F, 6)].
Expand F (cost=6).
Goal reached with total cost = 6.
B. Advantages
C. Disadvantages
Heuristic Function (h(n)): Estimates the cost from node n to the goal.
Optimality: Many informed search strategies can guarantee the shortest path if the heuristic
is admissible (never overestimates the true cost).
Efficiency: They typically explore fewer nodes compared to uninformed strategies, making
them faster.
Guided Search: Use of heuristics directs the search toward promising paths.
Working Principle:
1. Initialization: Start from the initial node.
2. Evaluation: Use the heuristic function to estimate the total cost (f(n) = g(n) + h(n)) where
g(n) is the cost from the start node to node n.
3. Selection: Choose nodes for expansion based on their estimated total cost.
4. Expansion: Generate successor nodes and evaluate their costs.
5. Termination: Continue until the goal node is reached or no nodes are left to explore.
A* Search: Combines g(n) and h(n) for optimal and efficient search.
Greedy Best-First Search: Uses only h(n) to guide the search, faster but not always optimal.
A. Definition:
Greedy Best First Search is a heuristic search algorithm that expands the node that appears to be
closest to the goal, based on a heuristic function h(n). It "greedily" chooses the path that seems
best at each step, aiming to find the shortest path to the goal efficiently.
B. Properties:
C. Working Principle:
Note: GBFS only considers the heuristic h(n), ignoring the cost travelled so far (g(n)).
Imagine a graph with nodes, where arrows indicate possible paths, and heuristic values h(n) are
shown at each node:
Step 1: Start at "Start" with h=7.
Step 2: Expand to the node with the lowest h-value: Node B (h=2).
Step 3: From Node B, reach the goal directly.
GBFS prioritizes nodes based solely on heuristic estimates, leading to a potentially quick path if
heuristics are accurate.
D. Advantages:
E. Disadvantages:
2. A* search
A. Definition
A* (A-star) search is a popular and powerful graph traversal and pathfinding algorithm used to
find the shortest path from a start node to a goal node efficiently. It combines features of uniform-
cost search and greedy best-first search by considering both the actual cost to reach a node and an
estimated cost to reach the goal.
B. Properties
Optimality: A* guarantees the shortest path if the heuristic is admissible (never
overestimates the true cost).
Completeness: It will find a solution if one exists.
Efficiency: Uses heuristics to prune paths and reduce search space.
Heuristic Function (h(n)): Estimates the cost from node n to the goal.
Cost Function (g(n)): Actual cost from start to node n.
Evaluation Function (f(n)): Sum of g(n) and h(n), i.e., `f(n) = g(n) + h(n)`.
C. Working Principle
1. Initialization: Start with a priority queue (open list) containing the start node with
`f(start) = h(start)`.
2. Selection: Pick the node with the lowest `f(n)` from the open list.
3. Expansion: Expand the node, generate its successors.
4. Evaluation: For each successor:
- Calculate `g(n)` (cost from start to successor).
- Estimate `h(n)` (heuristic estimate to the goal).
- Calculate `f(n) = g(n) + h(n)`.
- If the successor is not in the open list or has a lower `f(n)`, add/update it.
5. Termination: Repeat until the goal node is reached or the open list is empty.
6. Path Reconstruction: Trace back from the goal node to start via parent pointers to get
the shortest path.
D. Advantages
Finds the shortest path efficiently with a good heuristic.
More efficient than uniform-cost search when the heuristic is informative.
Complete and optimal with an admissible heuristic.
E. Disadvantages
Performance depends heavily on the quality of the heuristic.
Can be memory-intensive due to storing all generated nodes.
Not suitable if no good heuristic is available.
Can be slow if the heuristic is non-admissible or poorly designed.
F. Numerical Example
Scenario:
in the following grid:
Start node: S (at cost 0)
Goal node: G
Numbers in parentheses are the heuristic estimates (h) to reach G from each node.
Step-by-step Solution:
Step 1: Initialize
Open list: contains start node S with f(S) = g(S) + h(S) = 0 + 4 = 4.
Closed list: empty.
Step 2: Expand S
Calculate f:
For G:
f(G) = 3 + 0 = 3
For C:
Final Path:
Total cost = 3
A. Definition
Recursive Best-First Search (RBFS) is an informed search algorithm that explores the most
promising path based on an evaluation function (like A*), but it uses limited memory by storing
only a single path from the root to a leaf node, and backtracks when necessary. It recursively
searches down the most promising node, and if it finds that this path exceeds the current bound
(threshold), it backtracks and explores alternative paths.
B. Properties
C. Working Principle
1. Start at the root node, compute its f(n) value (heuristic estimate).
2. Recursively explore the child node with the lowest f(n) value.
3. Maintain a threshold (limit) which is the best f(n) value seen so far.
4. If a node's f(n) exceeds the limit, backtrack and update the limit with the next best
alternative.
5. Repeat until the goal node is found or all paths are exhausted.
RBFS begins at the root, explores the child with the lowest f(n) (say, node A with f=10).
It recursively explores down to node A's children, updating the limit as it backtracks.
If it encounters a node with f(n) exceeding the limit, it backtracks and tries other paths.
D. Advantages
E. Disadvantages
Suppose we want to find a goal node in a tree with the following structure, where each node has
an f(n) value (estimated total cost):
Goal node: C (found at depth 2)
At node A:
Children: C (f=5) and D (f=9)
Goal: C (f=5), which is promising.
Return success, but as RBFS proceeds, it updates the limit to the next best alternative.
After exploring A's children, compare the f value of D (9) with the current limit.
If the current limit was less than 9, RBFS would backtrack and explore other branches (like
B).
A. Definition
A heuristic function is an informed guess or estimate used in search algorithms to evaluate how
close a given state is to the goal state. It guides the search process more efficiently by prioritizing
which paths to explore, often leading to faster solutions in complex problems.
B. Properties
Admissibility
The heuristic never overestimates the true cost to reach the goal.
Ensures optimality in algorithms like A*.
Consistency (Monotonicity)
For every node n and successor n', the estimated cost satisfies:
Ensures that the estimated cost is non-decreasing along a path, which is beneficial for
certain algorithms.
Informativeness
The heuristic provides meaningful guidance and distinguishes among different states
effectively.
C. Working Principle
Concept:
Imagine a search space as a graph where nodes are states and edges are actions with associated
costs.
The heuristic function estimates the cost from a node n to the goal node G.
Heuristic estimates:
h(C) = 2
h(D) = 0 (since D is goal)
h(A) = 3
h(B) = 1
How it works:
Faster Search: Reduces the number of nodes explored by guiding the search toward
promising paths.
Optimal Solutions (with admissible heuristics): Guarantees finding the best
solution in algorithms like A*.
Efficiency in Complex Problems: Particularly useful in large, complex search spaces
like pathfinding and puzzle solving.
Problem: Find the shortest path from Start (S) to Goal (G) in the following graph:
Edges are labelled with their costs.
The goal is to find the shortest path from S to G.
Solution
Suppose we estimate the straight-line (Euclidean) distances from each node to the goal G:
S 4
A 2
B 2
G 0
Initial State: S
g(S)=0
f(S)=g(S)+h(S)=0+4=4
Neighbors of S:
A: g(A)=2, f(A)=2+2=4
G: g(G)=1 (direct edge), f(G)=1+0=1
Since f(G)=1 is lowest, we explore G directly.
Result:
Path: S G
Total cost: 1
This is the shortest path, and the heuristic helped guide the search efficiently.
Local Search Algorithms are a class of heuristic algorithms used to solve complex optimization
problems, especially when exact methods are computationally infeasible. They iteratively improve
a solution by exploring its neighboring solutions until no further improvement is possible or a
stopping criterion is met.
Key Concepts
Solution Space: The set of all possible solutions. For many problems, this space is vast
and complex.
Neighborhood: The set of solutions that are "close" or "similar" to a current solution,
often defined by small modifications.
Current Solution: The solution being evaluated or improved at each step.
Local Optimum: A solution that is better than all its neighbors but not necessarily the
best overall (global optimum).
Hill climbing is a simple and intuitive optimization algorithm used to find a solution to a problem
by iteratively making small changes to the current state and selecting the neighbor that improves
the objective function.
Key Concepts:
Main Steps:
Advantages Disadvantages
Simple to implement. Can get stuck in local maxima, minima,
Efficient for problems with smooth or plateaus.
search spaces. Does not guarantee finding the global
optimum.
Variants:
Steepest Ascent Hill Climbing: Considers all neighbors at each step and chooses the best.
Simple Hill Climbing: Considers neighbors one at a time and moves to the first better one
found.
Randomized Hill Climbing: Introduces randomness to escape local optima.
Use Cases:
A. Overview
A simple hill-climbing search algorithm is a mathematical optimization technique used to find the
maximum or minimum of a function. It is an iterative algorithm that starts with an arbitrary
solution and then makes small changes to the solution, each time moving in the direction that
improves the objective (either increasing or decreasing the value). The process continues until no
further improvements can be found.
Key idea: "Climb" towards the best solution by local improvements, similar to climbing a hill to
reach the peak.
B. Working Principle:
1. Start with an initial solution (point).
2. Evaluate the neighboring solutions (small changes from current).
3. Move to the neighbor with the best improvement.
Repeat steps 2 and 3 until no neighbor improves the current solution.
The current solution at this point is considered a local optimum.
Note: Hill-climbing can get stuck in local maxima/minima and may not find the global optimum.
Step-by-step Solution:
Initial guess: x=0
Evaluate neighbors: Let's consider neighbors at x
Calculate:
f
f
f
Choose best neighbor: x=1 with f(1)=0
Move to =1
Next neighbors: x=0,2
f
f
Best neighbor: x=2 with f(2)=3
Move to x=2x=2 =2
Next neighbors: x=1,3
2
f
f(1)=0
Best neighbor: x=3 with f(3)=4
Move to =3
Check neighbors: x=2,4
2
f
f(2)=3
Both neighbors give f=3, which is less than current 4, so no improvement.
Result: The algorithm stops at x=3, the local maximum (which is also the global maximum in this
case).
A. Overview
B. Working Principle:
1. Start with an initial solution (a point in the search space).
2. Evaluate neighbors: Generate all neighboring solutions (states adjacent to the current
one).
3. Select the best neighbor: Among all neighbors, choose the one with the highest value
of the objective function (or the greatest improvement).
4. Move to the best neighbor: If this neighbor is better than the current solution, move
to it.
5. Repeat: Continue the process until no neighbor is better than the current solution
(local maximum is reached).
C. Numerical Example
Solution: Step-by-step
In this case, when at x=2, the neighbors are x=1 and x=3. The best neighbor is x=3 with f=3,
which is less than f=4 at x=2. Since no neighbor is better than current, the search stops.
Result: The algorithm converges at x=2 with f=4, which is the local maximum (and also the global
maximum for this parabola).
A. Overview
This randomness allows the search to potentially escape local maxima by not always choosing the
absolute best neighbor.
C. Numerical Example
f(x) = - (x - 3)2 + 10
Solution
Iteration Steps
Explanation:
Note: The randomness in selecting among better neighbors allows some variation in the path,
potentially helping to escape local maxima if they existed.
Problem 1: Local Maximum: A local maximum is a peak state in the landscape which
is better than each of its neighbouring states, but there is another state also present
which is higher than the local maximum.
o Solution: Backtracking technique can be a solution of the local maximum in state space
landscape. Create a list of the promising path so that the algorithm can backtrack the
search space and explore other paths as well.
Problem 2: Plateau: A plateau is the flat area of the search space in which all the
neighbour states of the current state contain the same value, because of this algorithm
does not find any best direction to move. A hill-climbing search might be lost in the
plateau area.
o Solution: The solution for the plateau is to take big steps while searching, to solve the
problem. Randomly select a state which is far away from the current state so it is
possible that the algorithm could find non-plateau region.
Problem 3: Ridges: A ridge is a special form of the local maximum. It has an area
which is higher than its surrounding areas, but itself has a slope, and cannot be
reached in a single move.
o Solution: With the use of bidirectional search, or by moving in different directions,
we can improve this problem.
2. Simulated Annealing
A. Overview
Iteration 1:
x=0
Generate neighbor: xnew = 0 + 0.5 = 0.5
2 2 2 2
E=f(0.5) f(0) = = = =
Since E<0, accept the new solution.
Update x=0.5
Iteration 2:
T=9
Neighbor: xnew=0.5+0.3=0.8
2 2 2 2
E= = = =
Accept: x = 0.8
And so on, gradually cooling and searching for the minimum near x = 3.
E. Applications of Simulated Annealing
- Traveling Salesman Problem (TSP): Finding the shortest route visiting all cities.
- Job Scheduling: Optimizing task sequences.
- VLSI Design: Circuit layout optimization.
- Machine Learning: Hyperparameter tuning.
- Function Optimization: Complex, multi-modal functions where other methods struggle.
A. Overview
Local Beam Search is a heuristic search algorithm used for solving optimization problems. It
maintains multiple candidate solutions simultaneously and explores their neighborhoods to find
better solutions.
B. Main Ideas
- Instead of keeping only one solution (like in hill climbing), it keeps a
solutions.
- At each iteration, it generates all neighbors of all current solutions.
-
- The process continues until a stopping criterion is met (e.g., solution quality, max iterations).
D. Steps
ndom solutions.
2. Repeat:
- Generate all neighbors of current solutions.
-
- Replace current solutions with these selected neighbors.
3. Terminate when a solution meets criteria or after a certain number of iterations.
E. Numerical Example
Suppose you want to maximize the function:
f(x) = - (x - 3)2 + 10
which has a maximum at x=3.
Setup
- Number of solutions (k) = 2
- Starting solutions: (x1 = 0), (x2= 5)
- Neighborhood: For each solution, neighbors are x 1
Solution:
Iteration 1
- Current solutions: 0, 5
Neighbors:
- For 0: neighbors are -1, 1
- For 5: neighbors are 4, 6
Evaluate neighbors:
f(-1) = -(-1-3)^2 + 10 = -16 + 10 = -6
f(1) = - (1-3)^2 + 10 = -4 + 10 = 6
f(4) = - (4-3)^2 + 10 = -1 + 10 = 9
f(6) = - (6-3)^2 + 10 = -9 + 10 = 1
Select top 2:
- 4 (score 9)
- 1 (score 6)
Update solutions:
- 4, 1
Iteration 2
Neighbors of 4: 3, 5
f(3)= -0 + 10=10
f(5)= -4 + 10=6
Neighbors of 1: 0, 2
f(0)= -9 + 10=1
f(2)= -1 + 10=9
All neighbors:
- 3 (10), 5 (6), 0 (1), 2 (9)
Top 2:
- 3 (10)
- 2 (9)
Update solutions:
- 3, 2
F. Applications
- Optimization problems: Scheduling, routing, machine learning hyperparameter tuning.
- Artificial Intelligence: Pathfinding, game playing.
- Function maximization/minimization: Engineering design, resource allocation.
- Combinatorial problems: Traveling Salesman, knapsack variants.
4. Tabu Search
A. Overview
B. Main idea:
Start from an initial solution.
Explore neighboring solutions.
Move to the best neighbor, even if it doesn't improve the current solution.
Use a tabu list to forbid or penalize certain moves or solutions to promote exploration.
Continue iterating until stopping criteria are met (like a maximum number of iterations).
D. Numerical Example
Suppose we want to minimize the function:
f(x) = (x - 3)2
with x being an integer in the range 0 to 6.
Initial solution: x=0
1, -1 (but Move 2
1 0 1 =4 empty
-1 invalid) to 1
Move 2 (move
2 1 0, 2 2 =1
to 2 to 1)
Move 2 (move
3 2 1, 3 3 =0
to 3 to 2)
Suppose after moving to 3, we reach the minimum 000. A more complex example would involve
moves that might be temporarily tabu, but for this simple case, it shows the basic idea.
5. Genetic Algorithm
A. Overview
A Genetic Algorithm is a search and optimization technique inspired by the process of natural
selection and evolution. It iteratively improves a set of candidate solutions (called populations) to
find the best or optimal solution to a problem.
B. Main Idea:
- Start with a random population of potential solutions (called individuals or chromosomes).
- Evaluate their fitness according to a fitness function.
- Select the fittest individuals to reproduce.
- Apply genetic operators like crossover (recombination) and mutation to produce new solutions.
- Replace some or all of the population with these new solutions.
- Repeat until a stopping criterion is met (e.g., solution quality or number of generations).
C. Properties of Genetic Algorithms
Population-based: Operates on a set of solutions simultaneously.
Stochastic: Uses randomness in selection, crossover, and mutation.
Evolutionary operators:
- Selection: Picks the fittest solutions.
- Crossover: Combines parts of two solutions to produce offspring.
- Mutation: Randomly alters parts of solutions to maintain diversity.
Good at:
- Handling complex, nonlinear, and multi-modal problems.
- Finding global optima where traditional methods may get stuck in local optima.
D. Numerical Example
Problem: Minimize the function f(x) = x^2 for x [0, 10].
Solution Step-by-Step:
1. Initial Population:
Randomly generate 4 candidates:
x = [2, 8, 5, 1]
2. Evaluate Fitness:
Fitness could be inverse of f(x) :
fitness = 1 / (1 + f(x))
x=2 f=4 fitness = 1/5=0.2
x=8 f=64 1/65 0.015
x=5 f=25 1/26 0.038
x=1 f=1 1/2=0.5
3. Selection:
Select the top 2 solutions based on fitness:
x=1 and 2.
4. Crossover:
Combine parts (e.g., average):
New candidate: (1 + 2)/2 = 1.5.
5. Mutation:
Randomly mutate the new candidate slightly, e.g., add small noise:
x=1.5 + 0.1 = 1.6.
6. Next Generation:
Replace the least fit solutions with new ones; repeat the process.
Over several iterations, the solutions will approach x=0, the minimum point, since f(x)=x^2 is
minimized at 0.
E. Applications of Genetic Algorithms
Optimization Problems:
- Scheduling (e.g., job-shop scheduling)
- Route planning (e.g., Traveling Salesman Problem)
- Design optimization (e.g., aerodynamic shapes)
Machine Learning:
- Feature selection
- Hyperparameter tuning
Engineering:
- Control system design
- Structural design
Bioinformatics:
- Sequence alignment
- Protein folding
---------------------*-END-*---------------------