Beispiel #1
0
        public static void Initialize()
        {
            //nodes
            String ph = "#";

            dv = new String[5] {
                ph, ph, ph, ph, ph
            };
            dw = new String[5] {
                ph, ph, ph, ph, ph
            };
            dx = new String[5] {
                ph, ph, ph, ph, ph
            };
            dy = new String[5] {
                ph, ph, ph, ph, ph
            };
            dz = new String[5] {
                ph, ph, ph, ph, ph
            };

            //edges
            uv = new bool[6];
            ux = new bool[6];
            uw = new bool[6];
            uy = new bool[6];
            zw = new bool[6];
            zy = new bool[6];
            zv = new bool[6];
            zx = new bool[6];
            vx = new bool[6];
            vy = new bool[6];
            vw = new bool[6];
            xw = new bool[6];
            xy = new bool[6];
            yw = new bool[6];

            int discovery = 0;

            //visit very first node (start node)
            network.VisitNode(network.nodesList.First(), discovery);

            //until all nodes are visited
            while (network.unvisitedNodesList.Count != 0)
            {
                AssignNewWeightsToNeighbors(network.visitedNodesList.Last());
                MakeArraysForTable(network.visitedNodesList.Last(), discovery);

                DNode nodeToVisitNext = FindUnvisitedNodeWithMinWeight();
                discovery++;
                network.VisitEdge(nodeToVisitNext.GetPreviousNode(), nodeToVisitNext);
                network.VisitNode(nodeToVisitNext, discovery);
                MakeArrayForGraph(discovery);
            }

            CreateForwardingTable();
        }
Beispiel #2
0
        private static String GetForwarding(DNode endNode, DNode node)
        {
            String tracedDvpv = "";
            DNode  curr       = endNode;
            DNode  prev       = endNode.GetPreviousNode();

            if (node.GetIsStartNode())
            {
                while (prev != node)
                {
                    curr = prev;
                    prev = curr.GetPreviousNode();
                }
                tracedDvpv = "(" + prev.GetNodeName() + "," + curr.GetNodeName() + ")";
            }
            return(tracedDvpv);
        }