В числовой линейной алгебре алгоритм Катхилла–Макки ( CM ), названный в честь Элизабет Катхилл и Джеймса Макки, [1] представляет собой алгоритм перестановки разреженной матрицы , имеющей симметричный шаблон разреженности, в ленточную форму матрицы с малой полосой пропускания . Обратный алгоритм Катхилла–Макки ( RCM ), предложенный Аланом Джорджем и Джозефом Лю, представляет собой тот же алгоритм, но с обратными индексными числами. [2] На практике это обычно приводит к меньшему заполнению, чем упорядочивание CM при применении метода исключения Гаусса. [3]
Алгоритм Катхилла Макки — это вариант стандартного алгоритма поиска в ширину, используемого в алгоритмах графов. Он начинается с периферийного узла, а затем генерирует уровни для , пока все узлы не будут исчерпаны. Набор создается из набора путем перечисления всех вершин, смежных со всеми узлами в . Эти узлы упорядочены в соответствии с предшественниками и степенью.
Учитывая симметричную матрицу , мы визуализируем матрицу как матрицу смежности графа . Алгоритм Катхилла–Макки представляет собой перемаркировку вершин графа для уменьшения пропускной способности матрицы смежности.
Алгоритм создает упорядоченный n -кортеж вершин, который представляет собой новый порядок вершин.
Сначала выбираем периферийную вершину (вершину с наименьшей степенью ) и устанавливаем .
Затем мы повторяем следующие шаги, пока
Другими словами, нумеруйте вершины в соответствии с определенной структурой уровней (вычисляемой с помощью поиска в ширину ), где вершины на каждом уровне посещаются в порядке нумерации их предшественников от низшего к высшему. Если предшественники одинаковы, вершины различаются по степени (снова упорядоченной от низшего к высшему).