Firma:: Kontakt:: Impressum :: Datenschutz
Home :: Dienstleistungen :: Produkte :: Referenzen
Software Entwicklung
› Was ist Informatik?
Navigation
› Was ist Informatik › Beispiel Sortieren › Bedeutung › Praxis › Kombinatorik › Fazit ‹ Zurück

Was ist eigentlich Informatik?

Informatik ist die Wissenschaft, Probleme mit Hilfe von Maschinen effizient zu lösen. Dabei bedient sie sich eines strengen mathematischen Formalismus, um Probleme und deren Lösung zu beschreiben und zu klassifizieren. Zugrunde gelegt werden theoretische Rechenmodelle, die einen realen Computer in allen Belangen übertreffen. Zwei grundlegende Fragen beschäftigen den Informatiker:

  1. Kann man das gegebene Problem mit Hilfe von Maschinen überhaupt lösen?
  2. Wenn ja, wie effizient in Bezug auf Laufzeit und Platzbedarf (Speicher)?

ad 1)
Interessanterweise gibt es (unendlich) viele Probleme, die sich beweisbar mit den heutigen Rechenmodellen nicht lösen lassen, d.h. es kann kein Programm dafür geschrieben werden. Ein berühmtes Beispiel ist das sogenannte Halteproblem:

Gegeben
Ein beliebiger Programmtext
Frage
Gibt es ein Programm, das das gegebene Programm daraufhin überprüft, ob es für alle möglichen Eingaben anhält, d.h. nicht unendlich lange läuft.

In der Praxis bedeutet das, daß ein gegebenes Programm nicht mittels einer Maschine auf Korrektheit geprüft werden kann.

ad 2)
Lösbare Probleme werden, wenn möglich, Klassen zugeteilt. Diese Klassen repräsentieren die Eigenschaften Laufzeitverhalten und Speicherplatzbedarf.

^ top

Beispiel Sortieren

Ein kleines Beispiel: Sortieren sie die folgende Zahlenfolge aufsteigend.

100, 45, 33, 80, 75, 11, 46, 99

Instinktiv werden Sie wahrscheinlich so vorgehen:

  1. Suche das Minimum
  2. Schreibe es an das Ende der sortierten Zahlenfolge
  3. Streiche das Minimum aus der gegebenen Zahlenfolge
  4. Betrachte den Rest der verbleibenden Zahlenfolge und gehe zu Schritt 1, bis keine Zahlen mehr über sind
Nun haben Sie die Zahlenfolge sortiert. Ein Informatiker würde nun Ihr Verfahren analysieren und zu dem Schluß kommen, daß
  1. Ihr Verfahren jede Zahlenfolge korrekt sortiert
  2. Ihr Verfahren im schlechtesten Fall bei n Zahlen als Eingabe die Schritte 1 bis 4 proportional zum Quadrat von n mal durchlaufen müsste

Er würde sich weiterhin fragen, ob es nicht ein besseres, effizienteres Verfahren exististiert, das Ihre Zahlenfolge sortiert. In der Tat existieren mehrere effizientere Verfahren für dieses Problem, die proportional nur n*log(n) Schritte durchführen.

^ top

Was heißt das nun für Sie als Geschäftsmann?

Schon bei einer Eingabegröße von 1000 Zahlen sind hier enorme Lauftzeitunterschiede zu vermerken:

Bei n =1000 ist n²=1000000 und n*log(n) cr. 10000, das entspricht 1% von 1000000 ! Das n*log(n) Verfahren spart hier also schon 99% Laufzeit bei n=1000. Ob Sie nun 100 Stunden oder nur eine Stunde auf die Lösung eines Problems warten sollen, zahlt sich für Sie aus.

Noch praktischer und dramatischer ausgedrückt:
Bei n=10000 Zahlen würde ein betagter Computer, der 15 Jahre alt ist, mit dem n*log(n) Verfahren einen brandneuen Computer mit dem quadratischen Verfahren um Längen schlagen.

^ top

Praxis

Sie denken, diese Problematiken treten in der Praxis nicht auf? Leider allzu häufig. Ein gutes Beispiel ist mangelhaftes Datenbankdesign, das sehr schnell zu den obig geschilderten Phänomenen führen kann.

^ top

Kombinatorik

Ein wichtiges Feld für die Klassifizerung von Verfahren ist die Kombinatorik, die die Zusammenhänge der Eingabeanzahl und der Größe der Lösungen beschreibt.

Akademisches Beispiel
Als Beispiel nehmen wir an, sie hätten 10 Bücher in Ihrem Regal stehen. Nun stellen sie sich irgendwann die Frage: Wieviel Möglichkeiten gibt es, die Bücher in einer verschiedenen Reihenfolge aufzustellen? Schätzen sie mal ...
Es sind genau 3.628.800 !
Überrascht?
Bei 11 Büchern sind es bereits 39.916.800 Möglichkeiten. Glauben Sie nicht? Ein Informatiker wird Ihnen sagen: Ist aber so, und Ihnen dann auch gleich den mathematischen Beweis liefern. Falls sie die Möglichkeiten durchgehen wollten, bräuchten sie, falls sie die Bücher in einer Sekunde umstellen könnten, bei 10 Büchern genau 42 Tage und bei 11 Büchern bereits 462 Tage, angenommen sie arbeiten Tag und Nacht ohne Unterbrechung durch.

Sie glauben, das ist ein akademisches, weit hergeholtes Beispiel? Leider nicht, denn viele Probleme im täglichen Leben haben oft eine enorme Anzahl von Lösungen, von der nur ein paar oder sogar nur eine einzige interessant ist.

Beispiel aus der Praxis
Sie sind Hersteller von Leiterplatinen und müssen in die Leiterplatinen Löcher bohren. Die Bohrungen werden von einer Maschine mit beweglichem Bohrarm durchgeführt. Die Zeit, die die Maschine braucht, um alle Löcher zu bohren, ist im wesentlichen von dem zurückgelegtem Weg des Bohrers abhängig. Wir nehmen an, es sollen 15 Löcher gebohrt werden und der effizienteste Weg für den Bohrarm gefunden werden. Die erste Frage ist dann: Wieviele Wege gibt es überhaupt, die untersucht werden müssen, um den besten zu finden?. Von jedem Bohrloch existiert ein Weg zu jedem anderen Bohrloch. Somit gibt 15*14/2= 105 Verbindungen zwischen den Bohrlöchern, denen der Abstand zwischen den Löchern zugeordnet ist. Aus diesen Verbindungen soll nun ein Weg der Länge von 15 Verbindungen gewählt werden, der die kürzeste Gesamtlänge hat und einen gültigen Weg über alle Löcher bildet. Ein Programm muss alle Möglichkeiten betrachten, um den günstigsten Weg zu bestimmen. Es gibt übrigens 87.178.291.200 Kombinationen von Wegen, die zu untersuchen wären... Ein Rechner, der 1 Million Verbindungen in der Sekunde testen könnte, wäre gut einen Tag damit beschäftigt. Ihr Kunde braucht auf einmal Platinen mit 20 Bohrlöchern. Die Anzahl der Möglichkeiten beträgt nun 121.645.100.408.832.000. Ihr Rechner würde jetzt cr. 1395360 Tage, das sind cr. 3829 Jahre brauchen, um den besten Weg für 20 Löcher zu finden. Bei 25 Löchern wäre unsere Sonne schon lange erloschen, bevor Ihr Rechner die Lösung hätte.

Soweit zur akademischen Natur dieses Problems. Ein guter Informatiker kann Ihnen hier in den meisten Fällen trotzdem weiterhelfen, indem er die Natur des Problems erkannt hat und gar nicht erst nach der besten Lösung sucht, sondern nach einer Lösung, die vielleicht maximal 10% von der besten Lösung abweicht.

^ top

Fazit

Viele Probleme in der Praxis erscheinen einfach, sind in Wahrheit aber komplex. Andererseits existieren Probleme, die komplex erscheinen, aber eine einfache Lösung haben. Ein letztes Beispiel: Den kürzesten Weg zwischen zwei Löchern auf der Platine zu berechnen, ist sehr effizient lösbar. Die Bedingung, das alle Löcher in dem Weg enthalten sein müssen, macht die Lösung nahezu unmöglich.

Lassen Sie sich deshalb von uns beraten !