Meet-in-the-middle
Meet-in-the-middle
- Die Art und Weise, Lösungen zu optimieren, die das ursprüngliche Ziel durch zweieinhalb zu brechen, um jedes, unabhängig und dann zu erreichen, die Basislinie, durch die Kombination der Lösungen.
Das ergibt Sinn.
meet-in-the-middle
wenn zwei Bedingungen erfüllt sind.
(1) Die Zeit, die benötigt wird, um die halbe Herausforderung zu erfüllen, ist asymptotisch weniger als die Zeit, die erforderlich ist, um die Aufgabe zu erfüllen.
(2) Um das Ziel der Hälfte zu erreichen, können Lösungen zum ursprünglichen Ziel erhalten werden, mit asymptotisch schneller als einfach das Ziel zu erreichen.
Beispiel
Haben vier ganze Zahlen.
A
♪
B
♪
C
und
D
♪ Es ist erforderlich, aus jeder Masse eine Zahl auszuwählen, so daß die Summe dieser Zahlen Null ist. Sie können eine naive Lösung verwenden, das ist, nur um alle Optionen zu nehmen. Es wird für dich funktionieren.
О(n4)
♪
Aber wir können es benutzen.
meet-in-the-middle
♪
Lassen Sie uns bemerken, dass
a + b + c + d = 0
äquivalent zu etwas
(a + b) = -(c + d)
♪
Wir teilen die Aufgabe um zwei Hälfte, d.h. in der ersten Hälfte verwenden wir nur die Massen.
A
und
B
Und in der zweiten Hälfte,
C
und
D
♪
Wir nehmen alle Optionen.
(a + b)
In der ersten Hälfte behalten wir alle Werte in der Hash-Tabelle.
unordered_map
♪
HashMap
oder so.). Es funktioniert für Sie.
O(n2)
♪
Jetzt werden wir alle möglichen Optionen wieder einholen.
(c + d)
In der zweiten Hälfte. Wenn wir eine bestimmte Option betrachten, werden wir überprüfen, ob es einen Wert in der hosh tablin mit dem aktuellen Betrag gegenüber dem Zeichen verbunden ist (dann haben wir zwei umgekehrte Zahlen gefunden, die null geben). Dieser Teil funktioniert auch für
O(n2)
♪
Wir haben hier keine eigene Phase.
AntwortenUnd in einem taten wir es, wie wir uns für jede Hälfte entschieden haben. Die Situation wird in den meisten Aufgaben ähnlich sein.
Wir haben endlich eine Entscheidung.
O(n2)
Verwendung
meet-in-the-middle
♪
Es ist zu beachten, dass die meisten der Zeit
meet-in-the-middle
Bewerben Sie sich auf die Optimierung von exponentiellen Lösungen, die die Arbeitszeit erheblich beeinflussen.