Hei igjen, søker nok engang litt småhjelp fra kloke hoder ( mitt er ikke klokt nok )
Litt om problemet først her:
Jeg har laget og fylt opp en graf med vertexer og edger. Vertexene er maskinnavn, og edgene er en "komponentkabel" mellom disse. Vertex inneholder kun datamaskinnavnet, og edgen inneholder lengden på kabelen mellom vertexene den kobler sammen.
Jeg prøver ved hjelp av en BFS travasering av grafen og lage en liste over datamaskiner som kan ligge på samme komponentkabel, gitt en makslengde på kabelen mellom disse. Altså om en har en graf seende slik ut:
"
flue veps 6
sommerfugl nattsvermer 8
veps sommerfugl 1
flue nattsvermer 9
flue sommerfugl 2
maur nattsvermer 5
"
Og maks tillat lengde på kabelen er 7 meter, skal resultatet komme ut slik:
Komponent 1:
flue
veps
sommerfugl
Komponent 2:
nattsvermer
maur
Problemet mitt:
Jeg har laget en BFS algoritme, den ser slik ut:
Alle visitmetodene er kun laget for å kunne utføre generelle operasjoner under travaseringen.
Er det noen som kan hjelpe meg litt på vei med hva jeg må gjøre for å løse problemstillingen jeg nevnte?
Jeg har prøvd endel forskjellig, men får det ikke til. Ønsker all hjelp velkommen
P.S: Det er godt mulig BFS algoritmen min ikke er korrekt også, første gang jeg har laget en.
Litt om problemet først her:
Jeg har laget og fylt opp en graf med vertexer og edger. Vertexene er maskinnavn, og edgene er en "komponentkabel" mellom disse. Vertex inneholder kun datamaskinnavnet, og edgen inneholder lengden på kabelen mellom vertexene den kobler sammen.
Jeg prøver ved hjelp av en BFS travasering av grafen og lage en liste over datamaskiner som kan ligge på samme komponentkabel, gitt en makslengde på kabelen mellom disse. Altså om en har en graf seende slik ut:
"
flue veps 6
sommerfugl nattsvermer 8
veps sommerfugl 1
flue nattsvermer 9
flue sommerfugl 2
maur nattsvermer 5
"
Og maks tillat lengde på kabelen er 7 meter, skal resultatet komme ut slik:
Komponent 1:
flue
veps
sommerfugl
Komponent 2:
nattsvermer
maur
Problemet mitt:
Jeg har laget en BFS algoritme, den ser slik ut:
Kode
private void BFS(Vertex<V> v){ Queue<Vertex<V>> q = new Queue<Vertex<V>>(); Vertex w; Edge<Integer> e; int i=0; v.put(status, visited); q.enqueue(v); while(!q.empty()){ i+=1; ArrayList<Vertex<V>> currLevel = new ArrayList<Vertex<V>>(); Vertex u = q.dequeue(); for(Iterator iter = G.incidentEdges(u).iterator(); iter.hasNext();){ e = (Edge<Integer>)iter.next(); if(e.get(status).equals(unvisited)){ w = G.opposite(u, e); if(w.get(status).equals(unvisited)){ e.put(status, discovery); w.put(status, visited); q.enqueue(w); currLevel.add(w); visitDiscovery(w, e, currLevel); if(isDone)break; } else{ e.put(status, cross); w = G.opposite(u, e); visitCross(w,e,currLevel); if(isDone)break; } } } visitAfter(currLevel); if(isDone)break; } }
Er det noen som kan hjelpe meg litt på vei med hva jeg må gjøre for å løse problemstillingen jeg nevnte?
Jeg har prøvd endel forskjellig, men får det ikke til. Ønsker all hjelp velkommen
P.S: Det er godt mulig BFS algoritmen min ikke er korrekt også, første gang jeg har laget en.