Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 15 von 16

Thema: Prolog

  1. #1
    Registrierter Benutzer Avatar von AmrodAegnor
    Registriert seit
    22.10.12
    Beiträge
    9.045

    Idee Prolog

    Kennt sich hier wer mit Prolog aus bzw. gibts dafür nen Thread? Ich kapier den Regelaufbau und die Sache mit dem Abbruchfall nämlich grade nicht und bräuchte Hilfe.

    //Dieses Thema wurde aus dem PC-Hilfe-Thread ausgeschnitten von Shakka
    Geändert von Shakka (02. November 2013 um 00:22 Uhr)

  2. #2
    Bockiges Erdmännchen Avatar von Loki
    Registriert seit
    06.05.04
    Beiträge
    25.444
    Prolog, da klingelt was.....aber nicht viel...wenn du eine konkrete Frage stellst, könnte mehr klingeln.
    Wie, Du weißt nicht, was das Bild der Woche ist?
    Wir warten auf Deine Einsendung...

  3. #3
    Registrierter Benutzer Avatar von AmrodAegnor
    Registriert seit
    22.10.12
    Beiträge
    9.045
    Ich kopiers einfach mal:

    Aufgabenstellung ist im Anhang, wenns dir nichts ausmacht 1 1/2 PDF-Seiten zu lesen. Ist Aufgabe 1, auf Seite 2-3.

    So, das hab ich bisher geschrieben:

    initial(glados, rot).
    initial(glados, blau).

    verbindung(glados, xerxes).
    verbindung(xerxes, gerty).
    verbindung(gerty, sentry).
    verbindung(sentry, skynet).

    verbindung(glados, quora).
    verbindung(quora, hal).
    verbindung(hal, shodan).

    verbindung(glados, wintermute).

    filter(sentry, rot).
    filter(quora, rot).
    filter(quora, blau.)
    ________________________________

    initial(Rechner, Wurm).

    filter(Firewall, Wurm).

    verbindung(Rechner1OderFirewall1, Rechner2OderFirewall2).

    infiziert(Rechner, Wurm) :- initial(Rechner, Wurm).
    infiziert(Rechner, Wurm) :- initial(Rechner, Wurm), verbindung(Rechner1OderFirewall1, Rechner2OderFirewall2).

    Die Fakten oben sind erstmal nur zum Testen da, also alles oberhalb der Linie. Filter hab ich erstmal unten in der Regel weggelassen, weils ja schon an der Verbindung scheitert. Also die Regel sagt ja: Rechner ist mit Wurm infiziert, wenn eine Verbindung zwischen ihm und einem am Anfang infizierten Rechner besteht. Nur versteh ich irgendwie nicht, wie ich das schreibe bzw. warum es so nicht funktioniert. Wo ist der Denkfehler?

    edit: Ups, Anhang vergessen.
    Angehängte Dateien Angehängte Dateien

  4. #4
    Bockiges Erdmännchen Avatar von Loki
    Registriert seit
    06.05.04
    Beiträge
    25.444
    Habe keine Ahnung mehr von.

    infiziert(Rechner, Wurm) :- initial(Rechner, Wurm).
    infiziert(Rechner, Wurm) :- initial(Rechner, Wurm), verbindung(Rechner1OderFirewall1, Rechner2OderFirewall2).

    Aber das fette sieht mir ziemlich falsch aus. Da steht ja quasi nur die Prädikatendefinition. Irgendwie muss du ja angeben, welche Verbindung für dich relevant ist. Obendrein hast du ja auch keine Prüfung ob eine Firewall dazwischen ist dabei.
    Wie, Du weißt nicht, was das Bild der Woche ist?
    Wir warten auf Deine Einsendung...

  5. #5
    Registrierter Benutzer Avatar von AmrodAegnor
    Registriert seit
    22.10.12
    Beiträge
    9.045
    Ja, das ist mir auch klar. Aber ich hab halt keine Ahnung, wie ich das angebe bzw. die Verbindung herstelle.

    Die Firewall-Überprüfung hab ich noch nicht eingebunden, weils ja schon am zweiten Teil scheitert grade. Ich steh echt aufm Schlauch.

  6. #6
    ε•ω=1 Avatar von Ramkhamhaeng
    Registriert seit
    19.07.10
    Ort
    Aralkum
    Beiträge
    9.896
    Abstrakt gesprochen hast du hier eine Eigenschaft (infiziert) vorliegen, die für bestimmte Basis-Objekte leicht zu berechnen ist und über eine Relation auf andere Objekte übertragen wird. Die Relation kann dann rekursiv angewendet werden, was die Menge der erfassten Objekte weiter erhöht (oder nicht weiter verändert). Das kommt in der Mathemaktik/Informatik ständig vor und man spricht dann auch von der Berechnung einer Hülle. (=Menge aller Objekte mit einer Eigenschaft).

    Du kennst vielleicht bei den Termumformungen den Begriff der „nahrhaften Null“, bei der man irgendwas einschiebt. Im Prinzip ist das bei vielen rekursiven Definitionen ähnlich

    Ist jetzt keine Prologschreibweise, aber es ist ungefähr so:

    infiziert(A,W) = initial(A,W)
    infiziert(A,W) = verbindung(A,B) UND infiziert(B,W) UND NICHT filter(A,W)

    Ich habe die Relationen in dieser Reihenfolge aufgeschrieben, damit man sieht, dass da ein B zwischen A und W „eingefügt“ wurde. Dazu dann am Ende noch die Filtereigenschaft. Statt filter(A,W) könnte man auch filter(B,W) nehmen.

  7. #7
    Registrierter Benutzer Avatar von AmrodAegnor
    Registriert seit
    22.10.12
    Beiträge
    9.045
    Okay, danke dir schonmal, das Grundprinzip des Ganzen verstehe ich eigentlich mehr oder weniger, nur an der Implementierung haperts.

    Ich poste mal meine Ansätze und das Ergebnis:

    Bild

    Wenn ich jetzt infiziert(A, rot) abfrage, lande ich in einer Endlosschleife mit glados. Was bei infiziert(A, W) rauskommt siehst du ja.

    Der ausgeblendete Ansatz darüber bringt die gleichen Ergebnisse.
    Angehängte Grafiken Angehängte Grafiken

  8. #8
    ε•ω=1 Avatar von Ramkhamhaeng
    Registriert seit
    19.07.10
    Ort
    Aralkum
    Beiträge
    9.896
    Aha, da ist noch ein Fehler drin. Es muss ja verbindung(B,A) heißen. Eine Endlosschleife sollte eigentlich nicht auftreten können, wenn in der infiziert-Relation keine Zyklen sind.
    Geändert von Ramkhamhaeng (01. November 2013 um 22:50 Uhr) Grund: Relationsname korrigiert

  9. #9
    Registrierter Benutzer Avatar von AmrodAegnor
    Registriert seit
    22.10.12
    Beiträge
    9.045
    Nope, will immer noch nicht. Naja, ich gebs nu auf, sitze schon länger dran und mir geht die Puste aus.

    Trotzdem vielen Dank für die Hilfe.

  10. #10
    Bockiges Erdmännchen Avatar von Loki
    Registriert seit
    06.05.04
    Beiträge
    25.444
    Zitat Zitat von Ramkhamhaeng Beitrag anzeigen
    Aha, da ist noch ein Fehler drin. Es muss ja verbindung(B,A) heißen.
    Müsste es nicht auch filter(B,W) sein.
    Wie, Du weißt nicht, was das Bild der Woche ist?
    Wir warten auf Deine Einsendung...

  11. #11
    ε•ω=1 Avatar von Ramkhamhaeng
    Registriert seit
    19.07.10
    Ort
    Aralkum
    Beiträge
    9.896
    Zitat Zitat von Loki Beitrag anzeigen
    Müsste es nicht auch filter(B,W) sein.
    Bei filter(B,W) zählt die Firewall zu den infizierten Systemen und bei filter(A,W) nicht. Kommt drauf an, was man da bevorzugt.

  12. #12
    Bockiges Erdmännchen Avatar von Loki
    Registriert seit
    06.05.04
    Beiträge
    25.444
    Was würde denn passieren, wenn man den Term

    infiziert(a,w) :- \= filter (a,w).


    einfügen würde?
    Wie, Du weißt nicht, was das Bild der Woche ist?
    Wir warten auf Deine Einsendung...

  13. #13
    ε•ω=1 Avatar von Ramkhamhaeng
    Registriert seit
    19.07.10
    Ort
    Aralkum
    Beiträge
    9.896
    Das ist sehr problematisch, da filter(a,w) ja für viele Tupel gar nicht definiert ist. Für diese wäre infiziert ja dann wahr.

  14. #14
    Ausgetreten
    Gast
    Die Auflösung tät mich ja interessieren.

  15. #15
    Bockiges Erdmännchen Avatar von Loki
    Registriert seit
    06.05.04
    Beiträge
    25.444
    Zitat Zitat von Ramkhamhaeng Beitrag anzeigen
    Das ist sehr problematisch, da filter(a,w) ja für viele Tupel gar nicht definiert ist. Für diese wäre infiziert ja dann wahr.
    Wir hatten uns damit damals in der Schule auch nicht so lange beschäftigt. Die Negierung eines Tupels hatten wir gar nicht gemacht. Hätte jetzt gedacht, da die eine Abbruchbedingung nur wirkt, wenn das Tupel existiert würde die andere auch nur wirken, wenn das Tupel existiert.
    Wie, Du weißt nicht, was das Bild der Woche ist?
    Wir warten auf Deine Einsendung...

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •