Qual é a estrutura mais geral na qual a verificação do produto da matriz pode ser feita no tempo

18

Em 1979, Freivalds mostrou que a verificação de produtos matriciais em qualquer campo pode ser feita em tempo aleatório O(n2). Mais formalmente, dadas três matrizes A, B e C, com entradas de um campo F, o problema de verificar se AB = C possui um algoritmo de tempo aleatório .O(n2)

Isso é interessante porque o algoritmo mais rápido conhecido para multiplicar matrizes é mais lento que isso, portanto, verificar se AB = C é mais rápido que calcular C.

Quero saber qual é a estrutura algébrica mais geral sobre a qual a verificação de produtos matriciais ainda possui um algoritmo de tempo (randomizado). Como o algoritmo original funciona em todos os campos, acho que também funciona em todos os domínios integrais.O(n2)

A melhor resposta que pude encontrar para essa pergunta foi em Equivalências subcúbicas entre problemas de caminho, matriz e triângulo , onde eles dizem que "a verificação do produto da matriz por anéis pode ser feita no tempo aleatório [BK95]". ([BK95]: M. Blum e S. Kannan. Criando programas que verificam seu trabalho. J. ACM, 42 (1): 269–291, 1995.)O(n2)

Primeiro, os anéis são a estrutura mais geral na qual esse problema possui um algoritmo randomizado? Segundo, eu não conseguia ver como os resultados de [BK95] mostram um algoritmo de tempo em todos os anéis. Alguém pode explicar como isso funciona?O(n2)O(n2)

Robin Kothari
fonte
Uma pergunta estúpida: é óbvio que a verificação determinística é tão difícil quanto a multiplicação? E se você receber não apenas A, B e C, mas também um certificado compacto; isso ajuda alguma coisa?
Jukka Suomela
@Jukka: Eu acredito que o melhor algoritmo determinístico para esse problema não é mais rápido que a multiplicação de matrizes, mas não sei se existe uma razão para que isso aconteça. Sobre a segunda questão, se AB não é igual a C, em seguida há um curto certificado que trabalhos: a entrada de C que está incorrecta, e a correspondente linha de A e coluna de B.
Robin Kothari

Respostas:

14

Aqui está um argumento rápido sobre por que funciona sobre anéis. Dadas as matrizes , B , C , verificamos A B = C escolhendo um vetor de bits aleatório v e verificando se A B v = C v . Isso passa claramente se A B = CABCAB=CvABv=CvAB=C .

Suponha que e A B v = C v . Vamos D = A B - C . D é uma matriz diferente de zero para a qual D v = 0 . Qual é a probabilidade de que isso ocorra? Seja D [ i ' , j ' ] uma entrada diferente de zero. Por suposição, j D [ i , j ] v [ j ] = . Com probabilidadeABCABv=CvD=ABCDDv=0D[i,j]jD[i,j]v[j]=0 , v [ j ' ] = 11/2v[j]=1 , então temos

D[i,j]+jjD[i,j]v[j]=0 .

Qualquer anel em sua operação de adição é um grupo aditivo, portanto, existe um inverso único de , ou seja, - D [ i ' , j ' ] . Agora, a probabilidade do mau evento - D [ i ' , j ' ] = Σ j j ' D [ i ' , j ] v [ j ] é no máximo 1 /D[i,j]D[i,j]D[i,j]=jjD[i,j]v[j]1/2. (Uma maneira de ver isso é o "princípio das decisões diferidas": para que a soma seja igual a , pelo menos um outro D [ i ' , j ] deve ser diferente de zero. Portanto, considere o v [ j ] corresponde a essas outras entradas diferentes de zero. Mesmo se definirmos todos esses v [ j ] , exceto um deles de maneira ideal , ainda há probabilidade igual para o último ser 0 ouD[i,j]D[i,j]v[j]v[j]01, Mas ainda apenas um desses valores poderia fazer a soma final igual .) Assim, com probabilidade de pelo menos 1 / 4 , encontramos com sucesso que D v 0 , quando D é diferente de zero. (Nota v [ j ] e v [ j ] são escolhidos independentemente para j j D[i,j]1/4Dv0Dv[j]v[j]jj .)

Como você vê, o argumento acima depende da subtração. Portanto, não funcionará (por exemplo) em semirrutas comutativas arbitrárias. Talvez você possa relaxar as propriedades multiplicativas da estrutura algébrica e ainda obter o resultado?

Ryan Williams
fonte
Bom obrigado. Eu vejo o seu ponto de vista sobre a possibilidade de reduzir as restrições na estrutura multiplicativa. Apenas para minha informação, esse não é o mesmo algoritmo do artigo original de Freivalds?
Robin Kothari
O algoritmo de Freivalds seleciona um vetor aleatório com componentes em {-1,1}. Isso também funciona. Se você é mais cuidadoso você pode obter a probabilidade de sucesso para ser pelo menos . 1/2
21711 Ryan