Gegeben und ,
Meine Fragen sind:
Gegeben
- Angenommen, wir können in , gibt es eine Möglichkeit, zu bestimmen, ohne die Multiplikationen (oder Divisionen), und . Oder gibt es einen Beweis dafür, dass es keinen Weg gibt?
- Gibt es eine schnellere Methode, um rationale Zahlen zu vergleichen, als die Nenner zu multiplizieren?
algorithms
integers
Realz Slaw
quelle
quelle
Antworten:
Meine aktuelle Forschung:
Erster Versuch mit einigen allgemeinen Regeln
Man kann versuchen, einige allgemeine Regeln für die Lösung des rationalen Vergleichs aufzustellen:
Angenommen, alle positiven :a,b,c,d
Eine andere Regel:
Ich halte diese Regel für logisch, denn je größer der Nenner, desto kleiner die Zahl, und je größer der Zähler, desto größer die Zahl. Wenn also die linke Seite einen größeren Nennerundeinen kleineren Zähler hat, ist die linke Seite kleiner.
Ab jetzt nehmen wir an, dass , da wir es sonst entweder mit den obigen Regeln lösen oder die Frage in c umkehren könnena<c∧b<d , und wir haben sowieso diese Bedingung.cd<?ab
Regeln :
Mit dieser Regel können Sie den linken Zähler und Nenner vom rechten Zähler und Nenner für ein gleichwertiges Problem abziehen.
Und natürlich gibt es Skalierung:
Mithilfe dieser Regeln können Sie mit Dingen herumspielen, sie wiederholt in intelligenten Kombinationen anwenden, aber es gibt Fälle, in denen Zahlen nahe beieinander liegen und pathologisch sind.
Durch Anwenden der vorherigen Regeln können Sie all diese Probleme auf Folgendes reduzieren: a
Manchmal kann man das jetzt direkt lösen, manchmal nicht. Die pathologischen Fälle sind in der Regel in der Form:
Dann drehen Sie es um und erhalten dasselbe Ergebnis, nur mit einem bisschen weniger. Jede Anwendung der Regeln + Flip reduziert sie um eine Ziffer / Bit. AFAICT, Sie können es nicht schnell lösen, es sei denn, Sie wenden die Regeln mal (einmal für jede Ziffer / Bit) im pathologischen Fall an und negieren ihren scheinbaren Vorteil.O(n)
Offenes Problem?
Mir wurde klar, dass dieses Problem schwieriger zu sein scheint als einige derzeit offene Probleme.
Ein noch schwächeres Problem besteht darin, festzustellen:
Und doch schwächer:
Dies ist das offene Problem der Überprüfung der Multiplikation . Es ist schwächer, denn wenn du einen Weg hättest, zu bestimmen ? < b c , dann können Sie leicht ein d bestimmen ? = b c , durch zweimaliges Testen mit dem Algorithmus, a d ? < b c , b c ? < a d . Wenn beides zutrifft, wissen Sie, dass a d ≠ b c .ad<?bc ad=?bc ad<?bc bc<?ad ad≠bc
Nun, war zumindest 1986 ein offenes Problem:ad=?c
Sehr interessanterweise erwähnte er auch die Frage der Überprüfung der Matrixmultiplikation :
Dies ist seitdem gelöst worden, und es ist tatsächlich möglich, in -Zeit mit einem zufälligen Algorithmus zu verifizieren (wobei n × n die Größe der Eingabematrizen ist, so dass es sich im Grunde genommen um eine lineare Zeit in der Größe der Eingabe handelt ). Ich frage mich, ob es möglich ist, die Ganzzahlmultiplikation auf die Matrixmultiplikation zu reduzieren, insbesondere aufgrund ihrer Ähnlichkeiten, da die Ganzzahlmultiplikation von Karatsuba Ähnlichkeiten mit den nachfolgenden Matrixmultiplikationsalgorithmen aufweist. Dann können wir vielleicht auf irgendeine Weise den Matrixmultiplikations-Verifizierungsalgorithmus für die ganzzahlige Multiplikation nutzen.O(n2) n×n
Wie auch immer, da dies meines Wissens immer noch ein offenes Problem ist, das stärkere Problem ist sicherlich offen. Ich bin gespannt, ob die Lösung des Problems der Überprüfung der Gleichheit einen Einfluss auf das Problem der Überprüfung der Vergleichsungleichheit hat.ad<?cd
Eine geringfügige Abweichung von unserem Problem wäre, wenn die Brüche garantiert auf die niedrigsten Werte reduziert werden; In diesem Fall ist es leicht zu erkennen, ob . Kann dies einen Einfluss auf die Vergleichsprüfung für reduzierte Brüche haben?ab=?cd
Eine noch subtilere Frage: Was wäre, wenn wir einen Weg hätten, zu testen ? < c , würde sich dies auf das Testen eines d erstrecken ? = c ? Ich verstehe nicht, wie Sie diese "beiden Möglichkeiten" nutzen können, wie wir es für ein d getan haben ? < c d .ad<?c ad=?c ad<?cd
Verbunden:
Ungefähre Erkennung von nicht regulären Sprachen durch endliche Automaten
Sie arbeiten an der ungefähren Multiplikation und der randomisierten Verifikation, die ich nicht vollständig verstehe.
quelle
(Wie kann man das präzisieren?) Der Abstand vom Quader zur Oberfläche ist im Allgemeinen unbegrenzt, und daher kann die Oberfläche vom Entscheider nicht berechnet werden
quelle
Gute Frage. Würden Sie ein gewisses Maß an Vertrauen akzeptieren?
Vielleicht eine ungefähre Aufteilung machen. Dh
Um die ungefähren Grenzquotienten von a / b zu berechnen, verschieben Sie a nach rechts um ceil (log_2 (b)) und auch um floor (log_2 (b)). Dann wissen wir, dass der genaue Quotient zwischen diesen beiden Werten liegt.
Abhängig von der relativen Größe der vier Ganzzahlen kann man dann bestimmte Fälle ausschließen und 100% iges Vertrauen erhalten.
Man kann die Prozedur für radix anders als 2 wiederholen und durch eine Abfolge solcher Operationen das Vertrauensniveau erhöhen, bis ein Wechsel des Vorzeichens / Gleichstandes irgendwie beobachtet wird?
Das ist meine erste Skizze einer Methode.
quelle
Sicher.
Idee: Vergleichen Sie die Dezimalerweiterung nach und nach.
Das einzig schlimme ist, dass wir zuerst die Gleichheit ausschließen müssen, da wir sonst möglicherweise nicht kündigen.
Es ist nützlich, zuerst die ganzzahligen Teile zu vergleichen, da dies einfach ist.
Bedenken Sie:
Notiere dass der
do-while
Schleife beendet werden muss, da die Zahlen ungleich sind. Wir wissen jedoch nicht, wie lange es dauert; Wenn die Zahlen sehr nahe sind, könnte es eine Weile dauern.Natürlich gibt es keine teuren Multiplikationen; Wir müssen nur die Nominatoren mit multiplizieren10 . Insbesondere haben wir das Rechnen vermieden
a d und c b ausdrücklich.
Ist das schnell? Wahrscheinlich nicht. Es gibt viele ganzzahlige Divisionen, Module und
gdc
s zu berechnen, und wir haben eine Schleife, deren Anzahl der Iterationen umgekehrt proportional zum Abstand zwischen den Zahlen ist, die wir vergleichen.Die Hilfsmethode:
quelle