Exemplo n.º 1
0
    void Awake()
    {
        if (inst != null)
        {
            Destroy(this);
            return;
        }

        inst = this;

        map = new StarGraph();
        map.Init(map_obj, background);
    }
Exemplo n.º 2
0
        private async void OnShowStarModel(StarGraph starModel)
        {
            StarModelViewer viewer = new StarModelViewer
            {
                Graph               = starModel,
                Margin              = new Thickness(5),
                MaxWidth            = 600,
                MaxHeight           = 600,
                VerticalAlignment   = VerticalAlignment.Stretch,
                HorizontalAlignment = HorizontalAlignment.Stretch
            };

            await DialogHost.Show(viewer, "RootDialog");
        }
Exemplo n.º 3
0
    private static void SolveMinCostFlow()
    {
        Console.WriteLine("Min Cost Flow Problem");
        int numSources = 4;
        int numTargets = 4;

        int[,] costs = { {  90,  75, 75,  80 },
                         {  35,  85, 55,  65 },
                         { 125,  95, 90, 105 },
                         {  45, 110, 95, 115 } };
        int       expectedCost = 275;
        StarGraph graph        = new StarGraph(numSources + numTargets,
                                               numSources * numTargets);
        MinCostFlow minCostFlow = new MinCostFlow(graph);

        for (int source = 0; source < numSources; ++source)
        {
            for (int target = 0; target < numTargets; ++target)
            {
                int arc = graph.AddArc(source, numSources + target);
                minCostFlow.SetArcUnitCost(arc, costs[source, target]);
                minCostFlow.SetArcCapacity(arc, 1);
            }
        }

        for (int source = 0; source < numSources; ++source)
        {
            minCostFlow.SetNodeSupply(source, 1);
        }
        for (int target = 0; target < numTargets; ++target)
        {
            minCostFlow.SetNodeSupply(numSources + target, -1);
        }
        Console.WriteLine("Solving min cost flow with " + numSources +
                          " sources, and " + numTargets + " targets.");
        if (minCostFlow.Solve())
        {
            long totalFlowCost = minCostFlow.GetOptimalCost();
            Console.WriteLine("total computed flow cost = " + totalFlowCost +
                              ", expected = " + expectedCost);
        }
        else
        {
            Console.WriteLine("No solution found");
        }
    }
Exemplo n.º 4
0
    private static void SolveMaxFlow()
    {
        Console.WriteLine("Max Flow Problem");
        int numNodes = 6;
        int numArcs  = 9;

        int[]     tails             = { 0, 0, 0, 0, 1, 2, 3, 3, 4 };
        int[]     heads             = { 1, 2, 3, 4, 3, 4, 4, 5, 5 };
        int[]     capacities        = { 5, 8, 5, 3, 4, 5, 6, 6, 4 };
        int[]     expectedFlows     = { 4, 4, 2, 0, 4, 4, 0, 6, 4 };
        int       expectedTotalFlow = 10;
        StarGraph graph             = new StarGraph(numNodes, numArcs);
        MaxFlow   maxFlow           = new MaxFlow(graph, 0, numNodes - 1);

        for (int i = 0; i < numArcs; ++i)
        {
            int arc = graph.AddArc(tails[i], heads[i]);
            maxFlow.SetArcCapacity(arc, capacities[i]);
        }
        Console.WriteLine("Solving max flow with " + numNodes + " nodes, and " +
                          numArcs + " arcs, source = 0, sink = " + (numNodes - 1));
        if (maxFlow.Solve())
        {
            long totalFlow = maxFlow.GetOptimalFlow();
            Console.WriteLine("total computed flow " + totalFlow +
                              ", expected = " + expectedTotalFlow);
            for (int i = 0; i < numArcs; ++i)
            {
                Console.WriteLine("Arc " + i + " (" + heads[i] + " -> " + tails[i] +
                                  ", capacity = " + capacities[i] + ") computed = " +
                                  maxFlow.Flow(i) + ", expected = " + expectedFlows[i]);
            }
        }
        else
        {
            Console.WriteLine("No solution found");
        }
    }
Exemplo n.º 5
0
 private void OnRemoveStarModel(StarGraph starModel)
 {
     StarGraphs.Remove(starModel);
     _intermediaryStarModels.Remove(starModel.BasedOn);
 }
Exemplo n.º 6
0
 public BCC(StarGraph starGraph)
 {
     graph = new Graph(starGraph.Edges, starGraph.Nodes);
 }