Beiträge von bigisoft

    Eine Frage zum Beispiel 2, muss meine erstelle Datei genau so formatiert sein wie die dome_sample_output, weil bei meinem Programm wird das nur in einem ausgegeben ohne line breaks usw.

    Sollte in deinen Fakten (W) zum Beispiel sowas vorkommen => Ex (R(x) v Q(x)) musst du x durch eine neue Konstante ersetzen zum Beispiel a. Sollten in W auch noch All Quantoren vorkommen lass sie einfach so stehen!
    Danach musst du in deinen Defaults alle Vorkommnisse von x mit der neuen Konstante a ersetzen die du vorher eingesetzt hast! Danach ist alles geschlossen!
    Also Zusammenfassend, alle E - Quantoren skolamisieren, All Quantor gleich lassen, dann die neu eingeführten Konstanten auch in die Defaults einsetzen damit diese keine freien Variablen mehr haben!

    Vielleicht kannst du mir erklären wie ich Ex Q(x) berücksichtigen muss, was kann ich da statt x einsetzen ?
    Beim Vx kann ich ja alle Konstanten einsetzen (a,b,c) oder ?
    Und warum ist -Q(b) nicht auch in dem Tasm ?? Das kann ja auch nicht von der T hergeleitet werden oder?
    Das ist mir bissl unklar DANKE ;)


    Und beim Default kommt mir beim zweiten Cn Delta auch W U {p, -p} raus

    So ich versuche es nochmals =>
    Laut Angabe ist S1 Teilmenge von S2, wir versuchen dies indirekt zu zeigen und sagen das S1 eine echte Teilmenge von S2 ist, bedeutet laut Definition: S2 ist eine Teilmenge von S1, aber S2 darf nicht gleich S1 sein, wenn es eine echte Teilmenge ist!


    Eine Regel ist Element von P ^S2 wenn, {bk+1, …. , bn} geschnitten mit S2 = 0
    Eine Regel ist Element von P ^S1 wenn, {bk+1, …. , bn} geschnitten mit S1 = 0


    In jedem Fall enthält ein Redukt aber alle Fakten eines logischenProgramms sowie alle Regeln ohne Default-Negation.





    Sollte jetzt S1 eine Teilmenge von S2 sein, muss S1 in S2 enthalten sein, sprich im Redukt von S1 müssen mindestens alle Regeln von S2 vorkommen.
    Da S1 aber ein Answer Set ist und laut Definition siehe von oben =>

    M is an answer set of a ground program P iff it is a minimal set of literals (w.r.t. set inclusion) which is a model of P
    M.

    kann S2 da dies auch ein Answer Set ist nicht mehr Regeln als S1 enthalten und ist somit keine echte Teilmenge sondern nur eine Teilmenge!
    => S1 = S2


    Kann man das so sagen ???
    Danke!!!!

    Ja aber wenn du R als leer annimmst ist es ja ein spezielles Programm im Angabetext steht es soll aber für jedes Programm R gelten.
    Jedoch gilt die Implikation (i) -> (ii) meiner Meinung schon, da ja AS( P ) definiert wird als alle answer sets des Programm P, damit kann ich ja die zweite Aussage wie folgt zerlegen =>
    AS( P ) vereinigt AS( R ) = AS( Q ) vereinigt AS ( R ), da wir ja schon aus Punkt (i) wissen, das AS( P ) = AS( Q ) ist, und das AS alle möglichen answer Set findet von R muss auch dies Aussage AS( P ) vereinigt AS( R ) = AS( Q ) vereinigt AS ( R ) immer wahr sein!

    Danke einmal für die Erklärung!
    Ich habe mir jetzt mal mit der Hilfe eines Buches folgenden Ansatz erarbeitet:
    Nehmen wir an ich habe ein Programm P0, das wie folgt aussieht =>
    P0 = { P(a) <- not Q(a)
    P(b) <- not Q(b)
    Q(a)}
    Wenn ich jetzt ein Answer Set S0 bilde schaut dies ja folgendermaßen aus => S0 = {Q(a),P(b)}


    Dann gibt es eine Proposition die folgendes sagt:
    (1) Wenn R eine Regel in P ist und A1,….,An Teilmenge von S und not B1, ….. not B2 geschnitten mit S = 0 sind dann ist der head( r ) in S
    Daher kann man sagen, dass jede Antwortmenge eines erweiternden Programms P enthält die Fakten von P.


    S1 ist bei uns ja auch ein Answer Set von P0, durch Regel (1) müssen alle Fakten in S1 vorkommen, das heißt bei uns Q(a) Element von S1
    Da Q(b) nicht als Kopf einer Regel von P0 auftritt ist Q(b) kein Element von S1 da es ja kein Fakt ist. Zusätzlich ist aber durch die Regelanwendung aber
    P(b) Element von P^S1 => P(b) Element S1.
    Daher ist S0 Teilmenge von S1 und beide sind gleich!


    Gilt das als Lösung für das Beispiel ??

    Mhm also ich muss sagen ich hätte es auch eher so wie Stampi interpretiert, das S1 und S2 Answer Sets von einem Programm P sind.
    Weil wenn es zwei verschieden Programm wären müssten die ja auch anders benannt werden oder ?
    So wie bei Beispiel 1 da steht ja auch Programm P und Q.

    Wie kommst du bei Punkt b auf 16 Kandidaten, du hast ja bei Punkt b nur 2 Defaults daher 2 ^2 = 4 mögliche Kandidaten!
    Bei Punkt c hast du dann 16.
    Bei Punkt a. schaut dein zweiter Default so aus => druglord(x) : defense (x)/ defense(x)

    Du musst auch die Komponenten definieren =>


    substation(s).
    battery(b).
    generator(g).



    und du musst das(cg,20) in eine neue Zeile schreiben weil sonst ist es ein Kommentar weil vor der Zeile ein % steht!

    Also laut Tutor, musst die T genau so schließen wie es in den Folien nmr3.pdf ab Seite 12 geschrieben steht.
    Dann sollte folgendes rauskommen => W = {Vx(P(x) v Q(x)), R(a) v Q(a), Vx(R(x) -> -Q(x))}
    und für delta => {P(a) : -Q(a) / -Q(a), Q(a) : -P(a) / -P(a), T: -R(a) / -R(a)}

    Man hat offene Fakten und muss diese mal schließen!
    Das heißt ich nehme für E x eine neue Konstante zum Beispiel a und für Vx darf ich dann auch a nehmen!
    Das bedeutet W = {P(a) v Q(a), R(a) v Q(a), R(a) -> -Q(a)}
    Jetzt ist mir aber nicht wirklich klar wie ich auf dieses W die Regeln aus Delta anwenden kann, da die Regeln in Delta
    ja nur ein Prädikat auf der linken Seite haben.
    Leider finde ich auch zu diesem Problem keine Hilfe, da bei allen Beispielen in W mindestens ein Prädikat alleine vorkommt!
    Vielleicht kann mir ja wer helfen !
    Danke

    Naja das wichtigste ist eigentlich dass eine Regel so aussieht
    alarm(X) :- sensor(on), temperature(99)


    Also ein Alarm geht an, wenn der sensor an ist und die Temperatur 99 °C beträgt.
    Wie du siehst das Symbol :- kann man als if lesen und den Beistrich (,) als UND zwischen den Bedingungen.
    Variablen beginnen mit Großbuchstaben, Konstanten mit Kleinbuchstaben.
    Und der Rest ist eigentlich dann nur ausprobieren!

    Also ich komme jetzt auf das =>
    Diagnosis: ok(b) ok(g) bad_battery_control(s)


    Ist leider auch noch immer falsch, aber du musst auch wenn der Generator nicht läuft need_maintenance(g) und ok(g) dafür implementieren!


    Ich bekomme jetzt alle Diagnosen raus, bei mir war der Fehler, dass ich mich verschrieben habe, sprich im Hypothesen file ist es anders drinnen gestanden als dann in der Implementierung.

    Es kommt jetzt so bei mir raus (Ich hoffe das die Reihenfolge egal ist) :
    Diagnosis: ok(b) bad_battery_control(s) needs_maintenance(g)
    Diagnosis: ok(b) ok(g) bad_battery_control(s)