/// <summary>
        /// Получить отсортированный список вершин по степени
        /// </summary>
        private NodeNumberRank[] GetSortedNodesByRank(int dim, ref byte[,] adjacencyMatrix)
        {
            var nodeRankList = new NodeNumberRank[dim];

            //цикл по каждой строке
            for (var i = 0; i < dim; i++)
            {
                var rank = 0;
                //цикл по каждому столбцу
                for (int j = 0; j < dim; j++)
                {
                    //добавим степень если вершина смежна с нашей
                    rank += adjacencyMatrix[i, j];
                }

                nodeRankList[i] = new NodeNumberRank(i, rank);
            }

            QuickSort(ref nodeRankList, 0, nodeRankList.Length - 1);

            //теперь поле nodeRank будет отвечать за цвет
            //инициализируем все вершины как не раскрашенные
            for (int i = 0; i < nodeRankList.Length; i++)
            {
                nodeRankList[i].nodeRank = -1;
            }

            return(nodeRankList);
        }
        /// <summary>
        /// Проверяет смежна ли вершина с какой либо другой вершиной окрашенной в этот же цвет
        /// </summary>
        /// <param name="coloredNodes"> список окрашенных вершин в выбранный цвет</param>
        /// <param name="adjacencyMatrix">матрица смежности</param>
        /// <param name="coloringNode">окрашиваемая вершина</param>
        private bool IsNodeAdjacentToColoredOnes(ref List <NodeNumberRank> coloredNodes, ref byte[,] adjacencyMatrix,
                                                 ref NodeNumberRank coloringNode)
        {
            //цикл по всем вершинам уже окрашенным выбранным цветом
            for (int i = 0; i < coloredNodes.Count; i++)
            {
                if (adjacencyMatrix[coloringNode.nodeNumber, coloredNodes[i].nodeNumber] == 1)
                {
                    return(true);
                }
            }

            //все покрашенные вершины оказались не смежными с текущей вершиной, следовательно её можно будет покрасить тем же цветом
            return(false);
        }