Ameisen organisieren Städtereisen und ein Computer spielt Schach – wie es geht, das zeigt dieses Buch. Auch in der vorliegenden Auflage wird für Programmierer, die bereits erste Erfahrungen gesammelt haben, ein breites Spektrum an Problemlösungsstrategien anhand konkreter und verständlicher Beispiele vorgestellt.
Sie können künftig selbstständig neue Aufgabenstellungen bewältigen, Optimierungspotential in bestehenden Programmen entdecken und damit bessere Software schreiben.
Bei einfachen Aufgaben kann man Software vielleicht einfach „herunterprogrammieren". Meistens ist die Welt nicht so einfach und wir müssen uns Gedanken machen, wie man eine Aufgabe überhaupt lösen kann, idealerweise effizient.
Es gibt viele Aufgaben, für deren Lösung wir Computer brauchen. Wie können Probleme am Computer überhaupt gelöst werden? Welche Strategien gibt es? Wo liegen deren Vor- und Nachteile?
Meistens genügt es nicht, eine Aufgabe zu lösen. Es ist auch wichtig, dies möglichst effizient zu tun. Was genau bedeutet eigentlich „schnell“? Wann ist ein Verfahren „effizient“?
Oft müssen große Datenmengen verarbeitet werden. Welche Datenstruktur ist für welche Aufgabe am besten geeignet? Wie können Daten schnell verarbeitet werden?
Manchmal haben wir Aufgaben zu lösen, bei denen es nicht genügt, den Computer die Fleißarbeit erledigen zu lassen, nachdem wir das eigentliche Problem schon gelöst haben. Wie kann ein Computer „lernen“? Kann er Aufgaben „selbstständig“ lösen? Kann er „intelligent“ sein?