Hallo,
ich frag mich nur, wozu man denn eine Genauigkeit von 100 Stellen nach dem Komma benötigt?
Ansonsten:
BigInteger nutzen und alle Zahlen erst um den Faktor 1 Googol shiften bevor man damit rechnet.
D.h., x := 0,00000012345... wird zu x*10^100
Hallo,
ich möchte einen Hash Algortihmus implementieren und meine Klasse, die diesen Algorithmus implementiert, soll die natürlich die Oberklasse (Keyed)HashAlgorithm implementieren.
Diese hat Klasse drei abstrakte Methoden:
Initialize, HashCore, HashFinal.
Ist es ausreichend, nur diese drei Methoden zu implementieren oder muss man mehr beachten bzw. noch mehr Methoden überschreiben?
Welche sonstigen Angaben, z.B. über die Länge der Ausgabe etc. muss man noch machen?
Und sehe ich den Aufrufreihnfolge so richtig:
Wenn ich einen Hash berechne, wird erst HashCore aufgerufen. Beim Auslesen des Hashwertes wird HashFinal aufgerufen und anschließend direkt Initialize, damit der Hash-Algortihmus wieder scharf gemacht wird?
Ich bin dankbar für jede Antwort.
Hallo,
Warum gibt es soetwas nicht für den Endverbraucher?
Weil der Endverbraucher oft nicht bereit ist mehr als 30, 40 Euro für die Software auszugeben. Meistens möchte dieser es eh um sonst haben...
Eine höhere Qualität bei der Softwareentwicklung lässt die Kosten explodieren, die aber kaum ein Endverbraucher bereit ist zu bezahlen.
Oder hättest du 500 oder mehr Euro für deine PowerDVD Software ausgeben wollen? Ich glaube kaum...
Und nur weil man nicht nach ISO 900x zertifiziert ist, heißt dies nicht, dass man schlechtere Software produziert.
Oder anders herum: Nur weil man das ISO 900x Zertifikat hat, wird die Software nicht zwangsläufiger hochwertiger.
Möchte man deutlich bessere, d.h. zuverlässigere, Software haben, dann müssen die Preise sehr sehr stark ansteigen und neue Funktionalitäten werden nur sehr langsam eingeführt.
In Bereich mit sehr hohen Qualitätsansprüchen an die Software, beispielsweise in der Luftfahrt, ist das Testen der Software der mit Abstand größte Kostenpunkt. Innovationen werden dort sehr gebremst, da das validieren dieser sehr teuer ist.
Nun frag dich, ob der Kunde bereit ist, statt 39,99 Euro für sein Programm ganze 399,99 Euro zu bezahlen.
Hallo,
naja man kann die Integration als die Umkehrung der Differentialrechnung (Ableiten/Steigung bestimmen) betrachten.
Wenn du z.B. 100 Meter in 10 Sek. zurückgelegt hast, sind dies 10 Meter/Sek. (Dies wäre ableiten).
Integration macht dies genau anders herum:
Du legst 10 Meter/Sek (ohne Beschleunigung etc.) zurück und dies machst du 10 Sekunden lang.
Also hast du 100 Meter zurückgelegt.
Oder als Integral geschrieben (jetzt kommen meine ASCII Art skills raus):
10
/
| 10 dt = 100
/
0
Hier taucht kein t auf, da deine Geschwindigkeit ja nicht von der Zeit abhängt.
Nun geht mal zum gleichmäßig beschleunigten Fall vor, z.B. dem freien Fall:
Deine Geschwindigkeit ist dort ja zum Zeitpunkt t: g*t.
Wenn man nun wissen möchte, welche Strecke man in 10 Sekunden zurückgelegt hat man eben:
10
/
| g * t dt = 0,5*g*10^2
/
0
Sonst:
Das dt steht für 'delta t', also die Differenz von t. Da t für deine Zeit steht, also Sekunden, integriert man nach 'delta Sekunden'.
Wenn man nun im Integral die Einheit m/s hat und man nach 'delta Sekunden' integriert, bleibt noch m über.
Hallo,
Hm, Promovieren kann ich doch Frühestens in 3 Jahren...bis dahin kann ich es doch wirklich auf eigene Faust probieren, Ideen sammeln, mir anschauen was andere machen und Mitstreiter suchen.
Gute Mitstreiter findet man zu solchen Sachen relativ schwierig, da die einfach sehr rare sind und oft hoch beschäftigt. Die typische Ausbeute sind Schüler oder Azubis, die sich noch nie so richtig mit KI beschäftigt haben, zumindest konnte ich dies bei dem ein oder anderem ähnlichem Projekt beobachten.
Aber wenn es mit der Promotion noch so weit ist (wobei 3 Jahre schnell rumgehen), kann man sich durchaus weiter mit dem Gebiet beschäftigen. Evt. wird bei dir an der Uni auch auf dem Gebiet geforscht, evt. kann man dort dann einen Platz als wissenschaftliche Hilfskraft ergattern. Wenn man einen guten Betreuer hat und dieser merkt das man bischen mehr kann als nur programmieren, kann das sehr lehrreich sein.
Hängt natürlich stark von der Uni ab.
Ansonsten würde ich dazu raten, die gängigen Publikationen und die gängige Literatur auf dem Gebiet zu lesen (bzw. zu verfolgen), denn das Gebiet KI ist echt sehr umfassend und man sollte ein solides theoretisches Wissen besitzen (umso weniger muss man dann am Anfang der Promotion lesen 😉).
Außerdem habe ich es doch schon eingegrenzt auf einen Intelligenten Spielebot. Noch einfacher möchte ich es nicht machen.
Gut, das ist ja eine ganz andere Klasse, ob man eine KI für ein spezielles Problem entwickeln möchte oder ob man eine allgemeine KI haben will.
Sonst gibt es sicher viele Techniken intelligente Spielebots zu schreiben, so dass man dort viel lernen kann und durchaus evt. auch den ein oder anderen Spielebot entwickeln kann.
Hast du evt. sonst mal geschaut, ob es nicht irgendwo bereits ein interessantes Projekt gibt, bei dem man sich beteiligen könnte? Eine kurze Suche bei SourceForge hat z.B. das Projekt Computational Intelligence Library zutage gebracht.
Hallo,
Ich vergesse es ganz bestimmt nicht!
Die Idee eine KI zu schreiben, kam mir nicht erst gestern!
[...]
Also, nimm dich etwas zurück mit deinen Kontraproduktiven "Das wird eh nichts" Damit hilfst du niemandem....
Wenn die Grundlagen etc. schon bestehen, warum suchst du dir dann nicht einen kompetenten Doktor-Vater an einer angesehnen Fakultät und promovierst dort über dieses Thema?
Ich mein, die Promotion wäre erheblich vielversprechender, denn welche guten KI-Forscher wird man in solch einem Forum antreffen, die sich von so einer waghalsigen Idee (eine allgemeine KI zu schreiben die selber forscht) mitreißen lassen? Vermutlich eh keinen. Du wirst größten teils nur Leute gewinnen können, die überhaupt keinen Schimmer über KI haben (evt. mal ein Minimax-Algorithmus geschrieben) und glauben das es relativ leicht wäre, eine allgemeine KI zu schreiben, mehr auch nicht.
Ebenso hat man bei der Promotion erheblich mehr Zeit sich mit dem Thema zu beschäftigen, trifft andere kompetente Kollegen und man würde so viel eher an das Ziel gelangen.
Aber ohne den Rahmen einer Promotion o.ä., als einfaches Hobby-Projekt: Keine Chance. Wirklich nennenswertes wird dabei nicht entstehen. Oder warum scheitern seit zig Jahrzenten Professoren, die den großteil ihrer Zeit damit verbringen, eine halbwegs gute und allgemeine KI zu schreiben?
Wenn man es wirklich als Hobby-Projekt machen möchte, dann sollte man es doch eher sehr stark eingrenzen was man mit der KI erreichen möchte.
Hallo,
Am Ende soll die KI forschen können, und sich selber verbessern.
Vergiss es, du wirst es eh nicht schaffen.
Seit über 40 Jahren versuchen Wissenschaftler soetwas, ohne großen Erfolg, nichtmal für sehr spezielle Probleme. Und da glaubst du, es mal ebenso zu schaffen, nur weil du einen Mitstreiter hast? Wobei nichtmal die Grundlagen über KI vorhanden sind?
Soll jetzt nicht böse sein, aber ich will dir einfach falsche Illusionen nehmen. Kauf dir ein gutes Buch über KI und lern die bereits vorhanden Grundlagen (z.B. über neuroale Netze), damit wirst du ausreichend beschäftigt sein 😉
Denn es gibt diverse Vorhaben, endlich mal eine KI zu schreiben, die selber forscht oder sich selber weiterentwickelt. Über die Vision sind diese Vorhaben nicht hinausgekommen.
Ansonsten: Neuronale Netze sind sehr interessant und können für viele verschiedene Zwecke genutzt werden, von der Bild- und Spracherkennung über eine Spiele-KI bi hin zu Expertensystemen.
Nur: Ein allgemeines neuronales Netzwerk welches mehr als nur eine spezielle Fähigkeit gut kann gibt es noch nicht wirklich.
Hallo,
hmm, man könnte doch einen lokalen Netzwerk-Socket erstellen, über den die beiden Applikationen kommunizieren.
Ob dies aber der übliche Weg ist kann ich nicht sagen, allerdings wird diese Praxis von vielen Programmen gemacht.
Hallo,
mit ADO.Net ist das doch sowieso schon alle standardisiert (oder täusch ich mich da?), du musst nur einen ADO.Net Client für die jeweilge DB finden (sollte es aber für alle großen Datenbanken geben).
Und natürlich möglichst allgemeines SQL verwenden und nicht irgendwelche DB spezifische SQL Statements an die DB senden.
Kann auch sein das ich mich täusche, aber evt. mal bei Codeproject.com suchen, solltest bestimmt was finden.
Hallo,
Du tust ja gerade so, als ginge es in der Mathematik um unumstößliche Gesetze. Das stimmt doch aber gar nicht. In der Mathematik legen wir diese Gesetze fest.
Das dachte ich bis jetzt so. Könntest du mir ein Beispiel oder Suchbegriffe geben?
Wenn das stimmt nehme ich alles zurück.
in der Schule wird Mathe gerne so unterrichtet, als sei alles was man so bekommt Gott-gegeben, unumwerflich und man müsse es so hinnehmen und akzeptieren. Ähnlich wie dass der Apfel vom Baum fällt.
In der Schule wendet man diese Gott-gegebenen Regeln einfach an.
Allerdings ist Mathematik nichts anderes als Definitionssache, dort geht man hin, definiert sich ein paar Dinge und leitet daraus Sachen ab. Solche Definitionen sind rein willkürlich gewählt. Jeder kann sich alles definieren, ob es Sinn macht, ist eine andere Frage.
Manche Definitionen/Gesetze sind aus der Wirklichkeit hergeleitet, z.B. wenn ich in eine Schale erst zwei Äpfel lege und dann drei dazu, dann hab ich genauso viele Äpfel in der Schale als wenn ich erst drei reinlege und dann zwei dazu. Also macht es Sinn, sich irgendeine Verknüpfung zu definieren, die Kommutativ ist (also 2+3 = 3+2).
Aber Mathematik darf man nicht mit der Wirklichkeit verwechseln. Mathematik ist einfach nur ein abstraktes Gedankengebilde, den 'Wrapper' zwischen Wirklichkeit und Mathematik stellt der Mensch her. Ob es pausibel ist, ist eine andere Frage.
In der Mathematik kann man z.B. problemlos eine massive Goldkugel vom Radius 1 so zerlegen (ich glaub in 4 oder 5 Teile), so dass man diese Teile durch drehen und verschieben im Raum zu zwei neue massive Goldkugel von Radius 1 zusammensetzen kann. Diese kann man weiter zerlegen, also ist es in der Mathematik problemlos möglich, eine massive Goldkugel vom Radius 1 in 10 Milliarden massive Goldkugel mit jeweils Radius 1 zu zerlegen. Also kann man das Volumen einer massiven Goldkugel problemlos um das 10 Milliardenfache vergößern. In der Mathematik!
Dies ist bekannt als das Banach-Tarski-Paradoxon
Wie gesagt, in der Mathematik definiert man sich oft willkürlich irgendwelche Eigenschaften die gelten sollen (z.B. x*x = x für alle x) und schaut dann, was denn noch gelten muss (hier würde dann auch noch gelten: x+x=0 für alle x, also auch z.B. 1+1=0). Ob man diese irgendwie gebrauchen kann um reale Probleme damit zu beschreiben ist nicht wirklich wichtig.
Sicher, Mathematik ist in sich dann eine logische Folgerung (aus x*x=x folgt x+x=0), die anfänglichen Definitionen sind aber oft willkürlich gewählt bzw. motiviert von der Realität aus gewählt.
Ein Buch das das etwas beleuchtet ist evt. 'In Mathematik war ich immer schlecht'. Ansonsten evt. bei Wikipedia etwas lesen, z.B. die Peano-Axiome oder Körper Axiome. Dies sind auch einfach Definitionen die man sich mal so ausgedacht hat und die sich dann als praktisch erwiesen. Dennoch wurden diese recht willkürlich gewählt und nicht alles kann man 'logisch erklären'. Warum ist z.B. 0! = 1? Oder 5^0 = 1?? Ganz einfach, weil man es so definiert hat.
Man hätte auch 0! = 0 definieren können, dann wären aber manche Folgerungen eben andere.