- Aug 2021
-
runestone.academy runestone.academy
-
powerful idea
Have I rightly understood? The idea is powerful because I do not know how my class will be used. I used thinking an idea would be good if I could 'imagine' the way, step by step, for solving problems, 'before' its application.
-
- May 2020
-
runestone.academy runestone.academy
-
Computer scientists learn by experience. We learn by seeing others solve problems and by solving problems by ourselves. Being exposed to different problem-solving techniques and seeing how different algorithms are designed helps us to take on the next challenging problem that we are given. By considering a number of different algorithms, we can begin to develop pattern recognition so that the next time a similar problem arises, we are better able to solve it. Algorithms are often quite different from one another. Consider the example of sqrt seen earlier. It is entirely possible that there are many different ways to implement the details to compute the square root function. One algorithm may use many fewer resources than another. One algorithm might take 10 times as long to return the result as the other. We would like to have some way to compare these two solutions. Even though they both work, one is perhaps “better” than the other. We might suggest that one is more efficient or that one simply works faster or uses less memory. As we study algorithms, we can learn analysis techniques that allow us to compare and contrast solutions based solely on their own characteristics, not the characteristics of the program or computer used to implement them. In the worst case scenario, we may have a problem that is intractable, meaning that there is no algorithm that can solve the problem in a realistic amount of time. It is important to be able to distinguish between those problems that have solutions, those that do not, and those where solutions exist but require too much time or other resources to work reasonably. There will often be trade-offs that we will need to identify and decide upon. As computer scientists, in addition to our ability to solve problems, we will also need to know and understand solution evaluation techniques. In the end, there are often many ways to solve a problem. Finding a solution and then deciding whether it is a good one are tasks that we will do over and over again.
Informatiker lernen aus Erfahrung. Wir lernen, indem wir sehen, wie andere Probleme lösen und Probleme selbst lösen. Wenn wir verschiedenen Problemlösungstechniken ausgesetzt sind und sehen, wie verschiedene Algorithmen entwickelt werden, können wir das nächste herausfordernde Problem annehmen, das uns gegeben wird. Wenn wir eine Reihe verschiedener Algorithmen betrachten, können wir beginnen, Mustererkennung zu entwickeln, so dass wir beim nächsten Auftreten eines ähnlichen Problems besser in der Lage sind, es zu lösen.
Algorithmen unterscheiden sich oft deutlich voneinander. Betrachten Sie das Beispiel von sqrt früher gesehen. Es ist durchaus möglich, dass es viele verschiedene Möglichkeiten gibt, die Details zum Berechnen der Quadratwurzelfunktion zu implementieren. Ein Algorithmus kann viel weniger Ressourcen als ein anderer verwenden. Ein Algorithmus kann 10-mal so lange dauern, um das Ergebnis zurückzugeben wie der andere. Wir möchten eine Möglichkeit haben, diese beiden Lösungen zu vergleichen. Auch wenn sie beide funktionieren, ist das eine vielleicht "besser" als das andere. Wir könnten vorschlagen, dass man effizienter ist oder dass man einfach schneller arbeitet oder weniger Speicher verbraucht. Während wir Algorithmen studieren, können wir Analysetechniken erlernen, die es uns ermöglichen, Lösungen zu vergleichen und zu kontrastieren, die ausschließlich auf ihren eigenen Eigenschaften basieren, nicht auf den Eigenschaften des Programms oder Computers, der zu ihrer Implementierung verwendet wird.
Im schlimmsten Fall haben wir möglicherweise ein Unlösbares Problem, was bedeutet, dass es keinen Algorithmus gibt, der das Problem in einer realistischen Zeit lösen kann. Es ist wichtig, zwischen den Problemen zu unterscheiden, die Lösungen haben, denen, die es nicht tun, und denen, bei denen Lösungen existieren, aber zu viel Zeit oder andere Ressourcen benötigen, um vernünftig zu arbeiten.
Es wird oft Kompromisse geben, die wir identifizieren und entscheiden müssen. Als Informatiker müssen wir neben unserer Fähigkeit, Probleme zu lösen, auch Lösungsbewertungstechniken kennen und verstehen. Am Ende gibt es oft viele Möglichkeiten, ein Problem zu lösen. Eine Lösung zu finden und dann zu entscheiden, ob sie gut ist, sind Aufgaben, die wir immer wieder erledigen werden.
-