File: analyze.m

package info (click to toggle)
suitesparse 1%3A5.12.0%2Bdfsg-2
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 176,720 kB
  • sloc: ansic: 1,193,914; cpp: 31,704; makefile: 6,638; fortran: 1,927; java: 1,826; csh: 765; ruby: 725; sh: 529; python: 333; perl: 225; sed: 164; awk: 35
file content (64 lines) | stat: -rw-r--r-- 2,769 bytes parent folder | download | duplicates (5)
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
function [p, count] = analyze (A, mode, k)				    %#ok
%ANALYZE order and analyze a matrix using CHOLMOD's best-effort ordering.
%
%   Example:
%   [p count] = analyze (A)         orders A, using just tril(A)
%   [p count] = analyze (A,'sym')   orders A, using just tril(A)
%   [p count] = analyze (A,'row')   orders A*A'
%   [p count] = analyze (A,'col')   orders A'*A
%
%   an optional 3rd parameter modifies the ordering strategy:
%
%   [p count] = analyze (A,'sym',k) orders A, using just tril(A)
%   [p count] = analyze (A,'row',k) orders A*A'
%   [p count] = analyze (A,'col',k) orders A'*A
%
%   Returns a permutation and the count of the number of nonzeros in each
%   column of L for the permuted matrix A.  That is, count is returned as:
%
%      count = symbfact2 (A (p,p))       if ordering A
%      count = symbfact2 (A (p,:),'row') if ordering A*A'
%      count = symbfact2 (A (:,p),'col') if ordering A'*A
%
%   CHOLMOD uses the following ordering strategy:
%
%       k = 0:  Try AMD.  If that ordering gives a flop count >= 500 * nnz(L)
%          and a fill-in of nnz(L) >= 5*nnz(C), then try METIS_NodeND (where
%          C = A, A*A', or A'*A is the matrix being ordered.  Selects the best
%          ordering tried.  This is the default.
%
%       if k > 0, then multiple orderings are attempted.
%
%       k = 1 or 2: just try AMD
%       k = 3: also try METIS_NodeND
%       k = 4: also try NESDIS, CHOLMOD's nested dissection (NESDIS), with
%            default parameters.  Uses METIS's node bisector and CCOLAMD.
%       k = 5: also try the natural ordering (p = 1:n)
%       k = 6: also try NESDIS with large leaves of the separator tree
%       k = 7: also try NESDIS with tiny leaves and no CCOLAMD ordering
%       k = 8: also try NESDIS with no dense-node removal
%       k = 9: also try COLAMD if ordering A'*A or A*A', (AMD if ordering A).
%       k > 9 is treated as k = 9
%
%       k = -1: just use AMD
%       k = -2: just use METIS
%       k = -3: just use NESDIS
%
%       The method returning the smallest nnz(L) is used for p and count.
%       k = 4 takes much longer than (say) k = 0, but it can reduce nnz(L) by
%       a typical 5% to 10%.  k = 5 to 9 is getting extreme, but if you have
%       lots of time and want to find the best ordering possible, set k = 9.
%
%   If METIS is not installed for use in CHOLMOD, then the strategy is
%   different:
%
%       k = 1 to 4: just try AMD
%       k = 5 to 8: also try the natural ordering (p = 1:n)
%       k = 9: also try COLAMD if ordering A'*A or A*A', (AMD if ordering A).
%       k > 9 is treated as k = 9
%
%   See also METIS, NESDIS, BISECT, SYMBFACT, AMD

%   Copyright 2006-2007, Timothy A. Davis, http://www.suitesparse.com

error ('analyze mexFunction not found') ;