Exemplo n.º 1
0
        static void BeGreedy(this IGraph_uint graph, uint[] colorGraph, ref uint liveVertexBits, int c)
        {
            while (true)
            {
                var originalBits = liveVertexBits;
                var bits         = liveVertexBits;
                while (bits != 0)
                {
                    var bit = bits & (~bits + 1);
                    bits ^= bit;

                    var colorCount = 0;
                    for (int i = c; i < colorGraph.Length; i++)
                    {
                        if ((bit & colorGraph[i]) != 0)
                        {
                            colorCount++;
                        }
                    }

                    if (colorCount > graph.DegreeInSet(bit.Extract(), liveVertexBits))
                    {
                        liveVertexBits ^= bit;
                    }
                }

                if (liveVertexBits == originalBits)
                {
                    break;
                }
            }
        }