[Progra] Übung 12 Verständnisproblem

[Progra] Programmierung
[DSAL] Datenstrukturen und Algorithmen
[SWT] Softwaretechnik
[DB] Datenbanken und Informationssysteme

Übung 12 Verständnisproblem

Beitragvon proxylittle » 30.01.08 23:44

Hi.. ich hab mir jetzt 10x die Aufgabenstellung zu 1b) angeschaut und komm nicht drauf was geordert ist:

Implementieren Sie eine Funktion mapTree, die auf jeden Wert in den Knoten eines Baums eine als Parameter übergebene Funktion anwendet. Das heißt, der Aufruf mapTree f t liefert einen Baum vom Typ Tree b, wenn der Baum t den Typ Tree a und die Funktion f den Typ a-> b hat.


Ehm.. ok?! Wie teste ich sowas??? Weil ich hab keinen Ansatz bzw. Verständnis grad bezügl. der Aufgabe. Liegt auch vielleicht daran das es so spät ist. :roll:

Bitte um kleinen Tip wie ich das verstehen soll. Danke!
Code: Alles auswählen
<!--   No Comment   -->
Benutzeravatar
proxylittle
 
Beiträge: 106
Registriert: 28.01.08 15:38
Wohnort: Aachen (Köln Wochenende)

Beitragvon Coolcat » 31.01.08 00:25

Definiert man:
t = Node 1 (Node 2 Empty Empty) (Node 3 Empty Empty)

f 1 = "Text1"
f 2 = "Text2"
f 3 = "Text3"

Dann ergibt der Aufruf
mapTree f t
folgenden Baum:
Node "Text1" (Node "Text2" Empty Empty) (Node "Text3" Empty Empty)
My software never has bugs. It just develops random features.
Benutzeravatar
Coolcat
Promoter
 
Beiträge: 2574
Registriert: 28.11.05 21:26
Wohnort: Kohlscheid / Düsseldorf
Studiengang: Informatik (Dipl.)
Studiert seit: fertig
Anwendungsfach: BWL

Beitragvon LeeJan » 31.01.08 00:41

Hi @ all,
ich versteh die Aufgabe auch nicht so richtig und das Beispiel von Coolcat leider auch nicht so.

Sagen wir mal es handelt sich um einen Binärbaum, wobei die Knoten einen Int-Wert speichern und zwei Teilbäume.
Und bei der Funktioen mapTree übergebe ich einen Int-Wert und einen Binärbaum.
Wenn ich den Wert gefunden habe, soll ich dann von diesem Wert aus den restlichen Baum ausgeben ?
Oder wie darf ich das verstehen ?

Schöne Grüße [/code]
pajemaisch par rusky?
LeeJan
 
Beiträge: 73
Registriert: 09.12.06 01:58
Wohnort: Aachen

Beitragvon proxylittle » 31.01.08 01:06

asooo... ich verstehs jetzt ^^ 'teilweise'.

Vielleicht zum Vorstellen: die Funktion f beinhaltet Parameter. Wie in Coolcat's Beispiel: z.B 1 = text1 , 2 = text2 , 3 = text3 etc... je nachdem..

Nun geht man sozusagen den baum entlang und übergibt die funktionsparameter einfach weiter. Eine weitere Frage ist: Sollen die Werte aus f die gleichen Werte sein wie im Binärbaum oder sequenziell?

Ein Beispiel:

f 1 = "eins"
f 2 = "zwei"
f 3 = "drei"

Node 3 (Node 1 Empty Empty) (Node 2 Empty Empty)

-->

Node "drei" (Node "eins" Empty Empty) (Node "zwei" Empty Empty)

ODER

Node "eins" (Node "zwei" Empty Empty) (Node "drei" Empty Empty)

ich vermute grad mal spontan das erste ^^richtig?

@LeeJan: ich glaub das ist unabhängig von den werten wie der baum aussieht. Der kann egal wie komisch aufgebaut sein.. die werte müssen lediglich ersetzt werden durch 'text1' 'text2' oder sonstwas was dir einfällt.
Code: Alles auswählen
<!--   No Comment   -->
Benutzeravatar
proxylittle
 
Beiträge: 106
Registriert: 28.01.08 15:38
Wohnort: Aachen (Köln Wochenende)

Beitragvon Alexander Urban » 31.01.08 04:32

LeeJan hat geschrieben:Sagen wir mal es handelt sich um einen Binärbaum, wobei die Knoten einen Int-Wert speichern und zwei Teilbäume.
Und bei der Funktioen mapTree übergebe ich einen Int-Wert und einen Binärbaum.
Nein, du übergibst eine Funktion f :: a->b und einen Binärbaum vom Typ a, und erhältst einen Binärbaum vom Typ b zurück.

Angewendet wäre dann z.B: a Int und b String; dann hättest du eine Funktion f::Int -> String und einen Binärbaum vom Typ Int, und erhältst einen Binärbaum vom Typ String zurück.

Du übergibst mapTree einen Baum und eine Funktion, und erhältst einen neuen Baum, der strukturell gleich ist (gleiche Knotenzahl und -anordnung), dessen Knoten jedoch neue Werte enthalten.

proxylittle hat geschrieben:Nun geht man sozusagen den baum entlang und übergibt die funktionsparameter einfach weiter. Eine weitere Frage ist: Sollen die Werte aus f die gleichen Werte sein wie im Binärbaum oder sequenziell?
Die Baumstruktur selbst darf nicht angetastet werden, also wieso sequenziell?

Ein Beispiel:

f 1 = "eins"
f 2 = "zwei"
f 3 = "drei"

Node 3 (Node 1 Empty Empty) (Node 2 Empty Empty)

-->

Node "drei" (Node "eins" Empty Empty) (Node "zwei" Empty Empty)

ODER

Node "eins" (Node "zwei" Empty Empty) (Node "drei" Empty Empty)

ich vermute grad mal spontan das erste ^^richtig?

Eine Funktion ist nicht "sequentiell", sondern bildet einen eingegebenen Wert (3) auf einen ausgegebenen Wert ("drei") ab. Somit ist das erste natürlich richtig. Wie willst du bspw. die Funktion suc (= plus 1) "sequenziell" gestalten?

@LeeJan: ich glaub das ist unabhängig von den werten wie der baum aussieht. Der kann egal wie komisch aufgebaut sein.. die werte müssen lediglich ersetzt werden durch 'text1' 'text2' oder sonstwas was dir einfällt.
Genau, die Werte werden ersetzt, die Struktur bleibt erhalten.
Nicht der Staat gewährt den Bürgern Freiheit, sondern die Bürger dem Staat Einschränkungen ihrer Rechte.

Kontrollierende und inhaltlich wertende Eingriffe in eine technologisch neutrale Infrastruktur sind eine Gefahr für den freiheitlichen Rechtsstaat.
Alexander Urban
 
Beiträge: 699
Registriert: 19.04.06 20:25
Wohnort: KaWo2
Studiengang: Informatik (Dipl.)
Studiert seit: SS 07
Anwendungsfach: Medizin

Beitragvon proxylittle » 31.01.08 14:48

Es geht auch sequenziell... Sagen wir:

f:: Int -> String
f 1 = "text1"
..
..

usw.. so das für jede Zahl einen text'Zahl' da ist. Nun hab ich im Baum der jede 'Zuordung' zählt einen Zähler, der incrementiert wird wenn ich einem Wert einen neuen Wert (a->b) übergebe. Sozusagen sowas wie:

Node f (n+1) (x) (y)

..aber dank deiner Aussage das das Erste richtig ist muss ich mir jetzt auch keine Mühe machen es sequenziell zu programmieren.

Grüße
Code: Alles auswählen
<!--   No Comment   -->
Benutzeravatar
proxylittle
 
Beiträge: 106
Registriert: 28.01.08 15:38
Wohnort: Aachen (Köln Wochenende)

Beitragvon O.D. » 31.01.08 15:31

proxylittle hat geschrieben:Beste Antwort auf alle Fragen: "Mach einfach!"
I can hear deaf people!
Benutzeravatar
O.D.
 
Beiträge: 745
Registriert: 05.08.06 19:31
Wohnort: Aachen & Minden
Studiengang: Informatik (M.Sc.)
Anwendungsfach: Physik

Beitragvon Der Fuß » 01.02.08 12:05

Warum gibt es von den Globalübungen keine Mitschriften mehr?
Da war doch am Dienstag was dran, was uns bei Aufgabe 1 helfen könnte.

Was bedeutet der Fehler:
Equations give different arities for "mapTree"
Benutzeravatar
Der Fuß
 
Beiträge: 114
Registriert: 27.10.07 17:11

Beitragvon theTux » 01.02.08 12:23

Deine Gleichungen haben verschiedene Stelligkeit, also unterschiedlich viele Parameter. Ich vermute, dass du in der Definition von mapTree irgendwo einen Parameter vergessen oder zu viel hast.
Stur lächeln und... oh, falscher Pinguin.
Benutzeravatar
theTux
 
Beiträge: 577
Registriert: 15.01.06 16:41

Beitragvon Der Fuß » 01.02.08 12:24

ok, die fehlermeldung habe ich selbst rausgefunden, aber die erste frage bleibt bestehen und wird um folgende ergänzt:

Müssen wir diese Funktion, die dann auf jeden Knoten angewandt wird auch schreiben?
Benutzeravatar
Der Fuß
 
Beiträge: 114
Registriert: 27.10.07 17:11

Beitragvon Der Fuß » 01.02.08 12:31

danke, da war ich wohl zu spät
Benutzeravatar
Der Fuß
 
Beiträge: 114
Registriert: 27.10.07 17:11

Beitragvon theTux » 01.02.08 12:44

Die erste Frage kann ich dir noch nicht beantworten - da wirst du dich gedulden müssen. ;-)

Zur zweiten Frage: Es geht um Higher Order Functions. Das heißt, du verwendest Funktionen als Parameter, Rückgabetyp oder Element der Datenstruktur. Deine Funktionen und Datenstrukturen sollen also diese Funktionen als Wert behandeln. Du solltest natürlich ein paar Funktionen schreiben, um deine Programme zu testen, abgeben musst du die nicht.
Stur lächeln und... oh, falscher Pinguin.
Benutzeravatar
theTux
 
Beiträge: 577
Registriert: 15.01.06 16:41

Beitragvon LonliLokli » 01.02.08 18:48

Noch eine Verständnisfrage.
Aufgabe 2:
da wird funktion map verwendet. Vom welchem Typ muss man von der ausgehen?
LonliLokli
 
Beiträge: 337
Registriert: 06.07.07 19:28
Wohnort: Aachen
Studiengang: Informatik (M.Sc.)
Studiert seit: fertig
Anwendungsfach: BWL

Beitragvon theTux » 01.02.08 19:50

Folie III.6
Stur lächeln und... oh, falscher Pinguin.
Benutzeravatar
theTux
 
Beiträge: 577
Registriert: 15.01.06 16:41

Beitragvon LonliLokli » 01.02.08 20:16

Da ich alles zu komplex wahrneheme, ist es mir unklar, dass genau diese Funktion mit dieser sinatur gemeint ist. Da sollte man in die Aufgabenstellung dies auch einbauen, falls das stimmt :)
LonliLokli
 
Beiträge: 337
Registriert: 06.07.07 19:28
Wohnort: Aachen
Studiengang: Informatik (M.Sc.)
Studiert seit: fertig
Anwendungsfach: BWL

Nächste

Zurück zu Praktische Informatik