Dies ist eine statische Kopie unseres alten Forums. Es sind keine Interaktionen möglich.
This is a static copy of our old forum. Interactions are not possible.

Kaos

Lesen, denken, flamen!

  • "Kaos" is male
  • "Kaos" started this thread

Posts: 973

Date of registration: Oct 16th 2005

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

1

Sunday, July 26th 2009, 7:46pm

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

Quoted

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" is male

Posts: 154

Date of registration: Mar 10th 2009

Location: Laatzen

2

Sunday, July 26th 2009, 9:41pm

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

This post has been edited 2 times, last edit by "cartman" (Jul 26th 2009, 9:48pm)


h!Ob

Praktikant

  • "h!Ob" is male

Posts: 15

Date of registration: Oct 1st 2007

Location: Hannover

3

Friday, July 31st 2009, 8:15am

Wie sieht's mit Hilfsmitteln aus?

psycorama

geektaku

  • "psycorama" is male

Posts: 24

Date of registration: Nov 8th 2008

4

Monday, August 3rd 2009, 2:21pm

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

Posts: 79

Date of registration: Oct 4th 2007

5

Monday, August 3rd 2009, 3:34pm

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

6

Monday, August 3rd 2009, 3:47pm

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" is male

Posts: 154

Date of registration: Mar 10th 2009

Location: Laatzen

7

Monday, August 3rd 2009, 4:05pm

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

Monday, August 3rd 2009, 4:07pm

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

Soul

Trainee

Posts: 79

Date of registration: Oct 4th 2007

9

Monday, August 3rd 2009, 4:34pm

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

Monday, August 3rd 2009, 4:47pm

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

Monday, August 3rd 2009, 9:34pm

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" is male

Posts: 24

Date of registration: Nov 8th 2008

12

Tuesday, August 4th 2009, 4:45pm


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" is male

Posts: 54

Date of registration: Nov 17th 2005

13

Monday, August 10th 2009, 1:09pm

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" is male
  • "Kaos" started this thread

Posts: 973

Date of registration: Oct 16th 2005

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

14

Monday, August 10th 2009, 2:59pm

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

Source code

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.

Source code

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.

Source code

1
zahl(0).

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

Source code

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

Quoted

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" is male

Posts: 54

Date of registration: Nov 17th 2005

15

Monday, August 10th 2009, 5:52pm

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

Monday, August 10th 2009, 10:50pm

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.

Source code

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.

Source code

1
zahl(0).

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

Source code

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:

Quoted

Source code

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" is male
  • "Kaos" started this thread

Posts: 973

Date of registration: Oct 16th 2005

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

17

Tuesday, August 11th 2009, 11:42am

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

Source code

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


Führt dazu, dass Zahlen so aussehen:

Source code

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!

Source code

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). :

Source code

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

Quoted

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

18

Tuesday, August 11th 2009, 12:30pm

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:

Source code

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!):

Source code

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" is male
  • "Kaos" started this thread

Posts: 973

Date of registration: Oct 16th 2005

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

19

Tuesday, August 11th 2009, 2:01pm

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:

Source code

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

Quoted

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

20

Tuesday, August 11th 2009, 2:09pm

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