Симметричная аппроксимированная минимальная перестановка степени
p = symamd(S)
p = symamd(S,knobs)
[p,stats] = symamd(...)
p = symamd(S)
для симметричного положительного определенного матричного S
, возвращает вектор перестановки p
, таким образом, что S(p,p)
имеет тенденцию иметь более разреженный Фактор Холесского, чем S
. Чтобы найти упорядоченное расположение для S
, symamd
создает матричный M
, таким образом что spones(M'*M) = spones (S)
, и затем вычисляет p = colamd(M)
. Функция symamd
может также работать хорошо на симметричные неопределенные матрицы.
S
должен быть квадратным; только на строго нижнюю треугольную часть ссылаются.
p = symamd(S,knobs)
где knobs
является скаляром. Если S
является n
-by-n
, строки и столбцы с больше, чем записями knobs*n
удалены до упорядоченного расположения и упорядочены в последний раз в выходной перестановке p
. Если параметр knobs
не присутствует, то knobs = spparms('wh_frac')
.
[p,stats] = symamd(...)
производит дополнительный вектор stats
, который обеспечивает данные об упорядоченном расположении и валидности матричного S
.
stats(1) | Количество плотных или пустых строк проигнорировано |
stats(2) | Количество плотных или пустых столбцов проигнорировано |
stats(3) | Количество сборок мусора, выполняемых на внутренней структуре данных, используемой |
stats(4) |
|
stats(5) | Индекс крайнего правого столбца, который не отсортирован или содержит дублирующиеся записи или |
stats(6) | В последний раз замеченная дублирующаяся или неисправная строка индексирует в индексе столбца, данном |
stats(7) | Количество дублирующихся и неисправных индексов строки |
Несмотря на то, что, встроенные функции MATLAB® генерируют допустимые разреженные матрицы, пользователь может создать недопустимую разреженную матрицу с помощью API MATLAB C или Фортрана и передать ее symamd
. Поэтому symamd
проверяет, что S
допустим:
Если индекс строки появляется два или больше раза в том же столбце, symamd
игнорирует дублирующиеся записи, продолжает обрабатывать и предоставляет информацию о дублирующихся записях в stats(4:7)
.
Если индексы строки в столбце не работают, виды symamd
каждый столбец его внутренней копии матричного S
(но не восстанавливает входную матрицу S
), продолжает обрабатывать и предоставляет информацию о неисправных записях в stats(4:7)
.
Если S
недопустим каким-либо другим способом, symamd
не может продолжиться. Это распечатывает сообщение об ошибке и не возвращает выходных аргументов (p
или stats
).
Упорядоченное расположение сопровождается симметричным поступорядоченным расположением дерева устранения.
Авторами кода для symamd
является Стефан Ай. Лэримор и Тимоти А. Дэвис (davis@cise.ufl.edu
), Флоридский университет. Алгоритм был разработан в сотрудничестве с Джоном Гильбертом, Xerox PARC, и Эсмондом Ыном, Окриджской национальной лабораторией. Исследование Алгоритмов Разреженной матрицы во Флоридском университете: https://www.cise.ufl.edu/research/sparse/