Sie sind nicht angemeldet.

Kaos

Lesen, denken, flamen!

  • »Kaos« ist männlich
  • »Kaos« ist der Autor dieses Themas

Beiträge: 973

Registrierungsdatum: 16.10.2005

Wohnort: Han. / Vahrenwald Sinnvolle Beiträge: 7

1

26.07.2009, 19:46

Künstliche Intelligenz I - Klausur

Hallo zusammen,
hat jemand hier in den letzten 3 Semestern die KI I Prüdung geschrieben? Da die Übung und die Vorlesung doch etwas auseinander gehen, habe ich ehrlich gesagt nicht so die große Idee wie da die Prüfung aussehen könnte. Die "Beispielklausuren" die Online sind, sind leider beide zu 90% identisch und irgendwie passen sie meiner Meinung nach nicht ganz und sind eventuell schon veraltet.

Wer also ein paar Informationen hat: bitte per PN an mich, oder einfach hier posten.

Viele Grüße

kaos

Zitat

Man findet immer dort besonders viel Chaos, wo man nach Ordnung sucht. Das Chaos besiegt die Ordnung, weil es besser organisiert ist.

cartman

Junior Schreiberling

  • »cartman« ist männlich

Beiträge: 154

Registrierungsdatum: 10.03.2009

Wohnort: Laatzen

2

26.07.2009, 21:41

ich hab sie zwar vor 4 semestern geschrieben, aber personal und material scheint beim überfliegen dasselbe zu sein, und auch die probeklausuren ähnelten der damaligen klausur

- 2-3 prolog aufgaben, die in meiner klausur damals 1:1 aus den übungen waren (gab ne menge punkte, an die 40% oder so ähnlich)
- die laufzeiten bei den verschiedenen formen der suche hinschreiben
- agententypen aufschreiben
- "normalen" satz in prädikatenlogik schreiben
- den normalen satz dann in knf umwandeln
- dann gab es 1-2 kurze wissensfragen, themengebiet weiß ich nicht mehr
- 1 größere aufgabe aus dem thema constraint satisfaction problems und zwar das von folie 9, nur etwas abgeändert, an den genauen aufgabentext kann ich mich leider nicht mehr erinnern

hoffe dir wenigstens etwas geholfen zu haben

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »cartman« (26.07.2009, 21:48)


h!Ob

Praktikant

  • »h!Ob« ist männlich

Beiträge: 15

Registrierungsdatum: 01.10.2007

Wohnort: Hannover

3

31.07.2009, 08:15

Wie sieht's mit Hilfsmitteln aus?

psycorama

geektaku

  • »psycorama« ist männlich

Beiträge: 24

Registrierungsdatum: 08.11.2008

4

03.08.2009, 14:21

schreibt denn hier noch wer ausser Kaos und mir dieses Semester diese Klausur?
Man koennte sich dann ja fuer gemeinsame Lern-Session verabreden.
It's not the monsters under your bed, it is the man next door, that makes you fear, makes you cry, makes you cry for the child. -- Dead to the World

Soul

Trainee

Beiträge: 79

Registrierungsdatum: 04.10.2007

5

03.08.2009, 15:34

Meld
Ich wags auch, obwohl mir bislang jeder dem ich dieses scheinbare Vergehen gestehe, sagt, dass die Chancen zu bestehen gegen Null tendieren -.-

6

03.08.2009, 15:47

Bin auch dabei, voraussichtlich.

Wozu die Panikmache? Prolog ist schon was Eigenes, ok, aber Scheme war es auch...

Was ist denn die Begründung von denen, die sagen, es sei "unmöglich zu bestehen"?

Wir können uns ja hier mal zu den Übungen austauschen... Mache gerade den zweiten Teil von den Listen und hab - zumindest heute - meine Verzweiflung, die gestern recht intensiv war, halbwegs überwunden...

cartman

Junior Schreiberling

  • »cartman« ist männlich

Beiträge: 154

Registrierungsdatum: 10.03.2009

Wohnort: Laatzen

7

03.08.2009, 16:05

Meld
Ich wags auch, obwohl mir bislang jeder dem ich dieses scheinbare Vergehen gestehe, sagt, dass die Chancen zu bestehen gegen Null tendieren -.-
warum das, ist das persönlich auf dich :D oder auf die klausur bezogen, so schwer war die gar nicht,trotz des großen prolog punktanteils,als ich die damals (allerdings im ws) geschrieben habe, gab es sogar 2,5 stunden zeit

8

03.08.2009, 16:07

Hab ihr denn schon die Videos zu den Übungen angeguckt?

Soul

Trainee

Beiträge: 79

Registrierungsdatum: 04.10.2007

9

03.08.2009, 16:34

Videos?
Nein, im moment stress ich mich eher mit swt+swq was für mich davor rankommt... muss ich vor den Videos nun Angst haben, du sagst das so seltsam ^^'
Und ich hoffe mal, dass nicht auf mich bezogen wurde, was die niedrigen Bestehungschancen anbelangt, aber hm... ausschließen kann ich es auch nicht.

10

03.08.2009, 16:47

Das sind Videos vom WS04/05: http://www.kbs.uni-hannover.de/Lehre/KI1…ung/uebung.html

Bin bei Video 4 und bis hierher haben sich die Übungszettel von damals nicht verändert. Das Schöne ist, dass doch die ein und andere Randinfo zusätzlich kommt...

11

03.08.2009, 21:34

Würd gern an dieser Stelle allen KI-Lernern einen Tipp geben, vielleicht erspart euch das Zeit.

Auch wenns dämlich klingt: Wenn ihr die Aufgabenblätter durcharbeitet, dann verinnerlicht euch die Algorithmen, die vor dem Aufgabenblock in den Übungen vorgestellt wurden. Habs gerade bei der Palindrom-Aufgabe gemerkt (wer die Aufgabe noch nicht gemacht hat und noch machen möchte: Am besten den folgenden Absatz nicht lesen, könnten zu viele Tipps drin stecken):

Erst dadurch, dass ich append und davon abgeleitet den rev-Algo verstanden hab konnte ich die Aufgabe in 3 Minuten lösen.

Also: Schaut euch die Algos intensiv an und _versteht_ sie, programmiert sie ggf. nach und macht Gebrauch vom Tracer!

Wer findet, dass dieser Beitrag sinnlos war - kann mich mal ;)

psycorama

geektaku

  • »psycorama« ist männlich

Beiträge: 24

Registrierungsdatum: 08.11.2008

12

04.08.2009, 16:45


Wozu die Panikmache? Prolog ist schon was Eigenes, ok, aber Scheme war es auch...


Ich schiebe zwar keinerlei Panik (dafuer hab ich ganz andere Kaliber), aber ich zB habe kein Scheme gemacht, da ich aus der Etechnik komme. :)
It's not the monsters under your bed, it is the man next door, that makes you fear, makes you cry, makes you cry for the child. -- Dead to the World

Siggi2k

Trainee

  • »Siggi2k« ist männlich

Beiträge: 54

Registrierungsdatum: 17.11.2005

13

10.08.2009, 13:09

Klausuraufgaben

Also wenn ich mir so die Klausuraufgaben ansehe weiß ich nicht wirklich was das nun mit der Klausur werden soll.

Kaos

Lesen, denken, flamen!

  • »Kaos« ist männlich
  • »Kaos« ist der Autor dieses Themas

Beiträge: 973

Registrierungsdatum: 16.10.2005

Wohnort: Han. / Vahrenwald Sinnvolle Beiträge: 7

14

10.08.2009, 14:59

Grüße,
ich hätte mal ne Frage zur Crossword Aufgabe aus der 2. Übung. Ich hab sie nun gelöst, aber muss sagen, dass das ganze etwas aufgeblasen wirkt. Gibt es dafür noch eine elegante kürzere Lösung? Und wenn ja wie? (z.b kann ich das ganze Wirrwar um die Wörter müssen alle unterschiedlich sein verkürzen? )

Gruß

Kaos

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
word(abalone,a,b,a,l,o,n,e).
word(abandon,a,b,a,n,d,o,n).
word(enhance,e,n,h,a,n,c,e).
word(anagram,a,n,a,g,r,a,m).
word(connect,c,o,n,n,e,c,t).
word(elegant,e,l,e,g,a,n,t).

crossword(V1,V2,V3,H1,H2,H3) :-
word(V1,VW11,VW12,VW13,VW14,VW15,VW16,VW17),
word(V2,VW21,VW22,VW23,VW24,VW25,VW26,VW27),
word(V3,VW31,VW32,VW33,VW34,VW35,VW36,VW37),

word(H1,HW11,HW12,HW13,HW14,HW15,HW16,HW17),
word(H2,HW21,HW22,HW23,HW24,HW25,HW26,HW27),
word(H3,HW31,HW32,HW33,HW34,HW35,HW36,HW37),

HW12=VW12,HW14=VW22,HW16=VW32,
HW22=VW14,HW24=VW24,HW26=VW34,
HW32=VW16,HW34=VW26,HW36=VW36,

V1 \= V2, V1 \= V3, V1 \= H1, V1 \= H2, V1 \= H3,
V2 \= V3, V2 \= H1, V2 \= H2, V2 \=H3,
V3 \= H1, V3 \= H2, V3 \= H3,
H1 \= H2, H1 \= H3,
H2 \= H3.


/Edit:
Wenn ich schon bei Fragen bin, ich hab da direkt noch eine:
Ich wollte mir Zahlen rekursiv definieren.
/Edit2: Oh sorry, ich habe noch etwas aus dem Skript vergessen.

Quellcode

1
zahl(succ(X)):-zahl(X).
Der Nachfolger einer Zahl, ist auch eine Zahl. (Dies alleine bewirkt allerdings nicht, dass eine Zahl ausser 0, eine Zahl ist. Wieso !?)
Die Idee: 0 ist eine Zahl.

Quellcode

1
zahl(0).

Ist die Zahl der Nachfolger von 0 (also eine 1), dann ist sie auch eine Zahl.

Quellcode

1
zahl(X) :- zahl(succ(0)).


Nun wollte ich die Rekursion einbauen. Also, wenn eine Vatriablel ein Nachfolger einer Zahl ist, die ein Nachfolger von 0 ist, dann ist auch sie eine Zahl. Allerdings war dies nicht nötig, da schon alle Zahlen als eben solche erkannt werden. Daher meine Frage: Verstehe ich meine eigene Funktion nicht richtig, oder ist succ eventuell rekursiv definiert?

Gruß

Kaos

Zitat

Man findet immer dort besonders viel Chaos, wo man nach Ordnung sucht. Das Chaos besiegt die Ordnung, weil es besser organisiert ist.

Siggi2k

Trainee

  • »Siggi2k« ist männlich

Beiträge: 54

Registrierungsdatum: 17.11.2005

15

10.08.2009, 17:52

Also wegen des Crosswords kann ich dir nur sagen das man es am kompaktesten so macht wie in der Übung:


word(abalone,a,b,a,l,o,n,e).
word(abandon,a,b,a,n,d,o,n).
word(enhance,e,n,h,a,n,c,e).
word(anagram,a,n,a,g,r,a,m).
word(connect,c,o,n,n,e,c,t).
word(elegant,e,l,e,g,a,n,t).


crosswd(V1,V2,V3,H1,H2,H3) :-
word(V1,X12,X22,X32,X42,X52,X62,X72),
word(V2,X14,X24,X34,X44,X54,X64,X74),
word(V3,X16,X26,X36,X46,X56,X66,X76),
word(H1,X21,X22,X23,X24,X25,X26,X27),
word(H2,X41,X42,X43,X44,X45,X46,X47),
word(H3,X61,X62,X63,X64,X65,X66,X67).


dadurch hast du ja auch die 12=21 Prüfung automatisch, die Prüfung auf doppelten kann man weglassen.
Aber ansonsten ist es ja richtig. Ich hab es aber auch erst über den komplizierten Weg versucht. - gleich viel verwirrender gewesen.

16

10.08.2009, 22:50

Wenn ich schon bei Fragen bin, ich hab da direkt noch eine:
Ich wollte mir Zahlen rekursiv definieren.
/Edit2: Oh sorry, ich habe noch etwas aus dem Skript vergessen.

Quellcode

1
zahl(succ(X)):-zahl(X).
Der Nachfolger einer Zahl, ist auch eine Zahl. (Dies alleine bewirkt allerdings nicht, dass eine Zahl ausser 0, eine Zahl ist. Wieso !?)
Die Idee: 0 ist eine Zahl.

Quellcode

1
zahl(0).

Ist die Zahl der Nachfolger von 0 (also eine 1), dann ist sie auch eine Zahl.

Quellcode

1
zahl(X) :- zahl(succ(0)).


Nun wollte ich die Rekursion einbauen. Also, wenn eine Vatriablel ein Nachfolger einer Zahl ist, die ein Nachfolger von 0 ist, dann ist auch sie eine Zahl. Allerdings war dies nicht nötig, da schon alle Zahlen als eben solche erkannt werden. Daher meine Frage: Verstehe ich meine eigene Funktion nicht richtig, oder ist succ eventuell rekursiv definiert?


Ich weiß nicht, wie succ intern implementiert ist (ist es das überhaupt?). Allerdings ging es bei dieser Aufgabe um das Verständnis, wie Rekursion in Prolog funktioniert.
Der Witz bei dem Ganzen liegt ja insbesondere darin, dass man mit den Rekursionen mit Werten arbeitet, die erstmal gar keine sind, sondern nur irgendwelche Variablen auf dem Stack. Erst, wenn man die Rekursion bis ganz zum Schluss (bzw.: Anfang) durchlaufen hat wird ein Startwert gesetzt und aufgrund dieses Startwertes werden dann alle andere Werte ermittelt, die auf dem Stack "geparkt" wurden.

Nochmal zu deinem Code:

Zitat

Quellcode

1
2
zahl(0).
zahl(X) :- zahl(succ(0)).
Wie kommst du denn darauf, dass dieses Programm von Anfang an deine Zahlen als solche erkennt? Hast du den Tracer angeschmissen? Vielleicht implementierst du mal eine Funktion "mySucc", die das Gleiche erledigt und traced dann noch einmal?

Kaos

Lesen, denken, flamen!

  • »Kaos« ist männlich
  • »Kaos« ist der Autor dieses Themas

Beiträge: 973

Registrierungsdatum: 16.10.2005

Wohnort: Han. / Vahrenwald Sinnvolle Beiträge: 7

17

11.08.2009, 11:42

Vielen Dank für die ersten Antworten.
Um noch mal mein Problem zu verdeutlichen.

Quellcode

1
2
zahl(0).
zahl(succ(X)) :- zahl(X).


Führt dazu, dass Zahlen so aussehen:

Quellcode

1
2
3
4
X = 0 ;
X = succ(0) ;
X = succ(succ(0)) ;
X = succ(succ(succ(0)))


Was ja absolut richtig ist, aber dadurch ist nunmal "3" keine Zahl. Dies wollte ich korrigieren. Wichtige Anmerkung: Diese Zeile funktioniert natürlich nicht ohne die oberen Beiden!

Quellcode

1
zahl(X) :- zahl(succ(0)).


Folgende Zeile bewirkt, lustige Dinge, aber unter anderem, dass z.B "7" eine Zahl ist. Wieso? Und was macht dieses verfluchte Stück Code? Jemand eine Idee? Trace zahl(7). :

Quellcode

1
2
3
4
5
6
7
  Call: (7) zahl(7) ? creep
   Call: (8) zahl(succ(0)) ? creep
   Call: (9) zahl(0) ? creep
   Exit: (9) zahl(0) ? creep
   Exit: (8) zahl(succ(0)) ? creep
   Exit: (7) zahl(7) ? creep
true


Ich selber vermute ja, dass ich "succ" nicht richtig verstehe, kann mir da jemand weiterhelfen?

Kaos

Zitat

Man findet immer dort besonders viel Chaos, wo man nach Ordnung sucht. Das Chaos besiegt die Ordnung, weil es besser organisiert ist.

18

11.08.2009, 12:30

Hi,

nach meiner Kenntnis ist succ() _keine_ implementierte Funktion in Prolog. Der Gedanke bei dieser Aufgabe - wie du ja schon richtig festgestellt hast - ist lediglich, dass man sagt: Wir definieren Null als eine Zahl. WENN Null eine Zahl ist, DANN sind auch ihre Nachfolger eine Zahl.

Das Programm, wie du es definiert hast:

Quellcode

1
2
3
zahl(0). %% ist ein Fakt
zahl(succ(X)) :- zahl(X).
zahl(X) :- zahl(succ(0)).


Das ist eine Tautologie. Du sagst: Jede beliebige Zahl matched, wenn gilt: zahl(succ(0)). Allerdings macht Prolog nicht das, was du jetzt denkst, nämlich: "Ich überprüfe, ob 0 ein Vorgänger von 7 ist". Sondern Prolog guckt: Wann gilt denn zahl(succ(0))? Und Prolog findet darauf eine Antwort: zahl(succ(X)) :- zahl(X). Hier versucht Prolog wieder zu matchen: Wann gilt zahl(X)? Naja, zum Beispielbei zahl(0). Jetzt werden alle Zwischenmatchings zurückgespult und am Ende steht für Prolog fest: Aha, zahl(7) stimmt, weil zahl(0) stimmt.

Ich hab mal was zusammengeschrieben, was funktioniert (wer einen Fehler findet: Bitte bitte Bescheid sagen, das würde darauf hindeuten, dass ich selber etwas noch nicht ganz verstanden habe!):

Quellcode

1
2
3
4
5
6
zahl(0).
zahl(X):-
	mySucc(X).
mySucc(X):-
	Y is X-1,
	zahl(Y).


Wenn man jetzt aufruft:
zahl(7).
und sich den Tracer anguckt sieht man, dass jetzt rekursiv mySucc mit dem dekrementierten Wert aufgerufen wird. Das passiert solange, bis zahl(0) erreicht wird. Da zahl(0) ein Fakt ist geht Prolog davon aus, dass dies wahr ist und somit alle anderen Zahlen, die im Verlauf des Programms überprüft wurden, es auch sind.

Kaos

Lesen, denken, flamen!

  • »Kaos« ist männlich
  • »Kaos« ist der Autor dieses Themas

Beiträge: 973

Registrierungsdatum: 16.10.2005

Wohnort: Han. / Vahrenwald Sinnvolle Beiträge: 7

19

11.08.2009, 14:01

Joar, auf die Art und weise kannst du es auch machen, allerdings brauchst du dafür keine Zwischenfunktion (vermute ich mal). Es sollte auch so gehen:

Quellcode

1
2
zahl(0).
zahl(X) :- Y is X-1, zahl(Y).

Zitat

Man findet immer dort besonders viel Chaos, wo man nach Ordnung sucht. Das Chaos besiegt die Ordnung, weil es besser organisiert ist.

20

11.08.2009, 14:09

Richtig, damit wollte ich dir ja auch nur verdeutlichen, was succ im Prinzip machen soll...