привет! есть алгоритм для определения сложности любого ориентированного графа. файл (на странице 2): http://rapidshare.com/files/104563470/complex.rar.html или http://ifolder.ru/6004216 помогите написать программу по этому алгоритму, а то я уже запутался, какие единицы и куда таскать. нужно на языке в scilab, но можно и на си. вот что я сделал - шаг 1 и часть шага 2 (тут и проблемы): Код (Text): function [lvs] = getlvs(g); gs = size(g,'c'); nl = 1; // cur_lvl lvs = zeros(gs, gs); // lvls while(1); a = 1; for i = 1:gs; if (sum(g(:, i)) == 0); lvs(nl, a) = i; end; a = a + 1; end; for k=1:gs; for i=1:gs; if(lvs(nl,k)==0); break; end; if (g(lvs(nl,k),i)~=0); g(:,i)=0; end; end; end; if (lvs(nl,gs)~=0); break; end; nl=nl+1; end; for i=gs:-1:2; for j=1:gs; if (lvs(i, j)~=0 & lvs(i-1,j)~=0); lvs(i,j)=0; end; end; end; for i=gs:-1:1; f=1; while (f~=0); f=0; for j=gs:-1:2; if(lvs(i,j)~=0 & lvs(i,j-1)==0); lvs(i,j-1)=lvs(i,j); lvs(i,j)=0; f=1; end; end; end; end; endfunction; clc; g = [ 0 0 1 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ] cpg = g; // g_cp gs = size(g, 'c'); // g_sz lvs = getlvs(g) g = cpg; lsz=size(lvs,'c'); //for i=1:gs; i=2; cvs=[]; for j=1:gs; if (lvs(i,j)==0); break; end; //printf('%d %d %d\n', i, j, lvs(i, j)); cvs=cat(2,cvs,lvs(i,j)); end; // cvs evs=[]; for j=1:size(cvs,'c'); for k=1:size(cvs,'c'); if(g(cvs(j),cvs(k))~=0); evs=cat(1,evs,[cvs(j) cvs(k)]); end; end; end; evs // for j=size(evs,'r'):-1:1; j=2; for (k=gs:-1:evs(j,2)); g(:,k+1)=g(:,k); g(k+1,:)=g(k,:); end; gs=gs+1; // g(:,evs(j,2)+1)=4; g(:,evs(j,2))=0; // g(evs(j,2)+1,:)=4; g(evs(j,2),:)=0; g(evs(j,1),evs(j,2))=0; g(evs(j,2),evs(j,2)+1)=1; g(evs(j,1),evs(j,2)+1)=1; // end; g lvs=getlvs(g) printf('--------------------\n'); //end; спасибо!
OpenDocument Text. открывается OpenOffice.org вот залил в формате .doc: http://rapidshare.com/files/104577571/complex2.rar.html http://ifolder.ru/6005029
pluton Посмотрел.. Граф 3 не соответствует графу 4, термин "висячая вершина" употребляется явно неправильно (имеется в виду root vertex?).. Лень работать корректором, если честно.
в смысле? там есть одна ошибка - стрелка в другую сторону должна быть (на рис.3 - из 2 в 3) почему? висячая - вершина, в которую не входит ни один путь зы. этот документ делал не я, поэтому там есть куча ошибок
pluton Вообще-то висячая вершина - это вершина со степенью 1. А вершина со степенью 0 называется изолированной