What is Algorithms...
Hi all
i have just started studying algorithms....
Algorithmic mathematics provide a language for talking about program behaviour
Performance often draws the line between what is feasible and what is impossible
Performance is yhe currency of Computing
these statements sound hazey to me..Thx
Regards
Heman
Is there a question?> > these statements sound hazey to me.Yep. If it was possible to state it exactly then it is likely that there would be no point in stating it exactly.
actually i haven't yet started studying algorithms so i am not familiar with what this course will do for me .
I am an absolute Zero in the Plane of Algorithms and just bought the Book -Cormen yesterday....Pls care to tell me strategies and tips you have for taking this course..i have period of 2 months to go and simultaneously i will take the help from MitCourseWare and from here.....
Pls tell me urs suggestions...i will be more than happy...
Thx very much
> actually i haven't yet started studying algorithms
> so i am not familiar with what this course will do
> for me .
> I am an absolute Zero in the Plane of Algorithms and
> just bought the Book -Cormen yesterday....Pls care to
> tell me strategies and tips you have for taking this
> course..i have period of 2 months to go and
> simultaneously i will take the help from
> MitCourseWare and from here.....
>
I took Algorithms a very long time ago. And don't believe I particularily understood the point at the time. So I doubt I can help much.
As I remember it there were basically two parts,
- Existing algorithms
- Suggestions on how one might solve some new type of problem.
The second is far from absolute. And there are probably a variety of other things that the course won't cover anyways (like graphics manipulation, diff-eq, numerics, etc) And those are all 'algorithmic' as well. So concentrating on the first is probably the best (might be all the course covers as well.)
If I were you, I would start with N. Wirth: Algorithms + Data Structures = Programs It's a bit old, but easy to understand and it contains a sound number of algorithmical techniques you may find useful. You will definitely understand your two statements about performance mentioned in your question (take just such a simple task as sorting a numeric array, which can be resolved by tens of different ways - from simple O(n^2) minimax or bubblesort to more sophisticated O(n. log n) heapsort or Quicksort to external sorting, if you can't get all your data into memory simply because it is too large).
If I remember correctly (maybe I don't, it's been a while since data structs and algorithms). An algorithm is some kind of interation that ends when a certain value is obtained. To apply that to what you are saying "Performance" and "algorithms are the currency". I'd say that effective algorithms, such that are used for encryption, are extremely valuable, and you want to choose the fastest or most effective algorithm for performing searches.
Kinda vague but then again so is the question.
The dictionary definition of an algorithm is "a process or set of rules to be followed in calculations or other problem-seolving operations." What this means, from a computer science perspective, is that computers are a great tool for solving a vast number of problems. Algorithms are the process by which problems are turned into solutions. An algorithms course is going to introduce you to a large number of well known problems and show you some solutions to those problems. What you should take away from an algorithms course is an understanding of how to take a problem and solve it efficiently using a computer. A lot of problems you run into are just variations of well known problems and therefore you can take solutions to these well known problems and apply them to new problems. But if you don't take the course you won't recognize them. Algorithms is probably the most important course any computer scientist will ever take and if it's not the most important then it's a close second. The vast majority of the course you'll never use directly but that isn't a reason not to take it because what you get out of it is far more valuable in the long run.
With regards to the 3 hazy statements, I'll explain. The first basically says that you can describe a program using mathematical notation. A program is just a set of algorithms what work together to yield a result. Some are written better than others. The third statement is particulary important here because a program is only as good as it performs and mathematics provides a foundation for analyzing the performance of an algorithm or set of algorithms. For example, suppose I gave you a list of 10 names as asked you to sort them. You could do that reasonably quickly using the first method that comes to mind. Now suppose I ask you to sort 1 million names. The same approach would work but might take much longer. The same is true for a comptuer. Just because an algorithm is valid does not make it good in all cases, but you need a way to analyze the algorithm and decide if it would perform well in all cases. The second statement is related to the other two in that no problem is impossible to solve but some are impossible to solve in our lifetimes. Encryption algorithms rely on this principle because none are uncrackable, but to be secure they need to be uncrackable long enough to secure a transaction. There are some classes of problems, such as cracking encryption keys, that are so complex they simply cannot be done in polynomial time. These complex problems sometime seem impossible if only because the best performing algorithm can't solve the problem fast enough for it to be good and in most cases relaxing constraints on the problem allow them to be solved faster.
I know that was long and possibly confusing but hopefully it sheds some light on what an algorithms course will teach you. I'm not sure if you're studying computer science or not but algorithms is core to that discipline so your decision to take the course should be based in part on that.
A good example of a problem that grows exponentially in terms of time to solve is the classic asymmetric travelling salesman problem (ATSP). As the number of nodes to be traversed increases linearly, the amount of time to optimize the distance, cost, etc. function grows exponentially.
just coz u mentioned ...encryption algorithms ........
i need to know sum stuff.....am a final year student ...and gotta start doing this project on encryption...
But , how do you decide which algorithm to use...and what will be the length of the key to b chosen....as we do not know..of the complexity of it ........
Can ya help, please?