Graf Opgaver

Du kan lade dig inspirere af artiklen http://msdn.microsoft.com/en-us/library/ms379574.aspx, men overvej hvorvidt "Neighbors" og "Costs" bør være adskilte.
Hvad er fordele / ulemper?

Du må også seslv vælge om du vil anvende adjancecy list eller adjacency matrix til din implementering.

For at lette dit arbejde behøver du ikke at gøre dine klasser generiske (<T>).

Opgave 1)
Implementer en graf-klasse. Du får nok også brug for en GrafNode klasse.
Hvorvidt du vil starte forfra, anvende (evt. nedarve) din træ-node klasser er op til dig.

Lad din graf-klasse indeholde en boolean som afgør om grafen er vægtet eller ej.

Opgave 2)
Følgende metoder skal være implementeret:
  - AddNode(data)
  - AddEdge(NodeFrom, NodeTo, Cost)
  - AddDirectedEdge(NodeFrom, NodeTo, Cost)

Bemærk:
Der bør være flere overloadede udgaver af flere af metoderne (f.eks. uden Cost).
Det antages at AddEdge() tilføjer en ikke-Directed Edge (du kan alternativt kalde metoden AddUndirectedEdge())
Om du benytter navnet AddNode() eller AddVertex() er ligegyldigt.

Opgave 3)
Implementer søgemetoderne DepthFirst() og BreadthFirst().
Uden parameter udskriver de hele grafen fra en vilkårlig node, med to Noder som parameter opfattes den første som startnoden og den sidste som slutnoden (dvs. udskrivningen standser når slutnoden er udskrevet).

Opgave 4)
Implementer "ShortestPath". Dijkstras algoritme anbefales

Opgave 5)
Implementer  "MinimumSpanningTree()". Prims algoritme anbefales.