Minha pesquisa atual:
Tentativa inicial de algumas regras gerais
Pode-se tentar fazer algumas regras gerais para resolver a comparação racional:
Supondo que todos os positivos :a,b,c,d
a<b∧c≥d⟹ab<cd
Isso basicamente significa que, se o lado esquerdo for menor que um e o lado direito for pelo menos um, o lado esquerdo será menor que o lado direito. Na mesma veia:
a≥b∧c≤d⟹ab≮cd
Outra regra:
Penso nessa regra como lógica, pois quanto maior o denominador, menor o número, enquanto maior o numerador, maior o número. Portanto, se o lado esquerdo tiver um denominador maioreum numerador menor, o esquerdo será menor.
(b>d)∧(a≤c)⇒[ab<cd]
Daqui em diante, assumiremos que , porque, caso contrário, podemos resolvê-lo com as regras acima ou reverter a questão para ca<c∧b<d , e acabamos com essa condição de qualquer maneira.cd<?ab
Regras :
(b−a)b<(d−c)d⟺[ab<cd]∣∣∣a<c,b<d
Essa regra basicamente afirma que você sempre pode subtrair os numeradores dos denominadores e definir os resultados como numeradores, para obter um problema equivalente. Vou deixar de fora a prova.
ab<c−ad−b⟺[ab<cd]∣∣∣a<c,b<d
Esta regra permite subtrair o numerador e o denominador à esquerda do numerador e denominador à direita para um problema equivalente.
E é claro que há dimensionamento:
akbk<cd⟺[ab<cd]∣∣∣a<c,b<d
Você pode usar o dimensionamento para tornar as regras de subtração acima mais significativas.
Usando essas regras, você pode brincar com as coisas, aplicá-las repetidamente, em combinações inteligentes, mas há casos em que os números são próximos e patológicos.
Ao aplicar as regras anteriores, você pode reduzir todos esses problemas para:
um
ab<ap+qbp′+q′⟺ab<qq′∣∣∣a>q,b>q′
Às vezes você pode resolver isso diretamente agora, às vezes não. Os casos patológicos geralmente estão na forma:
ab<cd∣∣a>c,b>d,c∈O(a),d∈O(b)
Então você vira e resulta na mesma coisa, apenas com um pouco menos. Cada aplicação das regras + flip reduz em um dígito / bit. AFAICT, você não pode resolvê-lo rapidamente, a menos que aplique as regras vezes (uma vez para cada dígito / bit) no caso patológico, negando sua aparente vantagem.O(n)
Problema em aberto ??
Percebi que esse problema parece ser mais difícil do que alguns problemas atuais em aberto.
Um problema ainda mais fraco é determinar:
ad=?bc
E ainda mais fraco:
ad=?c
Esse é o problema aberto de verificação da multiplicação . É mais fraco, porque se você tivesse uma maneira de determinar , então você pode facilmente determinar a d ? = b c , testando usando o algoritmo duas vezes, a d ? < b c , b c ? < a d . Iff tanto é verdade, você sabe que um d ≠ b c .ad<?bcad=?bcad<?bcbc<?adad≠bc
Agora, era um problema em aberto, pelo menos em 1986:ad=?c
A complexidade da multiplicação e divisão. Vamos começar com a equação muito simples ax = b. Quando considerado sobre os números inteiros, é possível testar sua solvabilidade e encontrar uma solução x pela divisão inteira com o restante zero. Para verificar uma determinada solução x, a multiplicação inteira será suficiente, mas é um problema em aberto interessante se existem métodos mais rápidos de verificação.
- ARNOLD SCHÖNHAGE na resolução de equações em termos de complexidade computacional
Muito interessante, ele também mencionou a questão de verificar a multiplicação da matriz :
Também é uma questão interessante se a verificação da multiplicação da matriz, ou seja, verificar se AB = G para um dado C, poderia ser feita mais rapidamente.
- ARNOLD SCHÖNHAGE na resolução de equações em termos de complexidade computacional
Isso já foi resolvido e é realmente possível verificar em tempo com um algoritmo aleatório (com n × n sendo o tamanho das matrizes de entrada, portanto, é basicamente o tempo linear no tamanho da entrada ) Gostaria de saber se é possível reduzir a multiplicação inteira à multiplicação de matrizes, especialmente com suas semelhanças, dadas as semelhanças da multiplicação inteira de Karatsuba com os algoritmos de multiplicação de matrizes que se seguiram. Então, talvez, de alguma forma, possamos alavancar o algoritmo de verificação de multiplicação de matrizes para multiplicação de números inteiros.O(n2)n×n
Enfim, uma vez que este ainda é, que eu saiba, um problema aberto, o problema mais forte de está certamente aberto. Estou curioso para saber se a solução do problema de verificação de igualdade teria alguma influência no problema de verificação de desigualdade de comparação.ad<?cd
Uma pequena variação do nosso problema seria se as frações fossem reduzidas aos termos mais baixos; Nesse caso, é fácil saber se . Isso pode ter alguma influência na verificação comparativa de frações reduzidas?ab=?cd
Uma pergunta ainda mais sutil, e se tivéssemos uma maneira de testar , seria este estender-se a testar um d ? = c ? Não vejo como você pode usar isso "nos dois sentidos", como fizemos para um d ? < c d .ad<?cad=?cad<?cd
Palavras-chave:
Reconhecimento aproximado de idiomas não regulares por autômatos finitos
Eles trabalham na multiplicação aproximada e na verificação aleatória, que eu não entendo completamente.
- math.SE: Como comparar duas multiplicações sem multiplicar?
- Suponha que tenhamos permissão para pré-processar quanto desejássemos no tempo polinomial, podemos resolver a b = c no tempo linear?ca b = c
- Existe um algoritmo de multiplicação de números inteiros não-determinísticos em tempo linear? Consulte http://compgroups.net/comp.theory/nondeterministic-linear-time-multiplication/1129399
Existem algoritmos conhecidos para multiplicar números de n bits com algo como complexidade O (n log (n) log (log (n))). E não podemos fazer melhor que O (n) porque pelo menos temos que olhar para todas as entradas. Minha pergunta é: podemos realmente alcançar O (n) para uma classe adequada de algoritmos "não determinísticos"?
Mais precisamente, existe um algoritmo que pode aceitar dois números binários de n bits "a" e "b" e um número de 2n bits "c" e informar em O (n) tempo se "a * b = c"? Caso contrário, existe alguma outra forma de certificado C (a, b, c) tal que um algoritmo possa usá-lo para testar o produto em tempo linear? Se não for tempo linear, o problema de testar o produto é pelo menos assintoticamente mais fácil do que calculá-lo? Quaisquer resultados conhecidos nesse sentido seriam bem-vindos.
John.
―Johnh4717