Programmierprojekt: Teil 3!

m_infonator
Neuling
Neuling
Beiträge: 4
Registriert: 18. Jun 2009 12:34

Re: Programmierprojekt: Teil 3!

Beitrag von m_infonator »

Guten Tag,

wie kann ich mir den Graph vorstellen? Wie ein 2 Dimensionales Array mit SearchEdges und SearchNodes?
Wie kann ich nun nur auf die SearchEdges zugreifen?

Melkom
Mausschubser
Mausschubser
Beiträge: 89
Registriert: 21. Okt 2005 13:58
Wohnort: Frankfurt am Main

Re: Programmierprojekt: Teil 3!

Beitrag von Melkom »

m_infonator hat geschrieben:Wie kann ich nun nur auf die SearchEdges zugreifen?
Nein, ein Graph hat eine andere Struktur als ein Array. Die Klasse verfügt über zwei Methoden, um auf diese Daten zuzugreifen.

Student512
Neuling
Neuling
Beiträge: 3
Registriert: 15. Okt 2008 21:45

Re: Programmierprojekt: Teil 3!

Beitrag von Student512 »

owyn hat geschrieben:Im Konstruktor der Klasse Routenplaner wird ein Graph-Objekt übergeben. Ein Graph besteht aus lauter Knoten und Kanten, für die man ja vielleicht Verwendung findet...
Ist das nicht ein bisschen wenig performant, jedes mal sämliche Kanten zu durchsuchen? Man könnte doch auch gleich bei der Erstelltung der Ecken mal in die Knoten ne Collection speichern, welche Kanten davon abführen. Sind ja eh nur Zeiger, die nicht wirklich viel Speicherplatz verbrauchen. Dann müsste man nur das Kantenset des jeweiligen Knotens durchsuchen.

Ob der übergebene Knoten noch in unvis steckt macht im übrigen durchaus einen Unterschied beim Abprüfen, ob die gerade betrachtete Kante nun auch zu einem unbesuchten Knoten führt und nicht zu zu irgendeinem Nachbar.

Benutzeravatar
Owyn
BSc Spammer
BSc Spammer
Beiträge: 1012
Registriert: 5. Sep 2005 21:53
Wohnort: Rheingau

Re: Programmierprojekt: Teil 3!

Beitrag von Owyn »

Student512 hat geschrieben:
owyn hat geschrieben:Im Konstruktor der Klasse Routenplaner wird ein Graph-Objekt übergeben. Ein Graph besteht aus lauter Knoten und Kanten, für die man ja vielleicht Verwendung findet...
Ist das nicht ein bisschen wenig performant, jedes mal sämliche Kanten zu durchsuchen? Man könnte doch auch gleich bei der Erstelltung der Ecken mal in die Knoten ne Collection speichern, welche Kanten davon abführen. Sind ja eh nur Zeiger, die nicht wirklich viel Speicherplatz verbrauchen. Dann müsste man nur das Kantenset des jeweiligen Knotens durchsuchen.
Ja. Die Performanz ist allerdings in diesem Projekt nicht ganz so wichtig, und wir wollten die Datenstrukturen möglichst einfach halten.

Student512 hat geschrieben:Ob der übergebene Knoten noch in unvis steckt macht im übrigen durchaus einen Unterschied beim Abprüfen, ob die gerade betrachtete Kante nun auch zu einem unbesuchten Knoten führt und nicht zu zu irgendeinem Nachbar.
Natürlich, dann müsste man weniger Knoten und Kanten prüfen. Aber der Kern meiner Aussage am 17.06. um 10:44 Uhr war ja auch, dass man in diesem Projekt eben nicht davon ausgehen kann, dass der übergebene Knoten in der Menge der unbesuchten Knoten ist.

Gruß,
Christian Heinig
All those who believe in psycho-kinesis, raise my hand.
(Steven Wright)

sa1003
Neuling
Neuling
Beiträge: 5
Registriert: 12. Jan 2009 18:36

Re: Programmierprojekt: Teil 3!

Beitrag von sa1003 »

hi,
komme einfach nicht weiter:
Es geht um die Methode "getNextEdges". Habe mir vom Graphen eine Liste in den Routenplaner geholt und dort ebenfalls wieder in eine Liste gespeichert.
Nun will ich auf Methoden der in der Liste gespeicherten Objekte zugreifen, bekomme aber andauernd die Fehlermeldung "cannot find symbol - method *********" (******* ist der Name der Methode)
Hoffe das reicht als Information :) Will nicht Ärger bekommen indem ich hier zuviel reinschreibe
Vielen Danke schon einmal
Grüße

Melkom
Mausschubser
Mausschubser
Beiträge: 89
Registriert: 21. Okt 2005 13:58
Wohnort: Frankfurt am Main

Re: Programmierprojekt: Teil 3!

Beitrag von Melkom »

sa1003 hat geschrieben:Nun will ich auf Methoden der in der Liste gespeicherten Objekte zugreifen
Um auf die Methoden zuzugreifen muss zunächst einmal auf das entsprechende Objekt zugegriffen werden. Das geschieht z.B. über die get(int index)-Methode der Liste.

Benutzeravatar
Owyn
BSc Spammer
BSc Spammer
Beiträge: 1012
Registriert: 5. Sep 2005 21:53
Wohnort: Rheingau

Re: Programmierprojekt: Teil 3!

Beitrag von Owyn »

Wenn Sie einfach eine Liste, z.B. "ArrayList" verwenden, sind darin Elemente vom statischen Typ "Object" gespeichert, auch wenn der dynamische Typ vielleicht "SearchNode" oder "Edge" ist. Umgehen können Sie das, indem Sie entweder TypeCasts ("Node n = (Node) objekt") oder Generics verwenden (z.B. "ArrayList<SearchEdge>").

Falls das Ihr Problem nicht löst, schreiben Sie mir bitte eine Mail mit mehr Informationen.

Gruß,
Christian Heinig
All those who believe in psycho-kinesis, raise my hand.
(Steven Wright)

Benutzeravatar
Owyn
BSc Spammer
BSc Spammer
Beiträge: 1012
Registriert: 5. Sep 2005 21:53
Wohnort: Rheingau

Re: Programmierprojekt: Teil 3!

Beitrag von Owyn »

Wenn noch jemand vor einem ähnlichen Problem steht: Die Klasse Edge neu kompilieren (evtl. ein Leerzeichen hinzufügen und wieder entfernen, damit BlueJ die Datei als geändert erkennt)!

Gruß,
Christian Heinig
All those who believe in psycho-kinesis, raise my hand.
(Steven Wright)

m_infonator
Neuling
Neuling
Beiträge: 4
Registriert: 18. Jun 2009 12:34

Re: Programmierprojekt: Teil 3!

Beitrag von m_infonator »

Guten Tag,

ich habe versucht das ganze ohne eine List zu lösen, es kommt ziemlich lange if Bedingungen dabei raus. So lassen oder noch auf Listen umsteigen?

Grüße

Mobbi
Neuling
Neuling
Beiträge: 9
Registriert: 13. Mai 2009 16:07

Re: Programmierprojekt: Teil 3!

Beitrag von Mobbi »

In vielen Methoden sollen Knoten zurückgegeben werden (zB getOtherNode, getMinimalNode). In welchem Format sollen diese zurückkommen?
So: KN0 [label="Frankfurt"]; ?
oder so: KN0; ?

Desweiteren hoffe ich, dass dieser Teil nicht der binären Bewertung des ersten Teils unterliegt, sodass man für kleine Fehler in einer Aufgabe direkt 0 Punkte auf die Aufgabe bekommt.
Man kann hier nämlich wirklich viele Fehler machen und Dinge übersehen....

Gruß Mobbi

Benutzeravatar
Darkwing Duck
Erstie
Erstie
Beiträge: 11
Registriert: 25. Mai 2009 16:20

Re: Programmierprojekt: Teil 3!

Beitrag von Darkwing Duck »

Ich hätte auch noch mal kurz ein paar Fragen ( einige sind evtl doppelt aber eine zusammenfassung schadet wohl nicht bei den vielen Fragen):

1. "entfernung" in Searchnode muss nicht berechnet werden und ist als gegeben zu betrachten?
2. Vorgaengerknoten wird auch nicht weiter bestimmt. nur "null" gesetzt?
3. in SearchEdge: können die verbundenen SearchNodes in den Edge Variablen der Überklasse gespeichert werden ,oder muss man in SearchEdge zwei neue Variablen SearchNode speichern?
4.unbesuchte Knoten und benachbarte Knoten sind beide als gefüllt zu betrachten?

Vielen Dank!

m_infonator
Neuling
Neuling
Beiträge: 4
Registriert: 18. Jun 2009 12:34

Re: Programmierprojekt: Teil 3!

Beitrag von m_infonator »

Guten Tag liebes ProProTeam,

nachdem ich mich jetzt durch den 3. Teil des Projekts gewurschtelt habe, denke ich nurnoch in Collections. Da ich aber nicht weiß, ob meine Ergebnisse auch richtig sind, wäre eine Testklasse doch ein schönes Bonbon an uns Studenten :lol:



Mit besten Grüßen und Hoffnungen,
ein geistig zermatschter Student
Manuel Kochen

Daniel S.
Mausschubser
Mausschubser
Beiträge: 87
Registriert: 25. Sep 2007 12:28
Wohnort: Mörfelden

Re: Programmierprojekt: Teil 3!

Beitrag von Daniel S. »

m_infonator hat geschrieben:Guten Tag,

ich habe versucht das ganze ohne eine List zu lösen, es kommt ziemlich lange if Bedingungen dabei raus. So lassen oder noch auf Listen umsteigen?

Grüße
Ich weiß zwar nicht welche Aufgabe Sie meinen, aber solange es allgemein ist und richtig funktioniert, würden Sie wohl trotzdem alle Punkte bekommen.
Mobbi hat geschrieben:In vielen Methoden sollen Knoten zurückgegeben werden (zB getOtherNode, getMinimalNode). In welchem Format sollen diese zurückkommen?
So: KN0 [label="Frankfurt"]; ?
oder so: KN0; ?
Wenn Sie die Strings "KN0 [label=\"Frankfurt\"]" bzw. "KN0" meinen handelt es sich ja nicht um Knoten...
Darkwing Duck hat geschrieben:1. "entfernung" in Searchnode muss nicht berechnet werden und ist als gegeben zu betrachten?
Ja, entfernung ist eine Objektvariable, die es ermöglichen soll zu einem Knoten eine bestimmte Entfernung zu speichern.
2. Vorgaengerknoten wird auch nicht weiter bestimmt. nur "null" gesetzt?
Ja, auch diese OV soll nur die Speicherung eines Vorgängerknotens ermöglichen.
3. in SearchEdge: können die verbundenen SearchNodes in den Edge Variablen der Überklasse gespeichert werden ,oder muss man in SearchEdge zwei neue Variablen SearchNode speichern?
Probieren Sie es doch einfach mal aus.
4.unbesuchte Knoten und benachbarte Knoten sind beide als gefüllt zu betrachten?
Wie in der Aufgabenstellung geschrieben, sollen beide Variablen mit je einem leeren HashSet<SearchNode> initialisiert werden. Im aktuellen Projekt muss darin noch nichts gespeichert werden. Sie können aber davon ausgehen, dass die beiden Sets später noch gebraucht (d.h. gefüllt) werden.
m_infonator hat geschrieben:Guten Tag liebes ProProTeam,

nachdem ich mich jetzt durch den 3. Teil des Projekts gewurschtelt habe, denke ich nurnoch in Collections. Da ich aber nicht weiß, ob meine Ergebnisse auch richtig sind, wäre eine Testklasse doch ein schönes Bonbon an uns Studenten :lol:
Ich mag keine Bonbons. Außerdem ist das ganze Programmierprojekt doch auch so schon süß genung;)
Mit freundlichen Grüßen
Daniel

sa1003
Neuling
Neuling
Beiträge: 5
Registriert: 12. Jan 2009 18:36

Re: Programmierprojekt: Teil 3!

Beitrag von sa1003 »

Daniel S. hat geschrieben:Ich mag keine Bonbons. Außerdem ist das ganze Programmierprojekt doch auch so schon süß genung;)
Dann vielleicht einen Tipp wie man den Konstruktor der Klasse Graph füttert?
Habe Knoten vom Typ SearchNode und Kanten vom Typ SearchEdge erstellt aber habe keine Ahnung wie ich die jetzt in den Graphen packen kann, sodass der die auch annimmt..

Daniel S.
Mausschubser
Mausschubser
Beiträge: 87
Registriert: 25. Sep 2007 12:28
Wohnort: Mörfelden

Re: Programmierprojekt: Teil 3!

Beitrag von Daniel S. »

sa1003 hat geschrieben:Dann vielleicht einen Tipp wie man den Konstruktor der Klasse Graph füttert?

Code: Alles auswählen

	/**
	 * Konstruktor
	 */
	public Graph() {
		this.nodes = new ArrayList<T>();
		this.edges = new ArrayList<S>();
	}
--> Der Konstruktor erwartet gar keine Parameter.
Habe Knoten vom Typ SearchNode und Kanten vom Typ SearchEdge erstellt aber habe keine Ahnung wie ich die jetzt in den Graphen packen kann, sodass der die auch annimmt..
Die Klasse Graph stellt dafür zwei "add"-Methoden bereit. Schauen Sie sich den Code oder das JavaDoc der Klasse mal an.
Mit freundlichen Grüßen
Daniel

Antworten

Zurück zu „Archiv“