forked from dgleich/matlab-bgl
-
Notifications
You must be signed in to change notification settings - Fork 0
/
make_connected.m
49 lines (42 loc) · 1.17 KB
/
make_connected.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
function varargout= make_connected(A,varargin)
% MAKE_CONNECTED Add edges to construct a connected graph
%
% C = make_connected(A) generates a new graph C with additional edges
% to make C connected.
%
% [ei,ej] = make_connected(A) returns the additional edges instead.
%
% ... = make_connected(A) takes a set of
% key-value pairs or an options structure. See set_matlab_bgl_options
% for the standard options.
% No additional options for this function
%
% Example:
% G = sparse(2,2); % empty 2 node graph with 2 components
% C = make_connected(G)
% max(components(C))
%
% David Gleich
% Copyright, Stanford University, 2008
%% History
% 2008-10-05: Initial version
%%
[trans check full2sparse] = get_matlab_bgl_options(varargin{:});
if full2sparse && ~issparse(A), A = sparse(A); end
options = struct('');
options = merge_options(options,varargin{:});
if check
check_matlab_bgl(A,struct('sym',1));
end
[i j]= planar_edges_mex(A,1,0,0);
if nargout < 2
if ~isempty(i),
[ai aj] = find(A);
varargout{1} = sparse([ai; i; j], [aj; j; i], 1, size(A,1), size(A,2));
else
varargout{1}= A;
end
else
varargout{1}= i;
varargout{2}= j;
end