Professional Documents
Culture Documents
Official Answer:
===============
In computer science, the problems of interest are those that are solvable by
machines. The solutions to these problems are formulated as algorithms. Thus the
complexity of a problem is determined by the properties of the algorithms that s
olve
that problem. More precisely, the complexity of the simplest algorithm for solvi
ng a
problem is considered to be the complexity of the problem itself.
Therefore, a problem is terms as simple if it has simple solutions, while a comp
lex problem
is charactersized by the fact that it has complex solutions. The complexity of a
problem determines
how solvable or unsolvable that particular problem is.
We have read in chapter 5 "Algorithms" about writing algorithms as an approach t
o solving a problem,
which then be converted into a computer language, compiled and executed to produ
ce a solution.
It is therefore imperative that more complex an algorith is, more likely difficu
lt to program.
What I understand from the chapter 11, is that even though we can write complex
algorithms (after all these are
written as psedo-codes), it is not always possible for a computer machine to tra
nsform a solution.
For example, an algorithm that has 10 instruction written as a solution to a pro
blem, does not directly
relate to 10 steps from a machine point of view. Take for example a loop stateme
nt, we could write
while variable_A is true
loop
instruction 1
...
end loop
These are few instructions but when transformed into a machine language may exec
ute for example 1 million times
until the condition is true. I have witnessed many issues while working with our
department developers that the
programs they write is UAT'd, tested many times, signed-off from business lines,
yet out of the blue, it started
to loop in production when met with a certain condition(s). Ofcourse almost in a
ll case, this is due to an oversign by the developers in missing out a what-if a
nalysis for that particular case. Hence these were all examples of solvable prob
lems.
To be honest, there is always a solution exist to a problem in the business worl
d, however due to certain factors we are unable to proceed with the solution.
These factors could be time-based, space-based, meaning the time it would take t
o find a soltion or space required
to execute the solution (sort in memory or disk) would not justify our business
users to wait all this time.
Solution to such problems lies in re-visiting business requirements.
Having said above, I do understand that chapter 11 talks about NP(Nondeterminist
ic Polynomial time) problems.
This is a class of problems which doesn't have any know efficient solution, mean
ing an algorithm which computes the result in polynomial time. The intriguing th
ing with the class of NP problems is that no-one has been able to show that any
algorithm for solving them must take exponential time. It's perhaps the biggest
unsolved question in computer science.
I consider there is a big there's a big difference between unsolvable problems a
nd problems that are difficult to solve.
I know that sounds obvious, but a lot of people label hard problems (such as tra
veling salesman) as unsolvable when it's better to say that they're not solvable
efficiently, i.e., in polynomial time.
I would there be convinced to a solution given that the solution is optimal and
it satisfied my requirements
in the confined time and resources within our data center.
Reference:
Chapter 11 your book.