Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
0% found this document useful (0 votes)
213 views

Heuristic Algorithm With Python

The document introduces the concept of heuristic algorithms, which aim to quickly find good enough solutions to problems when classical algorithms are too slow to find exact solutions. Heuristics trade off optimality, accuracy or precision for speed. A good heuristic provides improved performance over other heuristics according to some criteria, while also having limited complexity so it is not as costly as exploring all possibilities. The quality of a heuristic is generally assessed after implementation by testing it on many problem instances and comparing results to other heuristics.
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)
213 views

Heuristic Algorithm With Python

The document introduces the concept of heuristic algorithms, which aim to quickly find good enough solutions to problems when classical algorithms are too slow to find exact solutions. Heuristics trade off optimality, accuracy or precision for speed. A good heuristic provides improved performance over other heuristics according to some criteria, while also having limited complexity so it is not as costly as exploring all possibilities. The quality of a heuristic is generally assessed after implementation by testing it on many problem instances and comparing results to other heuristics.
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/ 4

Let's recap your heads.

In the last lesson, we saw that the travelling salesman


problem, or, the TSP, is complex to solve. However, it is possible to drastically
reduce the complexity of the resolution algorithm, provided that the produced
solution is not necessarily the optimal one, but a good enough one.

In this lesson, I'm going to introduce the notion of heuristic algorithm, which is a
technique used to more quickly solve problems when the classical methods are
too slow to find an exact solution. In other words, the objective of a heuristic is
to produce a solution in a reasonable time frame that's good enough for solving
the problem at hand. 

Usually, heuristics trade optimality, completeness, accuracy, or precision for


speed. In a way, a heuristic can be considered a shortcut.

A heuristic most often translates an intuition that is not necessarily supported by


formal arguments.

Example with graph traversal algorithms

By now, you should be familiar with several graph traversal algorithms, such as
the BFS or DFS, the result of which is to obtain a tree covering a graph from a
given vertex.  

If you think about it, using one route rather than another can be in itself a
heuristic. 

For example, consider the following problem: from a wikipedia page, for
example the wikipedia page on the traveling salesman problem, we want to
arrive at another wikipedia page, for example the wikipedia page on the number
42, by following hypertext links.  
Question: should a DFS or BFS be used? 

There's no doubt that both methods will get the expected result, given the very
high connectivity of the wikipedia hyperlink graph, but they will certainly not get
there in the same way.

What is a good heuristic ?


So, what's a 'good' heuristic? 

A heuristic is most often inspired by an intuition, and so it's not easy to evaluate
its quality beforehand. 

A heuristic should have two important qualities : to provide a gain, and be


limited in terms of complexity. Let's examine these two features in some more
detail. 

Provide a gain

To provide a gain, a heuristic should improve the performance of an algorithm


according to a given criterion and compared to other heuristics. 

For example, imagine that I want to get from this classroom, the yellow X on the
map, to the canteen, the red X on the map, in a minimum number of steps.
One possible heuristic to get there is to move in what I know to be the general
direction of the canteen, ignoring the presence of walls or obstacles. This
heuristic is probably going to have a generally better outcome than if I use a
random orientation. But in some cases, I might find myself at a dead end, in
which case the heuristic does not provide a gain, and even worse, does not
provide a solution.

Limited complexity

With regards to the limited complexity characteristic, if using heuristics is as


costly as exploring all the possibilities, then there's no point - you might as well
not use it! 

Using the same example of me finding my way from this classroom to the
canteen, let's assume that to find my way I have to explore all possible paths
and count the number of steps for each of them. I can then of course choose
the shortest path, but as I've had to explore every possibility before doing so, I
will have had to walk much farther than if I'd chosen a simpler heuristic.

Assessing the quality


To assess the quality of a heuristic, it's generally easier to perform this
evaluation ex post. This means that a choice on the heuristic is made,
implemented, and then tested on a large number of problem instances, and,
finally, the results are compared to the results obtained with other heuristics. 

This ends today's subject on heuristics. In the next video, you'll learn how
heuristics can help to provide good enough solutions for the TSP. 

You might also like