Produit à chaîne booléenne clairsemée rapide


13

Donc, j'ai environ 100-200 matrices booléennes carrées très clairsemées avec une longueur de côté ~ plusieurs dizaines, et j'ai besoin de calculer leur produit. Je sais que si je les multiplie en série, le produit restera généralement aussi clairsemé à chaque étape.

Existe-t-il des algorithmes de produit de chaîne matricielle qui fonctionnent particulièrement rapidement dans ce cas?

À un niveau supérieur, le problème est de calculer la composition d'une série de mappages un à plusieurs sur un graphique raisonnablement petit (fonctions de transition d'un NFA), où la plupart des éléments ne correspondent pas à plus de 0-3.

(veuillez noter que ce n'est pas le problème habituel de "produit de chaîne matricielle", car toutes les matrices sont de la même taille et je n'ai pas à choisir la parenthèse optimale)


5
en fait, l'ordre dans lequel vous les multipliez pourrait affecter la rareté des résultats intermédiaires, donc cela pourrait toujours être un problème important dans un tel algorithme rapide.
Joshua Grochow

à partir de votre autre question, vous semblez utiliser des opérations de semirage ET / OU 0/1 , pas d'addition / multiplication (comme le problème semble l'indiquer), veuillez le préciser dans la question
vzn

Réponses:


10

C'était trop long pour être un commentaire - je me demande si ces matrices ont une structure qui les fait se comporter différemment des matrices aléatoires. Les produits de matrices clairsemées aléatoires atteignent zéro ou deviennent rapidement clairsemés.

Voici une expérience simple - prenez 200 matrices binaires aléatoires 50x50 et tracez le nombre de non-zéros en fonction du nombre de matrices multipliées. Les graphiques ci-dessous montrent l'écart type sur 2000 passages. La première parcelle est pour 2% de parcimonie, la deuxième parcelle est pour 3%


(source: yaroslavvb.com ) (source: yaroslavvb.com )

cela a pris 3 minutes sur mon ordinateur portable en utilisant la multiplication matricielle standard

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.