tovey.tutorial
32 pages
English

tovey.tutorial

Le téléchargement nécessite un accès à la bibliothèque YouScribe
Tout savoir sur nos offres
32 pages
English
Le téléchargement nécessite un accès à la bibliothèque YouScribe
Tout savoir sur nos offres

Description

Tutorial on Computational ComplexityCraig A. ToveySchoolofIndustrialandSystemsEngineering,GeorgiaInstituteofTechnology,Atlanta,Georgia30332ctovey@isye.gatech.eduThispaperwasrefereed.Computational complexity measures how much work is required to solve different problems.It provides a useful classification tool for OR/MS practitioners, especially when tackling dis-crete deterministic problems. Use it to tell, in advance, whether a problem is easy or hard.Knowing this won’t solve your problem, but it will help you to decide what kind of solutionmethod is appropriate. Complexity analysis helps you to understand and deal with hardproblems. It can pinpoint the nasty parts of your problem, alert you to a special structure youcan take advantage of, and guide you to model more effectively. You will solve your problembetter when you know the borders between hard and easy. Locating the difficulty canindicatewhere to aggregate, decompose, or simplify. To detect and prove computational difficulty,show that a known hard problem from the literature is embedded within your problem. Fixparameters of your problem to arrive at the known hard problem, or use specialization, pad-ding, forcing, or the more difficult gadget proofs. Study contrasting pairs of easy and hardproblems to develop your intuitive ability to assess complexity.(Analysisofalgorithms:computationalcomplexity.)omputational complexity is the measurement of assess complexity, I recommend this introduction andC ...

Informations

Publié par
Nombre de lectures 48
Langue English

Extrait

Tutorial on Computational Complexity
Craig A. Tovey
SchoolofIndustrialandSystemsEngineering,GeorgiaInstituteofTechnology,Atlanta,Georgia30332
ctovey@isye.gatech.edu
Thispaperwasrefereed.
Computational complexity measures how much work is required to solve different problems.
It provides a useful classification tool for OR/MS practitioners, especially when tackling dis-
crete deterministic problems. Use it to tell, in advance, whether a problem is easy or hard.
Knowing this won’t solve your problem, but it will help you to decide what kind of solution
method is appropriate. Complexity analysis helps you to understand and deal with hard
problems. It can pinpoint the nasty parts of your problem, alert you to a special structure you
can take advantage of, and guide you to model more effectively. You will solve your problem
better when you know the borders between hard and easy. Locating the difficulty canindicate
where to aggregate, decompose, or simplify. To detect and prove computational difficulty,
show that a known hard problem from the literature is embedded within your problem. Fix
parameters of your problem to arrive at the known hard problem, or use specialization, pad-
ding, forcing, or the more difficult gadget proofs. Study contrasting pairs of easy and hard
problems to develop your intuitive ability to assess complexity.
(Analysisofalgorithms:computationalcomplexity.)
omputational complexity is the measurement of assess complexity, I recommend this introduction andC how much work is required to solve different §§1, 4, 6, 8, and10.Thosewhowantmore,forexample,
problems. It provides a useful classification tool for to be able to use standard references, should read the
OR/MS practitioners, especially when tackling dis- entire tutorial.
crete deterministic problems. Use it to tell, in advance, What can you expect to learn? A basic way to solve
whetheraproblemiseasyorhard.Knowingthiswon’t problems in OR/MS is to have a toolbox of standard
solve your problem, but it will help you decide what well-solved easy problems, such as maximum flow
kind of solution method is appropriate. If the problem and shortest path. You take your real problem and
is easy, you can probably solve it as a linear program modelitwiththerightchoiceofproblemfromthetool-
(LP) or network model or with some other canned box. That process classifies your as easy and
method. If the problem is hard, finding an exact solu- lets you solve it by a standard method. This tutorial
tion is apt to be costly or impractical, and you will teaches how to classify problems in the opposite way.
probably have to resort to enumerative methods You have a second toolbox, containing basic hard
(which may be slow or useless for large cases) or settle problems. You make the right choice of problem from
for an approximate solution obtained with heuristics. the toolbox and model it with your real problem. That
Complexity theory can help you to understand and process classifies your problem as hard. The model in
deal with hard problems. It can pinpoint the nasty reverseisacomplexityproof,anditsometimespinpoints
parts of your problem, alert you to a possible special the difficulty in real problems. Pinpointing the diffi-
structure you can take advantage of, and help you culty can indicate where to aggregate, decompose, or
model more effectively. simplify. If you know where the borders are between
I’ve written this tutorial for two audiences.Forprac- hardandeasy,youwillbebetterabletodealwithyour
titioners who want to improve their intuitive ability to problem.
Interfaces, 2002 INFORMS 0092-2102/02/3203/0030$05.00
Vol. 32, No. 3, May–June 2002, pp. 30–61 1526-551X electronic ISSNTOVEY
ComputationalComplexity
The abbreviated reading I’ve suggested should ex- In theheadyyearsfollowingtheinventionofLPand
pand your knowledge of the toolbox of basichard the simplex method, researchers explored many ap-
problems and improveyour abilitytodistinguishhard plications and extensions. One of these was integer from easy problems. It includes examples of programming, which is the same as LP except for the
finding the complexity within problems (§4) and of seemingly minor additional requirement that certain
how to use to cope with hard problems variables take on only integer values. Two patterns
(§8). You will need to read the entire tutorial to usethe soon emerged, one good, one bad.
huge toolbox found in the standard references and to The good news was that many problems could be
insure that you use complexity theory correctly and modeledas IPsthat(apparently)couldnotbemodeled
appropriately. as LPs. Problem after problem, from fixed charge to
There is no way around doing complexity proofs if traveling salesman, fell before the onslaught of IP
you want to use computational complexity. Therefore, modelers.
much of this tutorial is more mathematical than most The bad news was that all the solution methodspro-
Interfaces articles. Fortunately, once you can read the posedturnedouttobepooratsolvingIPs,exceptsmall
standard references, you can often find a known hard cases. Gomory’s cutting-plane algorithm is a quintes-
problem similar enough to yours that you can use one sential example. It was an extension of the simplex
of the easier proof techniques, such as specialization method, just as IP was an of LP. Like the
or padding. The tutorial also covers gadget proofs, simplex method, it could be proved to converge in a
which are more difficult. finite number of steps. By analogy, one would have
Some other complexity classifications (§9) get short expected Gomory’s algorithm to solve IPs effectively.
shrift because I have not found them very useful. Fi- And it did, on small instances with, say, fewer than 20
nally, I discuss how complexity limits our ability to constraints. But on moderate-sized instances, the al-
solve problems and what kinds of trade-offs we as a gorithm frequently bogged down, making many tiny
community might consider. ineffectual cuts and sometimes failing to converge at
You do not need to know any complexity theory to all because of precision problems.
readthistutorial.ItwillhelpifyouknowbasicLP, Researchers tried cutting planes, dynamic program-
networks, and integer programming (IP) at the under- ming, branch and bound, and group theoretical meth-
graduate or MBA level, since I will draw several ex- ods, but all failed to solve the medium-sized cases.
amples and analogies from these areas. The theory of computational complexity gives us a
I’ve included two kinds of problems, imitating magic lens through which we can look at these two
Knuth (1973) and McConnell (1989). Questions are to patterns and see them, the good and the bad, as a
help you to understand what you are reading. Ques- whole.
tions ordinarily won’t require pencil and paper; the Integer programming is an NP-hard problem. Like
answers are short and all are given at the end of each all NP-hard problems, it shares two properties: that it
section. Exercises may require some scribbling and a can be used to model a host of important problems,
few minutes of thought. They should help you to de-
andthatnoknownsolutionmethodhasprovedtocon-
velop skill in computational complexity. You should
sistently and exactly solve large instances efficiently.
answer all the questions as you read. If you want to
RunningTimeofAlgorithmsdevelop the ability to recognize complexity or docom-
Soonerorlateranyproblemwillgetbigenoughthatyoucan’tplexity proofs yourself, do the exercises as well.
solve it. But it’s nicer if you make it later (Rosenberg 1993).
1. ComplexityandNP-Hardness How long does it take to find the maximum in a set
of numbers? A numerical answer, such as “0.66 sec-This section explains the ideas of time bounds for al-
gorithms, O( ) notation, and polynomial and expo- onds,” is meaningless, because the length of time de-
nential time. It introduces the crucial concepts of in- pends on the hardware and software and, more im-
stances, problems, and realistic cases. portant, varies depending on how big the set is. The
Interfaces
Vol. 32, No. 3, May–June 2002 31TOVEY
ComputationalComplexity
answershouldbeafunctionofthesizeoftheparticular maximum of a list of numbersL bits long, regardless
instance to be solved. The function tells how the al- of whether it contains many small numbers or a few
gorithm run time grows as the input size increases. In large numbers.
this case, suppose the numbers areA(i):i1,...,n. To find the maximum of a set of numbers, O(L)is
Theobviousalgorithmfindsthemaximumintimepro- technically correct while O(n) is not. On the other
portional to n. We say the algorithm runs in linear hand,sincenumbershavelimitedprecisioninpractice,
time, or isO(n). If instead we wish to sort the numbers the more naturalO(n) bound is a good surrogate. As
in ascending order, the fastest algorithms require time a rule of thumb, use the natural parameters without
proportional ton logn. We say that sorting is done in fear, unless the individual numbers in the data (for
O(n logn) time. example, cost coefficients) are very long or very short.
A precise definition ofO( ) time bounds is that an Iftheyareverylong,yourproblemmaybeharderthan
algorithm has time bound O(f(n)) if there exist con- it looks; if they are very short, your problem may be
stantsN andK such that for every input of sizenN easier because of dynamic programming. (Question:
the algorithm will not take more thanKf(n)processing How mu

  • Univers Univers
  • Ebooks Ebooks
  • Livres audio Livres audio
  • Presse Presse
  • Podcasts Podcasts
  • BD BD
  • Documents Documents