Berechnungsaufwand von Algorithmen

9

Betrachten Sie das streng konvexe uneingeschränkte OptimierungsproblemLassen Sie x_ \ text {opt} seine einzigartige Minima bezeichnen und X_0 eine gegebene erste Annäherung sein x_ \ text {opt}. Wir werden einen Vektor x eine \ epsilon- nahe Lösung von \ mathcal {O} nennen, wenn \ begin {Gleichung} \ frac {|| x - x _ {\ text {opt}} || _2} {|| x_0 - x_ \ text {opt} || _2} \ leq \ epsilon. \ end {Gleichung}O:=minxRnf(x).x 0 x opt . x ϵ - O | | x - x opt | | 2xoptx0xopt.xϵO

||xxopt||2||x0xopt||2ϵ.

Angenommen, es gibt zwei iterative Algorithmen A1 und A2 , um eine ϵ nahe Lösung von O mit den folgenden Eigenschaften zu finden:

  1. Für jedes ϵ>0, der gesamte Rechenaufwand, dh der Aufwand, der pro Iteration × Gesamtzahl der Iterationen erforderlich ist, um eine ϵ nahe Lösung zu finden, für beide Algorithmen gleich.
  2. Die pro Iteration Aufwand für A1 ist O(n), sagen wir, während die von A2 ist O(n2).

Gibt es Situationen, in denen man einen Algorithmus dem anderen vorziehen würde? Warum?

Suresh
quelle

Antworten:

14

Es ist normalerweise sehr schwierig, wenn nicht unmöglich, eine parallele Version eines iterativen Algorithmus zu implementieren, der über Iterationen hinweg parallelisiert. Der Abschluss einer Iteration ist ein natürlicher Sequenzpunkt. Wenn ein Algorithmus weniger Iterationen, aber mehr Arbeit pro Iteration erfordert, ist es wahrscheinlicher, dass dieser Algorithmus effektiv parallel implementiert werden kann.

Ein Beispiel hierfür ist die lineare Programmierung, bei der die Methode der primär-dualen Barriere (innerer Punkt) selbst bei sehr großen Problemen normalerweise nur einige Dutzend Iterationen verwendet, die Arbeit pro Iteration jedoch recht umfangreich ist. Im Vergleich dazu erfordern verschiedene Versionen der Simplex-Methode normalerweise viel mehr Iterationen, aber die Arbeit pro Iteration ist geringer. In der Praxis haben parallele Implementierungen von Innenpunktverfahren eine weitaus bessere parallele Effizienz gezeigt als parallele Implementierungen des Simplex-Verfahrens.

Brian Borchers
quelle
7

Ich kann mir einige Möglichkeiten vorstellen:

Wenn beide Algorithmen den Fehler bei jeder Iteration monoton reduzieren, ist es möglicherweise einigen vorzuziehen, mehr und billigere Iterationen zu verwenden, da Sie mehr Auswahlmöglichkeiten haben, wann die Iteration beendet werden soll.

Wenn ist Arbeit und Zeit , sondern Speicher, könnten es vorziehen , Sie wenn groß ist. möglicherweise sogar groß genug, um auszuwählen, da die Speichernutzung Sie hier eher einschränkt.EIN1Ö(n)Ö(nk)EIN2kk=2EIN2

Dies gilt wahrscheinlich unabhängig davon, ob es sich um eine Optimierung oder eine andere Klasse von iterativen Problemen handelt.

Bill Barth
quelle
Ich stimme Ihnen in Bezug auf Platzbeschränkungen zu. Ich habe mich gefragt, ob man einen Fall nur aufgrund der zeitlichen Komplexität machen kann.
Suresh