Graph: SpanningTree
Hvem kan hjælpe med denne opgave?? Det er utrolig vigtigt for mig at få den løst, men nu er jeg næsten gået død i den. Jeg har oprettet en vægtet (ikke orienteret) graf. Denne kan jeg indsætte noder og kanter i. Derudover kan den udskrives.Det næste der står i opgaven er så, at lave en metode der kan finde og udskrive et minimum spanning tree for grafen.
Den metode jeg har lavet til dette formål hedder Prims() og findes nede i koden. Grafen er bygget op af et array-linked-list. Ligger nogen inde med en færdig metode, som jeg kan bruge, eller kan nogen gennemskue det sidste som skal skrives??? Håber på en god løsning. Ønskes mere uddybet så bare skriv!!
Her her følger koden:
class Graf
{
Node[] graf;
PNode first;
boolean[] visited;
public Graf(int antalNoder)
{
graf =new Node[antalNoder];
first =null;
visited=new boolean[antalNoder];
}
private class Node
{
int betegnelse;
int vægt;
Node next;
public Node(int b,Node n,int v)
{
betegnelse=b;
vægt=v;
next=n;
}
}
public void indsæt(int fra,int til,int vægt)
{
graf[fra]=new Node(til,graf[fra],vægt);
graf[til]=new Node(fra,graf[til],vægt);
}
public void udskrivGraf()
{
for (int i=0;i<graf.length;i++)
{
System.out.print("Node: " + i + " forbindelser til: ");
Node temp=graf[i];
while (temp!=null)
{
System.out.print(temp.betegnelse+" "+" ("+"weight= "+temp.vægt+")"+" ");
temp=temp.next;
}
System.out.println();
}
}
class PNode
{
int fra;
int til;
int vægt;
PNode next;
public PNode(int f,int t, int v,PNode n)
{
fra = f;
til = t;
vægt = v;
next = n;
}
}
private void indsaet(int fra,int til,int vægt)
{
PNode temp=new PNode(fra,til,vægt,null);
if (first==null)
first=temp;
else
{
PNode curr = first;
PNode prev = null;
while(curr != null && curr.vægt < temp.vægt)
{
prev = curr;
curr = curr.next;
}
}
}
public void prim(int v)
{
for (int i=0;i<visited.length;i++)
visited [i] = false;
visited[v] = true;
Node curr = graf(v);
while (curr!=null)
{
if (!visited[betegnelse])
indsaet(curr.v,curr.betegnelse,curr.vægt);
curr=curr.next;
}
}
public static void main(String args[]) throws Exception
{
Graf g=new Graf(7);
Graf v=new Graf(7);
g.indsæt(0,1,28);
g.indsæt(0,5,10);
g.indsæt(1,2,16);
g.indsæt(1,6,14);
g.indsæt(2,3,12);
g.indsæt(3,4,22);
g.indsæt(3,6,18);
g.indsæt(4,6,24);
g.indsæt(4,5,25);
v.prim(0);
g.udskrivGraf();
}
}
