Mes recherches actuelles:
Tentative initiale de quelques règles générales
On peut essayer de faire quelques règles générales pour résoudre la comparaison rationnelle:
En supposant tous positifs :a,b,c,d
a<b∧c≥d⟹ab<cd
Cela signifie essentiellement que si le côté gauche est inférieur à un et que le côté droit en est au moins un, le côté gauche est inférieur au côté droit. Dans la même veine:
a≥b∧c≤d⟹ab≮cd
Une autre règle:
(b>d)∧(a≤c)⇒[ab<cd]
a<c∧b<dcd<?ab
Règles :
(b−a)b<(d−c)d⟺[ab<cd]∣∣∣a<c,b<d
Cette règle indique essentiellement que vous pouvez toujours soustraire les numérateurs des dénominateurs et définir les résultats comme numérateurs pour obtenir un problème équivalent. Je laisse de côté la preuve.
ab<c−ad−b⟺[ab<cd]∣∣∣a<c,b<d
Cette règle vous permet de soustraire le numérateur et le dénominateur gauche du numérateur et du dénominateur droit pour un problème équivalent.
Et bien sûr, il y a la mise à l'échelle:
akbk<cd⟺[ab<cd]∣∣∣a<c,b<d
Vous pouvez utiliser la mise à l'échelle pour rendre les règles de soustraction ci-dessus plus significatives.
En utilisant ces règles, vous pouvez jouer avec les choses, les appliquer à plusieurs reprises, dans des combinaisons intelligentes, mais il y a des cas où les nombres sont proches et pathologiques.
ab<ap+qbp′+q′⟺ab<qq′∣∣∣a>q,b>q′
Parfois, vous pouvez résoudre ce problème directement maintenant, parfois non. Les cas pathologiques se présentent généralement sous la forme:
ab<cd∣∣a>c,b>d,c∈O(a),d∈O(b)
O(n)
Problème ouvert ??
J'ai réalisé que ce problème semble être plus difficile que certains problèmes ouverts actuels.
Un problème encore plus faible consiste à déterminer:
ad=?bc
Et pourtant plus faible:
ad=?c
ad<?bcad=?bcad<?bcbc<?adad≠bc
ad=?c
La complexité de la multiplication et de la division. Commençons par l'équation très simple ax = b. Lorsqu'on le considère sur les entiers, tester sa solvabilité et trouver une solution x est possible par division entière avec le reste zéro. Pour vérifier une solution donnée x, une multiplication entière suffira, mais c'est un problème ouvert intéressant de savoir s'il existe des méthodes de vérification plus rapides.
- ARNOLD SCHÖNHAGE en résolution d'équations en termes de complexité informatique
Très intéressant, il a également évoqué la question de la vérification de la multiplication matricielle :
Il est également intéressant de savoir si la vérification de la multiplication matricielle, c'est-à-dire la vérification si AB = G pour un C donné, pourrait être effectuée plus rapidement.
- ARNOLD SCHÖNHAGE en résolution d'équations en termes de complexité informatique
O(n2)n×n
ad<?cd
ab=?cd
ad<?cad=?cad<?cd
En relation:
Reconnaissance approximative des langues non régulières par les automates finis
Ils font un travail sur la multiplication approximative et la vérification aléatoire, ce que je ne comprends pas complètement.
- math.SE: Comment comparer deux multiplications sans multiplier?
- cab=c
- Existe-t-il un algorithme de multiplication d'entiers non déterministes en temps linéaire? Voir http://compgroups.net/comp.theory/nondeterministic-linear-time-multiplication/1129399
Il existe des algorithmes bien connus pour multiplier les nombres à n bits avec quelque chose comme la complexité O (n log (n) log (log (n))). Et nous ne pouvons pas faire mieux que O (n) car au moins nous devons regarder l'ensemble des entrées. Ma question est: pouvons-nous réellement atteindre O (n) pour une classe appropriée d'algorithmes "non déterministes"?
Plus précisément, existe-t-il un algorithme qui peut accepter deux nombres binaires à n bits "a" et "b" et un nombre à 2n bits "c" et vous dire en temps O (n) si "a * b = c"? Sinon, existe-t-il une autre forme de certificat C (a, b, c) telle qu'un algorithme puisse l'utiliser pour tester le produit en temps linéaire? S'il n'est pas linéaire, le problème de tester le produit est-il au moins asymptotiquement plus facile que de le calculer? Tout résultat connu dans ce sens serait le bienvenu.
John.
―Johnh4717