Eigene KI mit C++

8 Antworten

Es ist die Frage was man unter Intelligenz versteht. Grundsätzlich kann man jeden Algorithmus, den man vollständig logisch beschreiben kann, in jeder vollständigen Sprache programmieren.

Konkret heißt das z.B., dass Du ein Neuronales Netz in C++ schreiben kannst. Aber eine Intelligenz die "irgendwie wie Data ist" geht in keiner Sprache, weil der Algorithmus nicht logisch beschrieben ist. Und in HTML3 geht es auch nicht, weil die Sprache nicht vollständig ist.

Die Wahl der Sprache sollte mehr davon abhängen wie komfortabel sie für die gestellte Aufgabe ist, was auch stark davon abhängt wie gut Du darin bist. Wenn du fit in C++ bist: fein. Im Zweifel solltest Du mehr Augenmerk auf den Algorithmus legen.

Du kannst mit so gut wie jeder Programmiersprache eine KI Programmieren.

Aber alleine deine Frage deutet darauf hin, dass Du in diesen Bereich keine Ahnung hast.

Bau lieber einen Multiplayer. Das klingt vil. schwerer ist es aber nicht. Eine GUTE KI zu entwickeln dauert sehr lange und erfordert hohe Programmierkenntnisse.

Das kann man nicht von heute auf morgen lernen.

MfG. icekeuter

Mit C++ kannst Du so ziemlich alles an "Anwendungssoftware" programmieren, sofern Du die Sprache beherrscht, das notwendige Wissen über Algorithmen und Datenstrukturen mitbringest und das notwendige Domänenwissen vorhanden ist.

Wobei "KI" ein weit gefasster Begriff ist. Es gibt nicht "die KI", sondern viele verschiedene Ansätze und Algorithmen für unterschiedlichste Anwendungszwecke, wie A*-Algorithmen, Suchbäume, künstliche neuronale Netze (KNNs), selbstorganisierende Karten (SOMs), ...

procoder42  13.05.2015, 19:07

A* AlgorithMEN ? Gibt doch nur einen shortest Path Algorithmus der so heißt 

1
NoHumanBeing  13.05.2015, 19:12
@procoder42

Nein, A* erlaubt es, eine beliebige Heuristik zu verwenden. Du kannst also beliebige Varianten des Algorithmus erzeugen, allein indem Du diese Heuristik anpasst.

Außerdem gibt es Abwandlungen, wie IDA* (iterative deepening A*) oder MBA* (memory bound A*), sowie Algorithmen wie D*, die im Prinzip "erweiterte A*-Algorithmen" sind. Auch RBFS (recursive best-first search) ist im Prinzip eine Variante von A*, welche auf eine Speicherkomplexität von O(n) beschränkt ist.

2
procoder42  13.05.2015, 21:04
@NoHumanBeing

Dann könnte man die Algorithmen aber eigentlich auch alle unter Djikstra + Heuristik zusammenfassen 

1

Warum nicht? Wenn du die nötigen Kenntnisse dazu hast kannst du das machen.

Künstliche Intelligenz (KI, englisch artificial intelligence, AI) ist ein Teilgebiet der Informatik, welches sich mit der Automatisierung intelligenten Verhaltens befasst. Der Begriff ist insofern nicht eindeutig abgrenzbar, da es bereits an einer genauen Definition von Intelligenz mangelt.

Wie willst du eine Vorstellung oder Idee programmieren, die man (Wie den einleitenden Worten der Wikipedia zu entnehmen ist …) nicht einmal definieren kann? Weiter unten kannst du in dem Artikel auch das eine oder andere Buch zu dem Thema finden, das man auch verstanden!! haben sollte. Lesen alleine reicht da nicht …

Es hat gewiss gewichtige Gründe, dass die Diskussion um dieses Thema, die hauptsächlich in den 80er und 90er Jahren des letzten Jahrhunderts stattfand, inzwischen mehr als kleinlaut wurde.

Aktuell gibt es Mikroprozessoren mit bis zu 8 Kernen, die gleichzeitig 8 Prozesse verarbeiten können. Wenn man sich den Task-Manager unter Windows oder die Aktivitätsanzeige eines Mac ansieht, laufen auf den gängigen Betriebssystemen locker mindestens hundert Prozesse. Da sind 8 gleichzeitig bearbeitete Tasks nicht einmal 10 % so euphemisch gelobter „Multitasking-Betriebssysteme“ …

C++ ist bestimmt eine recht geeignete Programmiersprache, aber die sollte man da „beherrschen“. D.h. man muß auch die „Nebenbedingungen" wie MVC und Clean Code beherrschen. Ein paar simple UML-Diagramme genügen da bei weitem nicht.

Bis du da also ein einigemassen brauchbares Programm beisammen hast, werden einige Wochen vergehen und die selbsternannten KI-Gurus ausgestorben sein …

NoHumanBeing  16.05.2015, 13:12

[..] man muß auch [..] MVC [..] beherrschen.

Um Gottes Willen! Dieses Design-Pattern habe ich ja gefühlte 100 Jahre nicht mehr gebraucht. Zumindest in seiner "Urform". Die grundsätzliche Aufteilung in "Modell", "Darstellung", "Steuerung", jeweils mit definierten, möglichst "schmalen" Schnittstellen, ist natürlich durchaus sinnvoll.

0
wolfgang1956  16.05.2015, 16:28
@NoHumanBeing

Genau deswegen habe ich sie erwähnt.

Dies muß ja nicht so geschehen, dass man sagt, die Klasse A ist eine Modellklasse und die Klasse B eine Controllerklasse. Jedoch scheint sich das insbesondere in Apple-Applikationen gut bis sehr gut und bestens zu bewähren …

0