<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki.mafiasi.de/index.php?action=history&amp;feed=atom&amp;title=P1-WS04-MusterLoesung04.txt</id>
	<title>P1-WS04-MusterLoesung04.txt - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.mafiasi.de/index.php?action=history&amp;feed=atom&amp;title=P1-WS04-MusterLoesung04.txt"/>
	<link rel="alternate" type="text/html" href="https://wiki.mafiasi.de/index.php?title=P1-WS04-MusterLoesung04.txt&amp;action=history"/>
	<updated>2026-10-16T20:55:50Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Fachschaft Informatik</subtitle>
	<generator>MediaWiki 1.46.2</generator>
	<entry>
		<id>https://wiki.mafiasi.de/index.php?title=P1-WS04-MusterLoesung04.txt&amp;diff=3078&amp;oldid=prev</id>
		<title>PatrickFey: 1 Versionen</title>
		<link rel="alternate" type="text/html" href="https://wiki.mafiasi.de/index.php?title=P1-WS04-MusterLoesung04.txt&amp;diff=3078&amp;oldid=prev"/>
		<updated>2007-11-05T05:50:02Z</updated>

		<summary type="html">&lt;p&gt;1 Versionen&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw-interface=&quot;&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;de&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Nächstältere Version&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Version vom 5. November 2007, 05:50 Uhr&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;de&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(kein Unterschied)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>PatrickFey</name></author>
	</entry>
	<entry>
		<id>https://wiki.mafiasi.de/index.php?title=P1-WS04-MusterLoesung04.txt&amp;diff=3077&amp;oldid=prev</id>
		<title>fsrwiki_&gt;1illig: antispam</title>
		<link rel="alternate" type="text/html" href="https://wiki.mafiasi.de/index.php?title=P1-WS04-MusterLoesung04.txt&amp;diff=3077&amp;oldid=prev"/>
		<updated>2006-12-22T05:46:26Z</updated>

		<summary type="html">&lt;p&gt;antispam&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
1 a) Falsch. Die folgende intensional spezifizierte Relation ist leer:&lt;br /&gt;
&lt;br /&gt;
     { (x,y) | x ist Element von N, &lt;br /&gt;
               y ist Element von N, &lt;br /&gt;
               x &amp;gt; y,&lt;br /&gt;
               y = 2 * x }&lt;br /&gt;
&lt;br /&gt;
  b) Wahr. Relationen sind Teilmengen von Kreuzprodukten, und in&lt;br /&gt;
     diesen herrscht immer eine konstante Stelligkeit.&lt;br /&gt;
&lt;br /&gt;
  c) Falsch. Beispielsweise ist die Relation `größer oder gleich&amp;#039;&lt;br /&gt;
     reflexiv, aber aus 3 &amp;gt;= 2 folgt nicht 2 &amp;gt;= 3.&lt;br /&gt;
&lt;br /&gt;
  d) Falsch. Diese Relation ist linkseindeutig und transitiv:&lt;br /&gt;
&lt;br /&gt;
     { (1,2), (1,3), (1,4) }&lt;br /&gt;
&lt;br /&gt;
     Das liegt allerdings nur daran, daß die Prämisse &amp;quot;a·b und b·c&amp;quot;&lt;br /&gt;
     niemals erfüllt ist, die Relation ist also auf triviale und damit&lt;br /&gt;
     uninteressante Weise transitiv. &lt;br /&gt;
&lt;br /&gt;
     Wenn mindestens ein Element der Bildmenge auch in der Urbildmenge&lt;br /&gt;
     enthalten ist, ist die Aussage wahr. Wäre zum Beispiel das Paar&lt;br /&gt;
     (0,1) enthalten, so müßte laut Transitivitäts-Definition auch &lt;br /&gt;
     (0,2) enthalten sein; und (0,2) und (1,2) verstoßen gemeinsam&lt;br /&gt;
     gegen die Linkseindeutigkeit.&lt;br /&gt;
     &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2) &lt;br /&gt;
&lt;br /&gt;
% kind_von(?Kind, ?Mensch)&lt;br /&gt;
% Gelingt, wenn Mensch Vater oder Mutter von Kind ist.&lt;br /&gt;
kind_von(Kind, Mensch) :- vater_von(Mensch, Kind).&lt;br /&gt;
kind_von(Kind, Mensch) :- mutter_von(Mensch, Kind).&lt;br /&gt;
&lt;br /&gt;
% vorfahre( ?Ahn, ?Mensch)&lt;br /&gt;
% Gelingt, wenn Mensch in direkter Linie von Ahn abstammt.&lt;br /&gt;
vorfahre(Ahn, Mensch) :- kind_von(Mensch, Ahn).&lt;br /&gt;
vorfahre(Ahn, Mensch) :-&lt;br /&gt;
        kind_von(Kind, Ahn),&lt;br /&gt;
        vorfahre(Kind, Mensch).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Test:&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
?- vorfahre(julia, helga).&lt;br /&gt;
&lt;br /&gt;
Yes&lt;br /&gt;
?- vorfahre(walter, otto).&lt;br /&gt;
&lt;br /&gt;
No&lt;br /&gt;
?- vorfahre(Vorfahr, hans).&lt;br /&gt;
&lt;br /&gt;
Vorfahr = otto ;&lt;br /&gt;
&lt;br /&gt;
Vorfahr = marie ;&lt;br /&gt;
&lt;br /&gt;
Vorfahr = gerd ;&lt;br /&gt;
&lt;br /&gt;
Vorfahr = julia ;&lt;br /&gt;
&lt;br /&gt;
No&lt;br /&gt;
?- vorfahre(charlotte, Nachfahr).&lt;br /&gt;
&lt;br /&gt;
Nachfahr = barbara ;&lt;br /&gt;
&lt;br /&gt;
Nachfahr = magdalena ;&lt;br /&gt;
&lt;br /&gt;
Nachfahr = klaus ;&lt;br /&gt;
&lt;br /&gt;
Nachfahr = andrea ;&lt;br /&gt;
&lt;br /&gt;
No&lt;br /&gt;
&lt;br /&gt;
?- vorfahre(Vorfahr,Nachfahr).&lt;br /&gt;
&lt;br /&gt;
Vorfahr = otto&lt;br /&gt;
Nachfahr = hans ;&lt;br /&gt;
&lt;br /&gt;
Vorfahr = otto&lt;br /&gt;
Nachfahr = helga ;&lt;br /&gt;
&lt;br /&gt;
Vorfahr = gerd&lt;br /&gt;
Nachfahr = otto ;&lt;br /&gt;
&lt;br /&gt;
Vorfahr = johannes&lt;br /&gt;
Nachfahr = klaus ;&lt;br /&gt;
&lt;br /&gt;
Vorfahr = johannes&lt;br /&gt;
Nachfahr = andrea ;&lt;br /&gt;
&lt;br /&gt;
Vorfahr = walter&lt;br /&gt;
Nachfahr = barbara ;&lt;br /&gt;
&lt;br /&gt;
Vorfahr = walter&lt;br /&gt;
Nachfahr = magdalena ;&lt;br /&gt;
&lt;br /&gt;
Vorfahr = marie&lt;br /&gt;
Nachfahr = hans ;&lt;br /&gt;
&lt;br /&gt;
Vorfahr = marie&lt;br /&gt;
Nachfahr = helga ;&lt;br /&gt;
&lt;br /&gt;
Vorfahr = julia&lt;br /&gt;
Nachfahr = otto ;&lt;br /&gt;
&lt;br /&gt;
Vorfahr = barbara&lt;br /&gt;
Nachfahr = klaus ;&lt;br /&gt;
&lt;br /&gt;
Vorfahr = barbara&lt;br /&gt;
Nachfahr = andrea ;&lt;br /&gt;
&lt;br /&gt;
Vorfahr = charlotte&lt;br /&gt;
Nachfahr = barbara ;&lt;br /&gt;
&lt;br /&gt;
Vorfahr = charlotte&lt;br /&gt;
Nachfahr = magdalena ;&lt;br /&gt;
&lt;br /&gt;
Vorfahr = gerd&lt;br /&gt;
Nachfahr = hans ;&lt;br /&gt;
&lt;br /&gt;
Vorfahr = gerd&lt;br /&gt;
Nachfahr = helga ;&lt;br /&gt;
&lt;br /&gt;
Vorfahr = walter&lt;br /&gt;
Nachfahr = klaus ;&lt;br /&gt;
&lt;br /&gt;
Vorfahr = walter&lt;br /&gt;
Nachfahr = andrea ;&lt;br /&gt;
&lt;br /&gt;
Vorfahr = julia&lt;br /&gt;
Nachfahr = hans ;&lt;br /&gt;
&lt;br /&gt;
Vorfahr = julia&lt;br /&gt;
Nachfahr = helga ;&lt;br /&gt;
&lt;br /&gt;
Vorfahr = charlotte&lt;br /&gt;
Nachfahr = klaus ;&lt;br /&gt;
&lt;br /&gt;
Vorfahr = charlotte&lt;br /&gt;
Nachfahr = andrea ;&lt;br /&gt;
&lt;br /&gt;
No&lt;br /&gt;
?- &lt;br /&gt;
&lt;br /&gt;
Das Prädikat liefert alle errechenbaren Beziehungen genau einmal. Es&lt;br /&gt;
ist terminierungssicher in jeder Instanziierungsvariante.&lt;br /&gt;
&lt;br /&gt;
Die Relation `ist Vorfahr&amp;#039; ist antisymmetrisch (mein Vorfahr muß einer&lt;br /&gt;
früheren Generation angehören und kann daher nicht Nachfahr sein) und&lt;br /&gt;
irreflexiv (aus demselben Grund). Sie ist außerdem transitiv.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3 a) Ein Knoten ist an das Wassernetz angeschlossen, wenn er &lt;br /&gt;
&lt;br /&gt;
 I  ein Wasserwerk ist&lt;br /&gt;
 II an einen angeschlossenen Knoten angeschlossen ist.&lt;br /&gt;
&lt;br /&gt;
Eine Region ist auf dem Trockenen, wenn sie nicht ans Wassernetz&lt;br /&gt;
angeschlossen ist. Also:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% versorgt(?Ort)&lt;br /&gt;
% Gelingt, wenn der Netzknoten Ort mit Wasser versorgt ist.&lt;br /&gt;
versorgt(Ort) :-&lt;br /&gt;
  wasserwerk(Ort).&lt;br /&gt;
&lt;br /&gt;
versorgt(Ort) :-&lt;br /&gt;
  ist_angeschlossen_an(Ort,Ort2),&lt;br /&gt;
  versorgt(Ort2).&lt;br /&gt;
  &lt;br /&gt;
% auf_dem_trockenen(?Ort)&lt;br /&gt;
% Gelingt, wenn die Region Ort nicht an die Wasserversorgung&lt;br /&gt;
% angeschlossen ist.&lt;br /&gt;
auf_dem_trockenen(Ort) :-&lt;br /&gt;
  region(Ort),&lt;br /&gt;
  not(versorgt(Ort)).&lt;br /&gt;
&lt;br /&gt;
b) Knoten A wird von Knoten B mit Trinkwasser versorgt, wenn&lt;br /&gt;
er direkt oder indirekt an ihn angeschlossen ist und B Trinkwasser zu&lt;br /&gt;
vergeben hat. (Das bloße Angeschlossensein reicht nicht - zwei&lt;br /&gt;
miteinander verbundene Orte könnten ja beide vom Netz getrennt sein.)&lt;br /&gt;
&lt;br /&gt;
% wird_versorgt_von(?Senke,?Quelle)&lt;br /&gt;
% Gelingt, wenn Senke von Quelle mit Trinkwasser versorgt wird.&lt;br /&gt;
wird_versorgt_von(Senke,Quelle) :-&lt;br /&gt;
  ist_angeschlossen_an(Senke,Quelle),&lt;br /&gt;
  versorgt(Quelle).&lt;br /&gt;
&lt;br /&gt;
wird_versorgt_von(Senke,Quelle) :-&lt;br /&gt;
  ist_angeschlossen_an(Senke,Ort),&lt;br /&gt;
  wird_versorgt_von(Ort,Quelle).&lt;br /&gt;
&lt;br /&gt;
Dies Prädikat terminiert nur deshalb immer, weil das zugrundeliegende&lt;br /&gt;
Wassernetz keine Zyklen enthält.&lt;br /&gt;
&lt;br /&gt;
c) Dies Prädkat ist eine Kombination der Lösung zu b) mit den&lt;br /&gt;
vorgegebenen Fakten.&lt;br /&gt;
&lt;br /&gt;
% region_wird_versorgt_von_wasserwerk(?Region, ?W)&lt;br /&gt;
% Gelingt, wenn Region letztlich von Wasserwerk&lt;br /&gt;
% mit Wasser versorgt wird.&lt;br /&gt;
region_wird_versorgt_von_wasserwerk(Region,Wasserwerk) :-&lt;br /&gt;
  region(Region),&lt;br /&gt;
  wasserwerk(Wasserwerk),&lt;br /&gt;
  wird_versorgt_von(Region,Wasserwerk).&lt;br /&gt;
&lt;br /&gt;
d) Es müssen all jene Orte gewarnt werden, die vom gestörten&lt;br /&gt;
Wasserwerk versorgt oder mitversorgt werden: Bei einem Ausfall erhält&lt;br /&gt;
Humbarg zwar weiterhin Wasser von den anderen Wasserwerken, aber&lt;br /&gt;
insgesamt weniger. (Wir sortieren die berechnete Liste nur deshalb, um&lt;br /&gt;
Doppelte zu entfernen.)&lt;br /&gt;
&lt;br /&gt;
% ort_muß_gewarnt_werden(+Wasserwerk, -Orte)&lt;br /&gt;
% Berechnet zu einem Wasserwerk die Orte, die von dessen&lt;br /&gt;
% Störung betroffen sein können.&lt;br /&gt;
ort_muß_gewarnt_werden(Wasserwerk, Orte) :-&lt;br /&gt;
  findall(Ort, region_wird_versorgt_von_wasserwerk(Ort, Wasserwerk), L),&lt;br /&gt;
  sort(L, Orte).&lt;br /&gt;
&lt;br /&gt;
e) Es müssen genau jene Orte gewarnt werden, die teilweise von W&lt;br /&gt;
versorgt werden, also solche, die mindestens einen anderen Versorger&lt;br /&gt;
besitzen.&lt;br /&gt;
&lt;br /&gt;
% ort_muß_vor_einschränkung_gewarnt_werden(+Wasserwerk, -Orte)&lt;br /&gt;
% Berechnet zu einem Wasserwerk die Orte, deren Wasserversorgung &lt;br /&gt;
% bei einer Störung des Wasserwerks nur eingeschränkt wird.&lt;br /&gt;
ort_muß_vor_einschränkung_gewarnt_werden(Wasserwerk, Orte) :-&lt;br /&gt;
  findall(Ort,&lt;br /&gt;
          (region_wird_versorgt_von_wasserwerk(Ort, Wasserwerk),&lt;br /&gt;
           region_wird_versorgt_von_wasserwerk(Ort, Wasserwerk2),&lt;br /&gt;
           Wasserwerk \= Wasserwerk2),&lt;br /&gt;
          L),&lt;br /&gt;
  sort(L, Orte).&lt;br /&gt;
&lt;br /&gt;
f) Die Versorgungsrelation ist laut Aufgabenstellung transitiv und&lt;br /&gt;
antisymmetrisch. Sie ist außerdem (laut Lösung) irreflexiv; obwohl&lt;br /&gt;
vermutlich die Kantine im Wasserwerk Riesberg vom Werk selbst versorgt&lt;br /&gt;
wird, wird diese Beziehung durch wird_versorgt_von/2 nicht erfaßt,&lt;br /&gt;
d.h. wird_versorgt_von(X,X) gelingt nie.&lt;br /&gt;
&lt;br /&gt;
4 a) Typische symmetrische Relationen sind solche, die jeweils zwei&lt;br /&gt;
Dingen dieselbe Eigenschaft zuschreiben:&lt;br /&gt;
&lt;br /&gt;
  A hat dieselbe Nationalität wie B&lt;br /&gt;
  A und B liegen weniger als 10km entfernt&lt;br /&gt;
  A darf für B in Formeln substituiert werden&lt;br /&gt;
&lt;br /&gt;
Die Symmetrie geht verloren, wenn eine Beziehung einseitig sein kann:&lt;br /&gt;
&lt;br /&gt;
  A liebt B (unglücklich)&lt;br /&gt;
  A hat eine billige Flugverbindung nach B &lt;br /&gt;
    (im Zeitalter der Lockangebote)&lt;br /&gt;
&lt;br /&gt;
b) 1:m-Relationen sind solche, die Funktionen (eindeutige Abbildungen)&lt;br /&gt;
beschreiben:&lt;br /&gt;
&lt;br /&gt;
  A ist der Vater von B&lt;br /&gt;
  A ist die Quersumme von B&lt;br /&gt;
  A ist der Geburtstag von B&lt;br /&gt;
&lt;br /&gt;
Wenn mehr als ein Paar möglich ist, ist die Eigenschaft verletzt:&lt;br /&gt;
&lt;br /&gt;
  A ist der Trainer von B&lt;br /&gt;
    (Ostblockteams haben mehr Trainer als Athleten)&lt;br /&gt;
  Autor A hat Buch B verfaßt&lt;br /&gt;
    (es gibt Kollaborationen)&lt;br /&gt;
&lt;br /&gt;
c) Transitive Relationen sind solche, die sich über mehrere&lt;br /&gt;
Verknüpfungen fortsetzen:&lt;br /&gt;
&lt;br /&gt;
  A ist größer als B&lt;br /&gt;
  A könnte B angesteckt haben&lt;br /&gt;
  A liegt flußaufwärts von B&lt;br /&gt;
&lt;br /&gt;
Nicht transitiv sind Relationen, wenn die Beziehung zum&lt;br /&gt;
Ursprungselement verlorengeht:&lt;br /&gt;
&lt;br /&gt;
  A und B sind verwandt&lt;br /&gt;
    (Eltern sind mit ihrem Kind verwandt, aber nicht miteinander)&lt;br /&gt;
  A liegt nahe bei B &lt;br /&gt;
    (das Doppelte einer kurzen Entfernung ist nicht mehr kurz)&lt;br /&gt;
&lt;br /&gt;
d) Reflexive Relationen sind solche, bei denen Selbstbezug nicht nur&lt;br /&gt;
möglich, sondern allgegenwärtig ist:&lt;br /&gt;
&lt;br /&gt;
  A ist nicht größer als B&lt;br /&gt;
  A und B haben dieselbe Hausnummer&lt;br /&gt;
  A trainiert mit B&lt;br /&gt;
&lt;br /&gt;
Nicht reflexiv sind Relationen, wenn es mindestens ein Gegenbeispiel&lt;br /&gt;
gibt:&lt;br /&gt;
&lt;br /&gt;
  A liebt B &lt;br /&gt;
    (es gibt gänzlich gefühlskalte Gesellen)&lt;br /&gt;
  A und B haben dasselbe Handicap &lt;br /&gt;
    (nicht alle Personen spielen überhaupt Golf)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5. &lt;br /&gt;
&lt;br /&gt;
older(lux, mary).&lt;br /&gt;
older(mary, cecilia).&lt;br /&gt;
older(cecilia, therese).&lt;br /&gt;
older(therese, bonnie).&lt;br /&gt;
&lt;br /&gt;
older(A,C) :- older(A,B), older(B,C).&lt;br /&gt;
&lt;br /&gt;
Nein, die gänzlich unterspezifizierte Anfrage liefert nur 7 der 10&lt;br /&gt;
möglichen `ältere Schwester&amp;#039;-Paare. Bei Umstellung des Regelkörpers&lt;br /&gt;
werden sogar nur vier Paare gefunden. Je nachdem, wieviele Schwestern&lt;br /&gt;
dargestellt sind, wird also nur ein kleiner Teil der tatsächlichen&lt;br /&gt;
Wahrheit ausgegeben, bevor erstmals eine zyklische Beweisführung&lt;br /&gt;
versucht wird. Das liegt daran, daß die Struktur des Lösungsraumes mit&lt;br /&gt;
der Zahl der Schwestern beliebig kompliziert werden kann, aber Prolog&lt;br /&gt;
nur die einfache Tiefensuche ohne Längenbegrenzung beherrscht. &lt;br /&gt;
&lt;br /&gt;
Man kann die Suche nur dadurch dazu zwingen, zuerst die kürzeren&lt;br /&gt;
Ableitungen aufzubauen, indem man eine Prüfung einbaut, welche&lt;br /&gt;
Teilziele in einer Ableitung bereits passiert wurden. Das mittlere&lt;br /&gt;
Argument der erweiterten Version speichert diese Ziele und verhindert&lt;br /&gt;
so, daß unendlich viel Zeit in einer Ableitung verbracht wird.&lt;br /&gt;
&lt;br /&gt;
older_sister(lux, mary).&lt;br /&gt;
older_sister(mary, cecilia).&lt;br /&gt;
older_sister(cecilia, therese).&lt;br /&gt;
older_sister(therese, bonnie).&lt;br /&gt;
&lt;br /&gt;
older(A,_,B):-older_sister(A,B).&lt;br /&gt;
older(A,List,C) :-&lt;br /&gt;
        older_sister(A,X),&lt;br /&gt;
        not(member(X, List)),&lt;br /&gt;
        older(X,[X|List],C).&lt;br /&gt;
&lt;br /&gt;
Dann ist aber ein Hilfsprädikat notwendig, um die vorgegebene&lt;br /&gt;
zweistellige Schnittstelle wiederherzustellen.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>fsrwiki_&gt;1illig</name></author>
	</entry>
</feed>