Для связного графа G(V,E), где V − множество вершин, а E − множество рёбер, функция grCoCycleBasis находит все независимые коциклы (фундаментальное множество разрезов, или базис множества разрезов). Синтаксис вызова:

CoCycles = grCoCycleBasis(E) − для графа E находит находит все независимые коциклы (разрезы) CoCycles.

Входной параметр E(m,2) − список рёбер графа. Первый и второй элементы каждой строки − это номера вершин ребра (в любом порядке); m − количество рёбер.

Выходной параметр CoCycles(m,n-1) − булевский массив с номерами рёбер, включённых в коцикл. Здесь n − количество вершин, n-1 − количество независимых коциклов (разрезов). В каждом столбце массива CoCycles истинными (единичными) являются номера рёбер, включённых в данный коцикл. Для решения задачи используется удаление одного ребра из остовного дерева с последующим нахождением всех рёбер, соединяющих две полученные компоненты графа.

Пример обращения (скопируйте этот фрагмент в командное окно или редактор MATLAB):

clear all % очистили память
V=[0 0;1 1;1 0;1 -1;2 1;2 0;2 -1;3 1;3 0;3 -1;4 0]; % координаты вершин
E=[1 2;1 3;1 4;2 3;3 4;2 5;2 6;3 6;3 7;4 7;5 6;6 7;...
   5 8;6 8;6 9;7 9;7 10;8 9;9 10;8 11;9 11;10 11]; % список рёбер графа
E=[E [1:size(E,1)]']; % оставили только список рёбер с их номерами
grPlot(V,E,'g','','%d'); % рисуем граф
set(get(gcf,'CurrentAxes'),...
  'FontName','Times New Roman Cyr','FontSize',10) % установили шрифт
title('\bfИсходный граф')
CoCycles=grCoCycleBasis(E); % все независимые разрезы
for k1=1:size(CoCycles,2),
  grPlot(V,E(find(~CoCycles(:,k1)),:),'g','','%d'); % очередной коцикл
  set(get(gcf,'CurrentAxes'),...
    'FontName','Times New Roman Cyr','FontSize',10) % установили шрифт
   title(['\bfКоцикл N' num2str(k1)]);
end