Skip to content
/ SBD Public

A simple algorithm that finds a simultaneous block diagonalization of multiple matrices through the eigendecomposition of a single matrix.

License

Notifications You must be signed in to change notification settings

y-z-zhang/SBD

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SBD: Simultaneous Block Diagonalization of noncommuting matrices

This repository is part of the paper: Y. Zhang, V. Latora, and A. E. Motter, Unified treatment of synchronization patterns in generalized networks with higher-order, multilayer, and temporal interactions, Commun. Phys. 4, 195 (2021).

SBD is a simple and efficient algorithm for finding a (often finest) simultaneous block diagonalization of multiple matrices. The algorithm works by finding the eigendecomposition of a single matrix, which is a random linear combination of all the matrices to be simultaneously block diagonalized. The current algorithm is inspired by the results presented in K. Murota et al. Jpn. J. Ind. Appl. Math 27, 125–160 (2010). For an efficient algorithm that also guarantees the optimal SBD, see here.

The repository includes:

  1. sbd.py

Python implementation of the SBD algorithm.

  1. sbd.m

MATLAB implementation of the SBD algorithm.

  1. random_examples.m

Simple example demonstrating the use of the SBD algorithm to random matrices with predefined common block structure.

For an example application of the SBD code, see this nice Python package developed by A. Salova, which provides a unified treatment of cluster synchronization on hypergraphs.

About

A simple algorithm that finds a simultaneous block diagonalization of multiple matrices through the eigendecomposition of a single matrix.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published