Maxima der Diagonalen in einer spalten- und zeilenweise sortierten Matrix

7

Lassen {ai} und {bi} nicht abnehmende Folgen nicht negativer Ganzzahlen sein.

Wie schnell kann man finden

cj=max0i<j{ai+bji1}
für alle ?0jn1

Naiv dauert es Zeit, aber ich hoffe, dass Monotonie hier helfen kann.O(n2)

Es ist leicht zu beobachten, dass ebenfalls nicht abnimmt. Wenn wir die Matrix in der , dann ist es eine Matrix, die sowohl in Zeilen- als auch in Spaltenrichtung sortiert ist, und wir suchen nach dem maximalen Element in jeder Diagonale.{ci}MMi,j=ai+bj

Wenn es sich jedoch um eine beliebige spalten- und zeilenweise sortierte Matrix handelt, erfordert dieses Problem -Zeit.Ω(n2)

Beweis: Lassen Sie alle Zahlen unterhalb der Hauptdiagonale . Die Elemente in der ten Diagonale sind Zufallszahlen aus . Das Lesen eines Eintrags liefert keine Informationen für einen anderen Eintrag.k(k,k+1)

Bearbeiten: Dieses Problem ist viel schwieriger als ich erwartet hatte. Wir können dieses Problem als Faltungsproblem über das Semiring modellieren (nimm das Dual, suche nach min statt max) und es kann in gelöst werden Zeit nach einer Antwort von Ryan Williams auf mathoverflow . Es wird jedoch nicht die Information verwendet, dass die Sequenz nicht abnimmt.(min,+)O(n2logn)

Chao Xu
quelle

Antworten:

5

Gute Frage! "Distance Transforms of Sampled Functions" von Felzenszwalb und Huttenlocher zeigt, wie man dies in berechnet .O(nlgn)

"Halsketten, Faltungen und X + Y", Von Bremner et al. zeigt einen -Algorithmus für dieses Problem im realen RAM und einen Algorithmus im ungleichmäßigen linearen Entscheidungsbaummodell.O(n2lg2n(lglgn)3)O(nn)

jbapple
quelle
1
Ich sehe, dass mein Problem ein spezielles Problem der minimalen Faltung ist. Das Papier sagt jedoch nicht viel über den allgemeinen Fall aus. Es erfordert, dass eine der Funktionen konvex / konkav ist, um in Zeit zu berechnen . O(nlogn)
Chao Xu
Ich denke, der erste ist , die von Ihnen angegebene Grenze gilt für die Version. O(n2logn)(median,+)
Chao Xu
1
Siehe # 3 auf Seite 5.
jbapple
Aha! mein Fehler.
Chao Xu