Treten Funktionen mit langsamerem Wachstum als inverse Ackermann-Funktionen im Laufzeitbereich auf?


20

Einige komplizierte Algorithmen ( Union-Find ) haben die nahezu konstante inverse Ackermann-Funktion, die in der asymptotischen Zeitkomplexität auftritt, und sind im ungünstigsten Fall zeitoptimal, wenn der nahezu konstante inverse Ackermann-Term ignoriert wird.

Gibt es Beispiele für bekannte Algorithmen mit Laufzeiten, bei denen Funktionen wesentlich langsamer wachsen als inverse Ackermann-Funktionen (z. B. Inverse von Funktionen, die bei polynomiellen oder exponentiellen Transformationen usw. nicht mit Ackermann äquivalent sind), die die bekannteste Worst-Case-Zeit ergeben? Komplexität zur Lösung des zugrunde liegenden Problems?


2
Zeitalgorithmen? Sie fragen nach einem bekannten Problem, dessen bekanntester Algorithmus ω ( 1 ) und o ( α ( n ) ) ist ? Zuerst müssen Sie eine Funktion finden, die "wesentlich schneller" wächst als A ( n ) , wie TREE ( n ) , und dann ihre Inverse nehmen und dann ein Problem finden, das zu ihr passt! O(1)ω(1)o(α(n))A(n)(n)
Pål GD

1
gibt es willkürlich erfundenen Algorithmen der eingebauten aus Zeithierarchie thm
VZN

2
@vzn: Jedes ist nicht zeitkonstruierbar (einschließlich α ( n ) ). Der Zeithierarchiesatz kann hier also nicht verwendet werden. f(n)=o(n)α(n)
mdxn

@mdx froh, dass jemand darauf hingewiesen hat, nur um dich zu testen, zwinkere. Ja, in letzter Zeit haben wir gedacht, dass es eine Verallgemeinerung der Zeithierarchie für sub- -Funktionen geben könnte. Die o ( n ) -Grenze liegt zwar darin, dass ein zeitkonstruierbares TM alle Eingaben lesen muss, aber sagen wir, dass diese anderen Algorithmen, z. Probleme beim Visualisieren! o(n)o(n)o(n)
Ich bin der

1
@vzn: Das OP muss wirklich klarstellen, welches Berechnungsmodell es im Auge hat. und LH müssen für TMs mit wahlfreiem Zugriff (oder Äquivalente) definiert werden. Bei der Angabe unserer Mechanik können wir versehentlich zu viel Leistung hinzufügen. Dies kann sogar in dem Maße der Fall sein, in dem der Begriff der Rechenkomplexität nicht fruchtbar ist. Grundsätzlich müssten wir unseren Begriff der Zeitkomplexität (wie es die amortisierte Laufzeit tut) mit dem Risiko ändern, dass eine solche Definition sehr kompliziert wird (dasselbe gilt für das Berechnungsmodell). DLOGTIMELH
mdxn

Antworten:


8

Seth Pettie hat einen Algorithmus zur Berechnung der Empfindlichkeit eines minimalen Spannbaums in der Zeit , der einen Algorithmus von Tarjan verbessert, der dieselbe in der Zeit O ( m α ( m , n) berechnet ) ) . (Vergleichen Sie dies mit Chazelles O ( m α ( m , n ) ) - Algorithmus zur Berechnung des minimalen SpannbaumsO(mlogα(m,n))O(mα(m,n))O(mα(m,n)) selbst.) Das Empfindlichkeitsproblem verlangt, für ein gegebenes Diagramm und einen gegebenen minimalen Spannbaum zu berechnen, um wie viel sich jedes Kantengewicht ändern kann, ohne den minimalen Spannbaum zu ändern.

(Vielen Dank an Tsvi Kopelowitz für diesen Hinweis.)


1
Ich weiß nicht, ob Log Inverse Ackermann "grundsätzlich langsamer" ist als Inverse Ackermann, aber ich fand diese Art der Laufzeit überraschend.
Yuval Filmus


-1

When Alan Turing discovered the computer, there used to be several models for the computer proposed. Turing proved that some (3) of these models could simulate each other AND compute the Ackermann function, whereas the other models could simulate each other but not the Ackermann function (so they could not simulate the 3). Therefore, these 3 models (Turing Machine, von Neumann and one I don't know), were chosen as the architecture for a computer. This does not mean the Ackermann function is the limit of the computer, but I suppose it's hard science. I'm not aware of any computable functions that grow faster than the Ackermann function.

Nun, ich glaube nicht, dass es ein praktisches Problem gibt, das zu Ihrer Frage passt, aber vielleicht können wir eines konstruieren. Wir müssen die Eingabe jedoch einschränken. Da wir O (n) nicht verwenden können, können wir nicht die gesamte Eingabe überprüfen. Tatsächlich können wir nicht einmal die Länge der Eingabe überprüfen, da dies O (log n) wäre. Als ersten Parameter benötigen wir also eine Darstellung der Länge des restlichen Eingangs, zum Beispiel c, so dass Ackermann (c) die Länge des Eingangs ist. Da dies auch nicht geeignet ist, fordern wir als ersten Wert in unserer Eingabe den Parameter c an, so dass bb (c) ungefähr die Länge der Eingabe ist, wobei bb die Besetztbiberfunktion ist. Diese Funktion ist nicht ausführbar, aber bb (c) existiert auf jeden Fall. Dann lautet der Algorithmus wie folgt:

for (int i=0; i<c; i++) {
    if (input[i] == null) {
        return false;
    }
}
return true;

Mit dem Algorithmus soll überprüft werden, ob c die Inverse von bb ist und ob die Eingabelänge größer als bb (c) ist.

Wenn es eine berechenbare Funktion gibt, die schneller wächst als die Ackermann-Funktion, können wir sie meines Erachtens verwenden, um einen Algorithmus zu erstellen, der Ihre Frage bei jeder Eingabe beantwortet.


Es gibt definitiv Funktionen, die schneller wachsen als die Ackermann-Funktion (TREE (n)). Der knifflige Teil der Frage besteht darin, einen Algorithmus mit einer Laufzeitgrenze des Inversen dieser Funktion zu konstruieren. Eine solche Maschine hat nicht genug Zeit, um die Umkehrung der Funktion zu berechnen, so dass die Konstruktion eines TM, das dies erreicht, nicht einfach ist.
Mdxn
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.