KI - Probleme mit Hilfe von Künstlicher Intelligenz lösen



  • frosty schrieb:

    Hab schon was:

    http://www.cc.gatech.edu/~yannis/lc++/

    Bietet scheinbar die Möglichkeiten von Prolog.
    Vielleicht hilfts.

    Ich bekomme es nicht hin, dass mein Programm auch die Bibliotheken "Included", wie mache ich das denn normal? 😕



  • hmm du musst die dateien entweder in dein system-include-verzeichnis kopieren und dann mittels <> includieren oder du müsstest die in alle projekt-sourcecode verzeichnisse packen in die du den code benutzt( würde ich sehr start von abraten) und dann mittels "" includieren.

    beim windoews ist es oft
    laufwerk:\proramme\softwarename\include
    oder bei linuxen in etwa

    /usr/include oder
    /usr/local/include

    oder ähnliches.

    Nur mal so am rande die header aus der funktionalen lib machen bei mir ärger.
    Hab eben mal kurz getestet und die prolog.h includiert ja die prelude.h und die scheint bei mir noch buggy zu sein...



  • Sehe ich richtig, dass das ganze irgendwie doch nicht geht? Beim Beispiel (http://www.cc.gatech.edu/~yannis/lc++/LC++v1.0/family.cc) von der Homepage kommen bei mir 69Fehler!?



  • Ich habe es selber noch nicht versucht, aber hast Du auch die FC++ Lib von der Seite installiert?



  • ich hatte schon fehler wenn ich nur den header eingebunden hatte. Die fehler die ich hatte kamen aus der FC++ Lib zB der prlude.h, aber ich hab es denn auch nicht genauer durchgesucht oder nach den genauen gründen gesucht



  • Wie gesagt, hab es noch nicht selbst ausprobiert. Aber habt ihr dann auch die FC++ Lib compiliert?

    Ach ja, schon geguckt ob euer Compiler auch unterstützt wird?
    Mit dem g++ solls ohne Probleme



  • Habe es jetzt auch mal ausprobiert. Geht net! Nicht alles von der FC++ Lib ist korrekt. Und auch der LC++ Lib lässt sich nix entlocken.

    Ne Alternative die ich gefunden hab wäre Amzi-Prolog aus C++ heraus aufzurufen.

    http://www.amzi.com/manuals/amzi7/articles/procpp.htm



  • Okay, vielen Dank, werde ich das mal ausprobieren 🙂



  • Hat jemand schon versucht damit eines der Rätsel zu lösen`?



  • peter77 schrieb:

    Hat jemand schon versucht damit eines der Rätsel zu lösen`?

    mit dem fisch ?
    japp sowohl aufm zettel als auch in prolog



  • Ja, einige.



  • shapeless schrieb:

    peter77 schrieb:

    Hat jemand schon versucht damit eines der Rätsel zu lösen`?

    mit dem fisch ?
    japp sowohl aufm zettel als auch in prolog

    Wobei mein Rätsel darauf ausgelegt war, dass es im Kopf gelöst werden sollte. Nur wer es im Kopf löst (ohne Papier und Stift) gehört zu den klügsten Köpfen der Welt.

    Und nun in den Dreck, ihr Maden 👎 !

    Euer 3in5t3in



  • 4lb3rt 3in5t3in schrieb:

    shapeless schrieb:

    peter77 schrieb:

    Hat jemand schon versucht damit eines der Rätsel zu lösen`?

    mit dem fisch ?
    japp sowohl aufm zettel als auch in prolog

    Wobei mein Rätsel darauf ausgelegt war, dass es im Kopf gelöst werden sollte. Nur wer es im Kopf löst (ohne Papier und Stift) gehört zu den klügsten Köpfen der Welt.
    Und nun in den Dreck, ihr Maden 👎 !
    Euer 3in5t3in

    Wobei ich mir nicht anmaßen wollte, zu testen ob ich zu den schlausten 2% gehöre.
    also hab ich es so gemacht.
    ( nur mal so am Rande ich habs nur zu prolog-übungszwecken gelöst
    und auf dem papier lediglich überprüft hab ob das Ergebnis stimmt...)



  • Wie sieht das ganze denn in Prolog aus? Würde mich mal interessieren 🙂



  • Leider konnte ich meinen Code bisher nicht finden. Wenn ich das doch noch schaffe werde ich den auch mal posten aber Inhaltlich unterscheidet er sich kaum.
    also hier eine Lösung:

    next_to(X, Y, List) :- iright(X, Y, List).
    next_to(X, Y, List) :- iright(Y, X, List).
    
    iright(L, R, [L | [R | _]]).
    iright(L, R, [_ | Rest]) :- iright(L, R, Rest).
    
    einstein(Houses, Fish_Owner) :-
      =(Houses, [[house, norwegian, _, _, _, _], _, [house, _, _, _, milk, _], _, _]),
      member([house, brit, _, _, _, red], Houses),
      member([house, swede, dog, _, _, _], Houses),
      member([house, dane, _, _, tea, _], Houses),
      iright([house, _, _, _, _, green], [house, _, _, _, _, white], Houses),
      member([house, _, _, _, coffee, green], Houses),
      member([house, _, bird, pallmall, _, _], Houses),
      member([house, _, _, dunhill, _, yellow], Houses),
      next_to([house, _, _, dunhill, _, _], [house, _, horse, _, _, _], Houses),
      member([house, _, _, _, milk, _], Houses),
      next_to([house, _, _, marlboro, _, _], [house, _, cat, _, _, _], Houses),
      next_to([house, _, _, marlboro, _, _], [house, _, _, _, water, _], Houses),
      member([house, _, _, winfield, beer, _], Houses),
      member([house, german, _, rothmans, _, _], Houses),
      next_to([house, norwegian, _, _, _, _], [house, _, _, _, _, blue], Houses),
      member([house, Fish_Owner, fish, _, _, _], Houses).
    

    den code kann man dann mit nem prolog interpereter benutzen und wenn man
    dann in der "command line "

    ?- einstein(Houses,Fish_owner).

    eingibt erhält man folgene Auflösung:

    Fish_owner = german
    Houses = [[house,norwegian,cat,dunhill,water,yellow],[house,dane,horse,marlboro,tea,blue],
    [house,brit,bird,pallmall,milk,red],[house,german,fish,rothmans,coffee,green],
    [house,swede,dog,winfield,beer,white]]



  • Ach ja es gibt ürgibens auch schon eine Schnittstelle für C++.
    die wrapped SWI-Prolog.h und man kann SWI-cpp.h somit als schnittstelle benutzen.
    Ich und ein freund hamm schon mal elizer per prolog gehabt und mit dieser Schnittstelle konnten wir erfolgreich per C++ drauf zugreifen.

    hier nen link zu nem swi-prolog/c++ interface

    tutorial



  • Nur als Anmerkung: das ist kein schöner und guter Prolog-Stil. Um Prolog richtig programmieren zu können sollte man verstehen wie Prolog funktioniert. Man muß wissen wie der Interpreter die Regeln abarbeitet. Deshalb sollte man sich ein gutes Buch, z.B. Adventure in Prolog, nehmen und durcharbeiten. Adventure in Prolog findest Du kostenlos hier: http://www.amzi.com/download/index.htm



  • Hiermit kann man also in C++ arbeiten um solche Probleme zu lösen?
    http://www.amzi.com/manuals/amzi7/articles/procpp.htm
    Das bedeutet ich schreibe die Sachen einfach so in meinen C++ Quellcode?



  • frosty schrieb:

    Nur als Anmerkung: das ist kein schöner und guter Prolog-Stil. Um Prolog richtig programmieren zu können sollte man verstehen wie Prolog funktioniert. Man muß wissen wie der Interpreter die Regeln abarbeitet. Deshalb sollte man sich ein gutes Buch, z.B. Adventure in Prolog, nehmen und durcharbeiten. Adventure in Prolog findest Du kostenlos hier: http://www.amzi.com/download/index.htm

    Danke für den Link aber wie gesagt ist der Code nicht von mir. Ich weiss nciht mehr wo meiner ist, da es schon ein paar jahre her ist das ich selbst Prolog benutzt hab, falls ich ihn finde, kann ich ja sehen ob ichs vll doch auch nicht verstanden hab....



  • Oswald_ schrieb:

    Hiermit kann man also in C++ arbeiten um solche Probleme zu lösen?
    http://www.amzi.com/manuals/amzi7/articles/procpp.htm
    Das bedeutet ich schreibe die Sachen einfach so in meinen C++ Quellcode?

    Das steht doch in dem Link genau erklärt 🙄 .


Anmelden zum Antworten