Adjazensmatrix

Inso

Mitglied
Hallo,
Ich habe hier unfertigen/stark fehlerbehafteten Code zur implementierung einer Adjaszensmatrix aus Vorlesungsfolien einer TH. Und würde gerne wissen was in einigen Zeilen gemacht wird, die Zeilen habe ich mit Fragezeichen kommentiert, bin habe gerade erst begonnen Java zu lernen, je ausführlicher die Hilfe desto besser.

Vielen Dank schon mal im Vorraus für die Mühe
Mit freundlichen Grüßen Inso


Java:
public class Graph {
	
	interface Vertex{
		int getIndex();
		void setIndex(int);
		
	interface Graph {						
	Vertex[ ] getVerties();						
	void addVertex (Vertex v);					
	void deleteVertex (Vertex v);						
	void addEdge (Vertex, Vertex);				
	void deleteEdge (Vertex, Vertex);			
	boolean containsEdge (Vertex, Vertex);		  // ???
	Liste successors (Vertex); //Liste wie gehabt // ???
	
	}
}
	
	public class AdjMatrix implements Graph { //was wird von Zeile 20- 39 gemacht ? 
		private Vertex[ ] verties;						
		private boolsche[ ] [ ] edges;		//?
		public AdjMatrix (Liste v){		//?
		int l = v.length( );		        //?
		verties = new Vertex [l];		//?
		for (int i = 0; i < l; ++i){		//?
		v.first().setIndex(i);			//?
		verties[i] = v.first( );			//?
		v.delete (v.first( ));			//?
		}
		edges = new boolean[l] [l];		//?
		for (int i = 0; i < l; ++i){		//?
		for(int j = 0; j < l; ++j){		//?
		edges[i] [j] = false;			//?
		}
		}
		}
		public Vertex[ ] getVerties( ){	//?
		return verties;				//?

}
		public void addVertex (Vertex v){...}				
		//hier: Einfügen einer zusätzlichen Spalte und Zeile
		public void deleteVertex (Vertex v){...}			
		//hier: Löschen der entsprechenden Zeile und Spalte	
		public void addEdge (Vertex u, Vertex v){			
		edges[u.getIndex( )][v.getIndex( )] = true;		
		}						
		public void deleteEdge (Vertex u, Vertex v){
		edges [u.getIndex( )][v.getIndex( )] = false;		//?
		}
		
		public boolean containsEdge (Vertex u, Vertex v){	//?
			return edges[u.getIndex( )][v.getIndex( )]	//?
			}												
			public Liste successors (Vertex v){			//?
			int h = v.getIndex( );					//?
			Liste result = new Liste( );				//?
			for(int i = 0; i < verties.length; ++i){		//?
			if (edges[h][i]) result.insert(verties[i]);		//?
			return result;
			}
			}
 

nrg

Top Contributor
da sind ja nur Fragezeichen :D

man könnte es schon erklären aber das würde einige Zeit in anspruch nehmen und danach hättest du mindestens doppeltsoviel fragezeichen...

machen wir es besser andersrum. sag du uns, was du davon verstehst. da sind wir glaub schneller fertig :D

ne jetz mal ehrlich. was willst du mit dem code, wenn du selbst keinen ahnung von java hast?
 

Inso

Mitglied
Ich muss Programmieren lernen und die Grundidee der mir gestellten Aufgaben ist "von null auf 100 oder du wirst jämmerlich versagen". Haben unter anderem eine Aufgabe, in der wir gerichtete Graphen ohne paralellen und Schlingen implementieren sollen.Später mit Breitensuche und noch ein wenig später mit GUI.
also soweit ich es versteh erbt die Klasse AdjMatrix die Methoden der Klasse Graph. also Knoten hinzufügen/löschen und Kanten hinzufügen/ löschen, in der Klasse AdjMatrix werden dann erstma ein eindimensionaler Array Vertex und ein Mehrdimensionaler Array für die Edges erstellt. und dann kommen auch schon die Fragezeichen.
 

nrg

Top Contributor
Java:
public class Graph {
	
	interface Vertex{
		int getIndex();
		void setIndex(int);
		
	interface Graph {						
	Vertex[ ] getVerties();						
	void addVertex (Vertex v);					
	void deleteVertex (Vertex v);						
	void addEdge (Vertex, Vertex);				
	void deleteEdge (Vertex, Vertex);			
	boolean containsEdge (Vertex, Vertex);		  // Methode cotainsEdge, die einen boolean zurückgibt und 2 Objekte vom Typ Vertex (bzw Klassen, die Vertex implementieren) erwartet
	Liste successors (Vertex); //Liste wie gehabt // Methode successors, die eine Liste zurückgibt und ein Objekt vom Typ Vertex (bzw Klasse, die Vertex implementiert)  erwartet
	
	}
}
	
	public class AdjMatrix implements Graph { 
		private Vertex[ ] verties;						
		private boolsche[ ] [ ] edges;		//2 dimensionales Array vom Typ boolsche (was immer das auch ist) 
		public AdjMatrix (Liste v){		//Konstruktor, der Liste erwaretet
		int l = v.length( );		        //l = länge von der liste
		verties = new Vertex [l];		//array verties wird initialisiert Größe = l
		for (int i = 0; i < l; ++i){		// schleife, die sonlange wie i<l läuft
....................................

so ab da hab ich schon keine lust mehr, weil es imho nichts bringen wird. vllt erbarmt sich ja jemand anderes, der da nicht meine Meinung teilt.

Du gehst das glaub weng falsch an. Versteh nicht, was du damit erreichen willst. Ich würd heut abend auch gern aufn Mond fliegen. Meinste das ist machbar?
 
G

Gelöschtes Mitglied 16929

Gast
Verstehst du denn überhaupt grundsätzlich was von Graphentheorie, Adjazenzmatrix usw oder fangen wir bei 0 an?
Wie ist denn den Wissensstand in java?
LG
Hemeroc
 

nrg

Top Contributor
Wie ist denn den Wissensstand in java?

Java:
		int l = v.length( );		        //?
		verties = new Vertex [l];		        //?
		for (int i = 0; i < l; ++i){		        //?
	           .....
		edges[i] [j] = false;	                    //?
		.....
		return verties;			         //?

und das nur ein paar beispiele. wenn er nicht weiß, was eine schleife ist oder wie man eine variable initialisiert, hat er bis jetzt kein einsteigerbuch wenigstens ein kapitel gelesen...
 

Inso

Mitglied
also hatte schon Softwaretechnik, des war aber eher mit MsVisio(oder ähnlichen Programmen) Klassen/Objekte/Schleifen zeichnen und den ganzen Spaß was alles so dazugehört, nur Java is halt nicht drin, bin momentan wirklich dabei mir die Grundlagen anzueignen, mit Werken wie "Java ist auch eine Insel" "Java von Kopf bis Fuß" und "Algorithmen und Datenstrukturen"

Generell ich weiß was Graphen sind auch was ein Graph macht hab auch keine Probleme aus nem Graphen ne Adjaszensmatrix zu machen und umgekehrt, Baume/Suchverfahren kenn ich, zumindest ein Paar, leider nur auf dem Papier und nicht in der Programmiersprache Java.

Bin auch generell für Literaturempfehlungen dankbar.
 

Oben